[lxc-devel] [PATCH] tests: Support cgmanager

Serge Hallyn serge.hallyn at ubuntu.com
Thu Mar 13 03:23:06 UTC 2014


Quoting Stéphane Graber (stgraber at ubuntu.com):
> 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>

Acked-by: Serge E. Hallyn <serge.hallyn 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
> 
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel


More information about the lxc-devel mailing list