]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
tests: Support cgmanager
authorStéphane Graber <stgraber@ubuntu.com>
Thu, 13 Mar 2014 03:15:33 +0000 (23:15 -0400)
committerStéphane Graber <stgraber@ubuntu.com>
Thu, 13 Mar 2014 03:28:05 +0000 (23:28 -0400)
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 <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
src/tests/lxc-test-unpriv
src/tests/lxc-test-usernic.in

index cc0a8609b98b86d7fa7f79a9148c3d650b8da9f2..0108b2d3cfb726654f32c4e04e53d4eb11c08d1b 100755 (executable)
@@ -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
index 0a514ee47517446c00aaa75cfe3546fbcc28620e..3618beecdeda7b21734983d3d10c4af01ec2b05a 100755 (executable)
@@ -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