[CRIU] [PATCH] zdtm: cleanup zdtmtst and zdtmtst.defaultroot cgroups after finishing test
Pavel Tikhomirov
ptikhomirov at virtuozzo.com
Tue Aug 7 18:48:30 MSK 2018
After running criu test, docker on the node becomes unusable, as it is
confused by our leftover cgroups. Surely docker should be fixed to
ignore custom cgroups (https://github.com/moby/moby/issues/37601), but
we should not leave them after test also.
Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
---
test/zdtm.py | 15 +++++++++++++++
test/zdtm_umount_cgroups | 20 ++++++++++++++++++++
2 files changed, 35 insertions(+)
create mode 100755 test/zdtm_umount_cgroups
diff --git a/test/zdtm.py b/test/zdtm.py
index c0ea65b2e..f299d4200 100755
--- a/test/zdtm.py
+++ b/test/zdtm.py
@@ -569,6 +569,10 @@ flavors_codes = dict(zip(range(len(flavors)), sorted(flavors.keys())))
subprocess.check_call(["make", "-C", "zdtm/"])
subprocess.check_call(["flock", "zdtm_mount_cgroups.lock", "./zdtm_mount_cgroups"])
+ @staticmethod
+ def cleanup():
+ subprocess.check_call(["flock", "zdtm_mount_cgroups.lock", "./zdtm_umount_cgroups"])
+
class inhfd_test:
def __init__(self, name, desc, flavor, freezer):
@@ -674,6 +678,10 @@ flavors_codes = dict(zip(range(len(flavors)), sorted(flavors.keys())))
def available():
pass
+ @staticmethod
+ def cleanup():
+ pass
+
class groups_test(zdtm_test):
def __init__(self, name, desc, flavor, freezer):
@@ -1168,6 +1176,10 @@ join_ns_file = '/run/netns/zdtm_netns'
print("CRIU binary not found at %s" % opts['criu_bin'])
sys.exit(1)
+ @staticmethod
+ def cleanup():
+ pass
+
def kill(self):
if self.__lazy_pages_p:
self.__lazy_pages_p.terminate()
@@ -2226,3 +2238,6 @@ criu.available()
tst.available()
opts['action'](opts)
+
+for tst in test_classes.values():
+ tst.cleanup()
diff --git a/test/zdtm_umount_cgroups b/test/zdtm_umount_cgroups
new file mode 100755
index 000000000..b0d4a78b6
--- /dev/null
+++ b/test/zdtm_umount_cgroups
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# Lets delete all test controllers after executing tests.
+
+cat /proc/self/cgroup | grep -q zdtmtst.defaultroot || exit 0
+
+tdir=`mktemp -d zdtm.XXXXXX`
+for i in "zdtmtst" "zdtmtst.defaultroot"; do
+ mount -t cgroup -o none,name=$i zdtm $tdir &&
+ # remove a fake group
+ rmdir $tdir/holder &&
+ umount -l $tdir || exit 1
+done
+rmdir $tdir
+
+# Wait 5 sec for cgroup hierarchy to destroy
+for i in `seq 5`; do
+ cat /proc/self/cgroup | grep -q zdtmtst.defaultroot || break
+ sleep 1
+done
--
2.17.1
More information about the CRIU
mailing list