Add logic to the functional test's Cgroup class to
make it analogous to libcgroup's struct cgroup.
By adding  __init__(), __str__(), and __eq__() methods,
the cgroup class can very closely mirror struct cgroup.

Signed-off-by: Tom Hromatka <tom.hroma...@oracle.com>
---
 ftests/cgroup.py | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/ftests/cgroup.py b/ftests/cgroup.py
index 146ced711a46..9e1d46c9b955 100644
--- a/ftests/cgroup.py
+++ b/ftests/cgroup.py
@@ -20,9 +20,11 @@
 #
 
 import consts
+from controller import Controller
 from enum import Enum
 import os
 from run import Run
+import utils
 
 class CgroupVersion(Enum):
     CGROUP_UNK = 0
@@ -50,6 +52,32 @@ class CgroupVersion(Enum):
         return CgroupVersion.CGROUP_UNK
 
 class Cgroup(object):
+    # This class is analogous to libcgroup's struct cgroup
+    def __init__(self, name):
+        self.name = name
+        # self.controllers maps to
+        # struct cgroup_controller *controller[CG_CONTROLLER_MAX];
+        self.controllers = dict()
+
+    def __str__(self):
+        out_str = "Cgroup {}\n".format(self.name)
+        for ctrl_key in self.controllers:
+            out_str += utils.indent(str(self.controllers[ctrl_key]), 4)
+
+        return out_str
+
+    def __eq__(self, other):
+        if not isinstance(other, Cgroup):
+            return False
+
+        if not self.name == other.name:
+            return False
+
+        if self.controllers != other.controllers:
+            return False
+
+        return True
+
     @staticmethod
     def build_cmd_path(in_container, cmd):
         if in_container:
-- 
2.25.4



_______________________________________________
Libcg-devel mailing list
Libcg-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to