This is an automated email from the ASF dual-hosted git repository.

bmahler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git


The following commit(s) were added to refs/heads/master by this push:
     new 67fbd1436 [cgroups2] Fix ROOT_CGROUPS_AutoLoadSubsystems test.
67fbd1436 is described below

commit 67fbd1436838dcbb77e64a2c5423c33e8ea00ccb
Author: Jason Zhou <[email protected]>
AuthorDate: Mon Aug 12 16:56:11 2024 -0400

    [cgroups2] Fix ROOT_CGROUPS_AutoLoadSubsystems test.
    
    Currently, the ROOT_CGROUPS_AutoLoadSubsystems test is failing because
    it is checking for hierarchies for subsystems enabled under
    'cgroups/all'. In cgroups2 we cannot perform this check because of the
    unified hierarchy.
    
    Hence we skip this hierarchy check and instead check that all available
    cgroups2 controllers are enabled by reading cgroup.controllers and
    cgroup.subtree_control.
    
    Review: https://reviews.apache.org/r/75163/
---
 src/tests/containerizer/cgroups_isolator_tests.cpp | 76 ++++++++++++++--------
 1 file changed, 49 insertions(+), 27 deletions(-)

diff --git a/src/tests/containerizer/cgroups_isolator_tests.cpp 
b/src/tests/containerizer/cgroups_isolator_tests.cpp
index f2d6d2741..333b69d77 100644
--- a/src/tests/containerizer/cgroups_isolator_tests.cpp
+++ b/src/tests/containerizer/cgroups_isolator_tests.cpp
@@ -64,6 +64,12 @@ using mesos::internal::slave::CPU_CFS_PERIOD;
 using mesos::internal::slave::DEFAULT_EXECUTOR_CPUS;
 using mesos::internal::slave::DEFAULT_EXECUTOR_MEM;
 using mesos::internal::slave::CGROUPS2_CPU_WEIGHT_PER_CPU_REVOCABLE;
+using mesos::internal::slave::CGROUPS2_CONTROLLER_CPU_NAME;
+using mesos::internal::slave::CGROUPS2_CONTROLLER_MEMORY_NAME;
+using mesos::internal::slave::CGROUPS2_CONTROLLER_IO_NAME;
+using mesos::internal::slave::CGROUPS2_CONTROLLER_HUGETLB_NAME;
+using mesos::internal::slave::CGROUPS2_CONTROLLER_CPUSET_NAME;
+using mesos::internal::slave::CGROUPS2_CONTROLLER_PIDS_NAME;
 
 using mesos::internal::slave::Containerizer;
 using mesos::internal::slave::Fetcher;
@@ -2787,37 +2793,53 @@ TEST_F(CgroupsIsolatorTest, 
ROOT_CGROUPS_AutoLoadSubsystems)
   ASSERT_EQ(1u, containers->size());
 
   const ContainerID& containerId = *(containers->begin());
+  string cgroup = path::join(flags.cgroups_root, containerId.value());
 
-  Try<set<string>> enabledSubsystems = cgroups::subsystems();
-  ASSERT_SOME(enabledSubsystems);
+  if (cgroupsV2()) {
+    // We skip core, perf_event, and hugetlb as their values cannot be written
+    // into the cgroups.subtree_control files.
+    set<string> expectedControllers = {
+      CGROUPS2_CONTROLLER_CPU_NAME,
+      CGROUPS2_CONTROLLER_MEMORY_NAME,
+      CGROUPS2_CONTROLLER_IO_NAME,
+      CGROUPS2_CONTROLLER_HUGETLB_NAME,
+      CGROUPS2_CONTROLLER_CPUSET_NAME,
+      CGROUPS2_CONTROLLER_PIDS_NAME
+    };
+
+    Try<set<string>> enabledControllers = 
cgroups2::controllers::enabled(cgroup);
+    ASSERT_SOME(enabledControllers);
+    ASSERT_EQ(expectedControllers, *enabledControllers);
+  } else {
+    Try<set<string>> enabledSubsystems = cgroups::subsystems();
+    ASSERT_SOME(enabledSubsystems);
+
+    set<string> supportedSubsystems = {
+      CGROUP_SUBSYSTEM_BLKIO_NAME,
+      CGROUP_SUBSYSTEM_CPU_NAME,
+      CGROUP_SUBSYSTEM_CPUACCT_NAME,
+      CGROUP_SUBSYSTEM_CPUSET_NAME,
+      CGROUP_SUBSYSTEM_DEVICES_NAME,
+      CGROUP_SUBSYSTEM_HUGETLB_NAME,
+      CGROUP_SUBSYSTEM_MEMORY_NAME,
+      CGROUP_SUBSYSTEM_NET_CLS_NAME,
+      CGROUP_SUBSYSTEM_NET_PRIO_NAME,
+      CGROUP_SUBSYSTEM_PERF_EVENT_NAME,
+      CGROUP_SUBSYSTEM_PIDS_NAME,
+    };
+
+    // Check cgroups for all the local enabled subsystems
+    // have been created for the container.
+    foreach (const string& subsystem, enabledSubsystems.get()) {
+      if (supportedSubsystems.count(subsystem) == 0) {
+        continue;
+      }
 
-  set<string> supportedSubsystems = {
-    CGROUP_SUBSYSTEM_BLKIO_NAME,
-    CGROUP_SUBSYSTEM_CPU_NAME,
-    CGROUP_SUBSYSTEM_CPUACCT_NAME,
-    CGROUP_SUBSYSTEM_CPUSET_NAME,
-    CGROUP_SUBSYSTEM_DEVICES_NAME,
-    CGROUP_SUBSYSTEM_HUGETLB_NAME,
-    CGROUP_SUBSYSTEM_MEMORY_NAME,
-    CGROUP_SUBSYSTEM_NET_CLS_NAME,
-    CGROUP_SUBSYSTEM_NET_PRIO_NAME,
-    CGROUP_SUBSYSTEM_PERF_EVENT_NAME,
-    CGROUP_SUBSYSTEM_PIDS_NAME,
-  };
+      Result<string> hierarchy = cgroups::hierarchy(subsystem);
+      ASSERT_SOME(hierarchy);
 
-  // Check cgroups for all the local enabled subsystems
-  // have been created for the container.
-  foreach (const string& subsystem, enabledSubsystems.get()) {
-    if (supportedSubsystems.count(subsystem) == 0) {
-      continue;
+      ASSERT_TRUE(os::exists(path::join(hierarchy.get(), cgroup)));
     }
-
-    Result<string> hierarchy = cgroups::hierarchy(subsystem);
-    ASSERT_SOME(hierarchy);
-
-    string cgroup = path::join(flags.cgroups_root, containerId.value());
-
-    ASSERT_TRUE(os::exists(path::join(hierarchy.get(), cgroup)));
   }
 
   driver.stop();

Reply via email to