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.hroma...@oracle.com>
---
 ftests/002-cgdelete-recursive_delete.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/ftests/002-cgdelete-recursive_delete.py 
b/ftests/002-cgdelete-recursive_delete.py
index 4f6123ae15bf..755b87a6f626 100755
--- a/ftests/002-cgdelete-recursive_delete.py
+++ b/ftests/002-cgdelete-recursive_delete.py
@@ -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)
 
-- 
2.25.4



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

Reply via email to