[lxc-devel] [PATCH] tests: Support cgmanager
Stéphane Graber
stgraber at ubuntu.com
Thu Mar 13 03:16:08 UTC 2014
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 at ubuntu.com>
---
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 cc0a860..e913ee8 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
+
+ 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)
+
+ 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:$$
+ 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 0a514ee..b17fb4d 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
+
+ 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)
+
+ 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:$$
+ 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
--
1.9.0
More information about the lxc-devel
mailing list