diff options
author | Lennart Poettering <lennart@poettering.net> | 2017-11-17 20:06:26 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2017-11-21 11:54:08 +0100 |
commit | b961baf1cef3bfa01488e1acbe9e67932588a96e (patch) | |
tree | ffe2259e34a1bf1ad545305c015d1cd7519882d0 /test | |
parent | 64e844e5ca5be2f8766c68bcfb112e4cd84a8bb2 (diff) | |
download | systemd-b961baf1cef3bfa01488e1acbe9e67932588a96e.tar.gz systemd-b961baf1cef3bfa01488e1acbe9e67932588a96e.tar.bz2 systemd-b961baf1cef3bfa01488e1acbe9e67932588a96e.zip |
test: add a test case that validates cgroup delegation
This test runs on the unified hierarchy, and ensures that cgroup
delegation works properly, i.e. writ access is granted and the requested
controllers are enabled.
Diffstat (limited to 'test')
-rw-r--r-- | test/TEST-19-DELEGATE/Makefile | 4 | ||||
-rwxr-xr-x | test/TEST-19-DELEGATE/test.sh | 43 | ||||
-rwxr-xr-x | test/TEST-19-DELEGATE/testsuite.sh | 20 |
3 files changed, 67 insertions, 0 deletions
diff --git a/test/TEST-19-DELEGATE/Makefile b/test/TEST-19-DELEGATE/Makefile new file mode 100644 index 0000000000..b895de8bcb --- /dev/null +++ b/test/TEST-19-DELEGATE/Makefile @@ -0,0 +1,4 @@ +include ../Makefile.guess + +all setup clean run: + @basedir=../.. TEST_BASE_DIR=../ BUILD_DIR=$(BUILD_DIR) ./test.sh --$@ diff --git a/test/TEST-19-DELEGATE/test.sh b/test/TEST-19-DELEGATE/test.sh new file mode 100755 index 0000000000..841a29c06f --- /dev/null +++ b/test/TEST-19-DELEGATE/test.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh +set -e +TEST_DESCRIPTION="test cgroup delegation in the unifier hierarchy" +TEST_NO_NSPAWN=1 + +. $TEST_BASE_DIR/test-functions +QEMU_TIMEOUT=180 +UNIFIED_CGROUP_HIERARCHY=yes + +test_setup() { + create_empty_image + mkdir -p $TESTDIR/root + mount ${LOOPDEV}p1 $TESTDIR/root + + ( + LOG_LEVEL=5 + eval $(udevadm info --export --query=env --name=${LOOPDEV}p2) + + setup_basic_environment + + # setup the testsuite service + cat >$initdir/etc/systemd/system/testsuite.service <<EOF +[Unit] +Description=Testsuite service + +[Service] +ExecStart=/bin/bash -x /testsuite.sh +Type=oneshot +StandardOutput=tty +StandardError=tty +EOF + cp testsuite.sh $initdir/ + + setup_testsuite + ) || return 1 + + ddebug "umount $TESTDIR/root" + umount $TESTDIR/root +} + +do_test "$@" diff --git a/test/TEST-19-DELEGATE/testsuite.sh b/test/TEST-19-DELEGATE/testsuite.sh new file mode 100755 index 0000000000..3fbf347177 --- /dev/null +++ b/test/TEST-19-DELEGATE/testsuite.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh +set -ex +set -o pipefail + +systemd-run --wait --unit=test0.service -p "DynamicUser=1" -p "Delegate=" \ + test -w /sys/fs/cgroup/system.slice/test0.service/ -a \ + -w /sys/fs/cgroup/system.slice/test0.service/cgroup.procs -a \ + -w /sys/fs/cgroup/system.slice/test0.service/cgroup.subtree_control + +systemd-run --wait --unit=test1.service -p "DynamicUser=1" -p "Delegate=memory pids" \ + grep memory /sys/fs/cgroup/system.slice/test1.service/cgroup.controllers + +systemd-run --wait --unit=test2.service -p "DynamicUser=1" -p "Delegate=memory pids" \ + grep pids /sys/fs/cgroup/system.slice/test2.service/cgroup.controllers + +echo OK > /testok + +exit 0 |