From: Stéphane Graber Date: Mon, 22 Sep 2014 22:08:49 +0000 (-0400) Subject: Fix the unprivileged tests cgroup management X-Git-Tag: lxc-1.1.0.alpha2~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=42e5c9878f0d20b3e9682ef441afed2f0228b298;p=thirdparty%2Flxc.git Fix the unprivileged tests cgroup management To cover all the cases we have around, we need to: - Attempt to use cgm if present (preferred) - Attempt to use cgmanager directly over dbus otherwise - Fallback to cgroupfs Signed-off-by: Stéphane Graber Acked-by: Serge Hallyn --- diff --git a/src/tests/lxc-test-apparmor-mount b/src/tests/lxc-test-apparmor-mount index 503381e6e..9ecf705bc 100755 --- a/src/tests/lxc-test-apparmor-mount +++ b/src/tests/lxc-test-apparmor-mount @@ -105,9 +105,32 @@ chown -R $TUSER: /run/user/$(id -u $TUSER) cd $HDIR -cgm create all $TUSER -cgm chown all $TUSER $(id -u $TUSER) $(id -g $TUSER) -cgm movepid all $TUSER $$ +if which cgm >/dev/null 2>&1; then + cgm create all $TUSER + cgm chown all $TUSER $(id -u $TUSER) $(id -g $TUSER) + cgm movepid all $TUSER $$ +elif [ -e /sys/fs/cgroup/cgmanager/sock ]; then + for d in $(cut -d : -f 2 /proc/self/cgroup); 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 mkdir -p $HDIR/.cache/lxc [ -d /var/cache/lxc/download ] && \ diff --git a/src/tests/lxc-test-unpriv b/src/tests/lxc-test-unpriv index 59c264032..6235901c7 100755 --- a/src/tests/lxc-test-unpriv +++ b/src/tests/lxc-test-unpriv @@ -92,7 +92,11 @@ chown -R $TUSER: /run/user/$(id -u $TUSER) cd $HDIR -if [ -e /sys/fs/cgroup/cgmanager/sock ]; then +if which cgm >/dev/null 2>&1; then + cgm create all $TUSER + cgm chown all $TUSER $(id -u $TUSER) $(id -g $TUSER) + cgm movepid all $TUSER $$ +elif [ -e /sys/fs/cgroup/cgmanager/sock ]; then for d in $(cut -d : -f 2 /proc/self/cgroup); do dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \ --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.Create \ diff --git a/src/tests/lxc-test-usernic.in b/src/tests/lxc-test-usernic.in index 7955d4f65..8d78fea59 100755 --- a/src/tests/lxc-test-usernic.in +++ b/src/tests/lxc-test-usernic.in @@ -84,7 +84,11 @@ lxc.id_map = u 0 910000 10000 lxc.id_map = g 0 910000 10000 EOF -if [ -e /sys/fs/cgroup/cgmanager/sock ]; then +if which cgm >/dev/null 2>&1; then + cgm create all $TUSER + cgm chown all $TUSER $(id -u $TUSER) $(id -g $TUSER) + cgm movepid all $TUSER $$ +elif [ -e /sys/fs/cgroup/cgmanager/sock ]; then for d in $(cut -d : -f 2 /proc/self/cgroup); do dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \ --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.Create \