Repository: mesos Updated Branches: refs/heads/master a0d201b71 -> 6c6473feb
Disallowed multiple cgroups base hierarchies in tests. Review: https://reviews.apache.org/r/32452 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/6c6473fe Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/6c6473fe Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/6c6473fe Branch: refs/heads/master Commit: 6c6473febac40be1e01c9ab005cca20ad2a48e18 Parents: a0d201b Author: Jie Yu <[email protected]> Authored: Tue Mar 24 12:42:20 2015 -0700 Committer: Jie Yu <[email protected]> Committed: Tue Mar 24 17:12:14 2015 -0700 ---------------------------------------------------------------------- src/tests/mesos.cpp | 42 +++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/6c6473fe/src/tests/mesos.cpp ---------------------------------------------------------------------- diff --git a/src/tests/mesos.cpp b/src/tests/mesos.cpp index 11e8833..dc2a906 100644 --- a/src/tests/mesos.cpp +++ b/src/tests/mesos.cpp @@ -538,27 +538,43 @@ void ContainerizerTest<slave::MesosContainerizer>::SetUp() EXPECT_SOME(user); if (cgroups::enabled() && user.get() == "root") { + // Determine the base hierarchy. foreach (const string& subsystem, subsystems) { - // Establish the base hierarchy if this is the first subsystem checked. - if (baseHierarchy.empty()) { - Result<string> hierarchy = cgroups::hierarchy(subsystem); - ASSERT_FALSE(hierarchy.isError()); + Result<string> hierarchy = cgroups::hierarchy(subsystem); + ASSERT_FALSE(hierarchy.isError()); - if (hierarchy.isNone()) { - baseHierarchy = TEST_CGROUPS_HIERARCHY; + if (hierarchy.isSome()) { + const string& _baseHierarchy = strings::remove( + hierarchy.get(), + subsystem, + strings::SUFFIX); + + if (baseHierarchy.empty()) { + baseHierarchy = _baseHierarchy; } else { - // Strip the subsystem to get the base hierarchy. - baseHierarchy = strings::remove( - hierarchy.get(), - subsystem, - strings::SUFFIX); + ASSERT_EQ(baseHierarchy, _baseHierarchy) + << "-------------------------------------------------------------\n" + << "Multiple cgroups base hierarchies detected:\n" + << " '" << baseHierarchy << "'\n" + << " '" << _baseHierarchy << "'\n" + << "Mesos does not support multiple cgroups base hierarchies.\n" + << "Please unmount the corresponding (or all) subsystems.\n" + << "-------------------------------------------------------------"; } } + } + + if (baseHierarchy.empty()) { + baseHierarchy = TEST_CGROUPS_HIERARCHY; + } + + // Mount the subsystem if necessary. + foreach (const string& subsystem, subsystems) { + const string& hierarchy = path::join(baseHierarchy, subsystem); - // Mount the subsystem if necessary. - string hierarchy = path::join(baseHierarchy, subsystem); Try<bool> mounted = cgroups::mounted(hierarchy, subsystem); ASSERT_SOME(mounted); + if (!mounted.get()) { ASSERT_SOME(cgroups::mount(hierarchy, subsystem)) << "-------------------------------------------------------------\n"
