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());
 

Reply via email to