zdtm: cleanup zdtmtst and zdtmtst.defaultroot cgroups after finishing test

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.

v2: rmdir the holder only if it exists, remove racy wait and remove
wrongly added cleanup method in class criu
v3: bring back missed semicolon

Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
This commit is contained in:
Pavel Tikhomirov 2018-08-08 12:50:08 +03:00 committed by Andrei Vagin
parent 07da7b0f42
commit f194124e0a
2 changed files with 27 additions and 0 deletions

View file

@ -569,6 +569,10 @@ class zdtm_test:
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 @@ class inhfd_test:
def available():
pass
@staticmethod
def cleanup():
pass
class groups_test(zdtm_test):
def __init__(self, name, desc, flavor, freezer):
@ -2200,3 +2208,6 @@ for tst in test_classes.values():
tst.available()
opts['action'](opts)
for tst in test_classes.values():
tst.cleanup()

16
test/zdtm_umount_cgroups Executable file
View file

@ -0,0 +1,16 @@
#!/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 || { rmdir $tdir; exit 1; }
# remove a fake group if exists
if [ -d "$tdir/holder" ]; then
rmdir $tdir/holder || { umount -l $tdir && rmdir $tdir; exit 1; }
fi
umount -l $tdir || exit 1;
done
rmdir $tdir