]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
ftests: Run a cgv1 process in the recursive cgdelete test
authorTom Hromatka <tom.hromatka@oracle.com>
Wed, 28 Oct 2020 14:43:19 +0000 (14:43 +0000)
committerTom Hromatka <tom.hromatka@oracle.com>
Mon, 2 Nov 2020 22:00:33 +0000 (15:00 -0700)
For cgroup v1, run a process in the child cgroup during
the recursive cgdelete tests - 002-cgdelete-recursive_delete.py.
In cgroup v1, cgdelete should migrate the process to its
parent cgroup.

If the test is being run on a cgroup v2 system, don't
create the process.  Cgroup v2 doesn't support processes
running in a non-leaf cgroup, so cgdelete's recursive
command doesn't really make sense.

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
ftests/002-cgdelete-recursive_delete.py

index 4f6123ae15bf99971daea82e8bec336a0e9da48c..755b87a6f626fdbe102acf19eb62d8f1de2c5c81 100755 (executable)
@@ -24,6 +24,7 @@ from cgroup import Cgroup
 import consts
 import ftests
 import os
+from process import Process
 import sys
 
 CONTROLLER = 'cpuset'
@@ -40,6 +41,17 @@ def setup(config):
     Cgroup.create(config, CONTROLLER, os.path.join(PARENT, CHILD))
     Cgroup.create(config, CONTROLLER, os.path.join(PARENT, CHILD, GRANDCHILD))
 
+    version = Cgroup.version(CONTROLLER)
+    if version == Cgroup.CGROUP_V1:
+        # cgdelete in a cgroup v1 controller should be able to move a process
+        # from a child cgroup to its parent.
+        #
+        # Moving a process from a child cgroup to its parent isn't (easily)
+        # supported in cgroup v2 because of cgroup v2's restriction that
+        # processes only be located in leaf cgroups
+        Process.create_process_in_cgroup(config, CONTROLLER,
+                                         os.path.join(PARENT, CHILD, GRANDCHILD))
+
 def test(config):
     Cgroup.delete(config, CONTROLLER, PARENT, recursive=True)