From a29f38cbc55d587586f3016214ae533a2208ac26 Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Graber?= Date: Wed, 12 Mar 2014 23:15:33 -0400 Subject: [PATCH] tests: Support cgmanager MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit When cgmanager is around, use dbus-send to setup the cgroups, this allows the tests to work in a container without cgroupfs access. Signed-off-by: Stéphane Graber Acked-by: Serge E. Hallyn --- src/tests/lxc-test-unpriv | 26 +++++++++++++++++++++----- src/tests/lxc-test-usernic.in | 26 +++++++++++++++++++++----- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/tests/lxc-test-unpriv b/src/tests/lxc-test-unpriv index cc0a8609b..0108b2d3c 100755 --- a/src/tests/lxc-test-unpriv +++ b/src/tests/lxc-test-unpriv @@ -93,11 +93,27 @@ chown -R $TUSER /run/user/$(id -u $TUSER) cd $HDIR -for d in /sys/fs/cgroup/*; do - [ ! -d $d/lxctest ] && mkdir $d/lxctest - chown -R $TUSER $d/lxctest - echo $$ > $d/lxctest/tasks -done +if [ -e /sys/fs/cgroup/cgmanager/sock ]; then + for d in hugetlb cpuset cpu cpuacct memory devices freezer blkio perf_event; do + dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \ + --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.Create \ + string:$d string:$TUSER >/dev/null + + dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \ + --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.Chown \ + string:$d string:$TUSER int32:$(id -u $TUSER) int32:$(id -g $TUSER) >/dev/null + + dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \ + --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.MovePid \ + string:$d string:$TUSER int32:$$ >/dev/null + done +else + for d in /sys/fs/cgroup/*; do + [ ! -d $d/lxctest ] && mkdir $d/lxctest + chown -R $TUSER $d/lxctest + echo $$ > $d/lxctest/tasks + done +fi run_cmd lxc-create -t download -n c1 -- -d ubuntu -r trusty -a $ARCH run_cmd lxc-start -n c1 -d diff --git a/src/tests/lxc-test-usernic.in b/src/tests/lxc-test-usernic.in index 0a514ee47..3618beecd 100755 --- a/src/tests/lxc-test-usernic.in +++ b/src/tests/lxc-test-usernic.in @@ -86,11 +86,27 @@ lxc.id_map = u 0 910000 10000 lxc.id_map = g 0 910000 10000 EOF -for d in /sys/fs/cgroup/*; do - [ ! -d $d/lxctest ] && mkdir $d/lxctest - chown -R usernic-user $d/lxctest - echo $$ > $d/lxctest/tasks -done +if [ -e /sys/fs/cgroup/cgmanager/sock ]; then + for d in hugetlb cpuset cpu cpuacct memory devices freezer blkio perf_event; do + dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \ + --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.Create \ + string:$d string:usernic-user >/dev/null + + dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \ + --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.Chown \ + string:$d string:usernic-user int32:$(id -u usernic-user) int32:$(id -g usernic-user) >/dev/null + + dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \ + --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.MovePid \ + string:$d string:usernic-user int32:$$ >/dev/null + done +else + for d in /sys/fs/cgroup/*; do + [ ! -d $d/lxctest ] && mkdir $d/lxctest + chown -R usernic-user $d/lxctest + echo $$ > $d/lxctest/tasks + done +fi mkdir -p /run/user/$(id -u usernic-user) chown -R usernic-user /run/user/$(id -u usernic-user) /home/usernic-user -- 2.47.2