summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2017-11-17 20:06:26 +0100
committerLennart Poettering <lennart@poettering.net>2017-11-21 11:54:08 +0100
commitb961baf1cef3bfa01488e1acbe9e67932588a96e (patch)
treeffe2259e34a1bf1ad545305c015d1cd7519882d0 /test
parentcgroup: fix delegation on the unified hierarchy (diff)
downloadsystemd-b961baf1cef3bfa01488e1acbe9e67932588a96e.tar.xz
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/Makefile4
-rwxr-xr-xtest/TEST-19-DELEGATE/test.sh43
-rwxr-xr-xtest/TEST-19-DELEGATE/testsuite.sh20
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