This is an automated email from the ASF dual-hosted git repository. abudnik pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 96291c0e157e0d3c125b75868186dc4661986c96 Author: Andrei Budnik <abud...@apache.org> AuthorDate: Tue Mar 3 14:53:25 2020 +0100 Updated nested mesos containerizer tests to support `share_cgroups`. Parametrized some `NestedMesosContainerizerTest` tests on whether we are launching nested containers with `share_cgroups=false` or not. Previously, all nested containers shared cgroups with their parent by default. Now, since we've added support for nested containers with their own cgroups, we need to verify that a nested container with `share_cgroups=false` can be successfully launched and it does not lead to problems during the recovery of Mesos containerizer. Review: https://reviews.apache.org/r/72189 --- .../nested_mesos_containerizer_tests.cpp | 49 ++++++++++++++++++---- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/src/tests/containerizer/nested_mesos_containerizer_tests.cpp b/src/tests/containerizer/nested_mesos_containerizer_tests.cpp index c6f96e6..13c6d28 100644 --- a/src/tests/containerizer/nested_mesos_containerizer_tests.cpp +++ b/src/tests/containerizer/nested_mesos_containerizer_tests.cpp @@ -87,7 +87,8 @@ namespace internal { namespace tests { class NestedMesosContainerizerTest - : public ContainerizerTest<slave::MesosContainerizer> + : public ContainerizerTest<slave::MesosContainerizer>, + public ::testing::WithParamInterface<bool> { protected: Try<SlaveState> createSlaveState( @@ -135,9 +136,39 @@ protected: return slaveState; } + + template <typename... Args> + mesos::slave::ContainerConfig createNestedContainerConfig( + const string& resources, Args... args) const + { + mesos::slave::ContainerConfig containerConfig = + createContainerConfig(std::forward<Args>(args)...); + + const bool shareCgroups = GetParam(); + + ContainerInfo* container = containerConfig.mutable_container_info(); + container->set_type(ContainerInfo::MESOS); + container->mutable_linux_info()->set_share_cgroups(shareCgroups); + + if (!shareCgroups) { + containerConfig.mutable_resources()->CopyFrom( + Resources::parse(resources).get()); + } + + return containerConfig; + } }; +// Some nested containerizer tests are parameterized by the boolean +// `shared_cgroups` flag that specifies whether cgroups are shared +// between nested containers and their parent container. +INSTANTIATE_TEST_CASE_P( + NestedContainerShareCgroups, + NestedMesosContainerizerTest, + ::testing::Values(true, false)); + + TEST_F(NestedMesosContainerizerTest, NestedContainerID) { ContainerID id1; @@ -173,7 +204,7 @@ TEST_F(NestedMesosContainerizerTest, NestedContainerID) } -TEST_F(NestedMesosContainerizerTest, ROOT_CGROUPS_LaunchNested) +TEST_P(NestedMesosContainerizerTest, ROOT_CGROUPS_LaunchNested) { slave::Flags flags = CreateSlaveFlags(); flags.launcher = "linux"; @@ -219,7 +250,7 @@ TEST_F(NestedMesosContainerizerTest, ROOT_CGROUPS_LaunchNested) launch = containerizer->launch( nestedContainerId, - createContainerConfig(createCommandInfo("exit 42")), + createNestedContainerConfig("cpus:0.1", createCommandInfo("exit 42")), map<string, string>(), None()); @@ -1600,7 +1631,7 @@ TEST_F(NestedMesosContainerizerTest, ROOT_CGROUPS_ParentSigterm) } -TEST_F(NestedMesosContainerizerTest, ROOT_CGROUPS_RecoverNested) +TEST_P(NestedMesosContainerizerTest, ROOT_CGROUPS_RecoverNested) { slave::Flags flags = CreateSlaveFlags(); flags.launcher = "linux"; @@ -1659,7 +1690,7 @@ TEST_F(NestedMesosContainerizerTest, ROOT_CGROUPS_RecoverNested) launch = containerizer->launch( nestedContainerId, - createContainerConfig(createCommandInfo("sleep 1000")), + createNestedContainerConfig("cpus:0.1", createCommandInfo("sleep 1000")), map<string, string>(), None()); @@ -1740,7 +1771,7 @@ TEST_F(NestedMesosContainerizerTest, ROOT_CGROUPS_RecoverNested) // This test verifies that the agent could recover if the agent // metadata is empty but container runtime dir is not cleaned // up. This is a regression test for MESOS-8416. -TEST_F(NestedMesosContainerizerTest, +TEST_P(NestedMesosContainerizerTest, ROOT_CGROUPS_RecoverNestedWithoutSlaveState) { slave::Flags flags = CreateSlaveFlags(); @@ -1798,7 +1829,7 @@ TEST_F(NestedMesosContainerizerTest, launch = containerizer->launch( nestedContainerId, - createContainerConfig(createCommandInfo("sleep 1000")), + createNestedContainerConfig("cpus:0.1", createCommandInfo("sleep 1000")), map<string, string>(), None()); @@ -1844,7 +1875,7 @@ TEST_F(NestedMesosContainerizerTest, } -TEST_F(NestedMesosContainerizerTest, ROOT_CGROUPS_RecoverNestedWithoutConfig) +TEST_P(NestedMesosContainerizerTest, ROOT_CGROUPS_RecoverNestedWithoutConfig) { slave::Flags flags = CreateSlaveFlags(); flags.launcher = "linux"; @@ -1903,7 +1934,7 @@ TEST_F(NestedMesosContainerizerTest, ROOT_CGROUPS_RecoverNestedWithoutConfig) launch = containerizer->launch( nestedContainerId, - createContainerConfig(createCommandInfo("sleep 1000")), + createNestedContainerConfig("cpus:0.1", createCommandInfo("sleep 1000")), map<string, string>(), None());