From f194124e0a822e4fa795dbd1f2252ad51c4422af Mon Sep 17 00:00:00 2001 From: Pavel Tikhomirov Date: Wed, 8 Aug 2018 12:50:08 +0300 Subject: [PATCH] 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 Signed-off-by: Andrei Vagin --- test/zdtm.py | 11 +++++++++++ test/zdtm_umount_cgroups | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100755 test/zdtm_umount_cgroups diff --git a/test/zdtm.py b/test/zdtm.py index 99ec6aaac..25e965db3 100755 --- a/test/zdtm.py +++ b/test/zdtm.py @@ -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() diff --git a/test/zdtm_umount_cgroups b/test/zdtm_umount_cgroups new file mode 100755 index 000000000..75a8ea28f --- /dev/null +++ b/test/zdtm_umount_cgroups @@ -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