[CRIU] [PATCH] zdtm: add ability to execute non-namespacess tests concurrently

Pavel Emelyanov xemul at parallels.com
Tue Aug 12 03:42:45 PDT 2014


On 08/08/2014 10:31 PM, Andrey Vagin wrote:
> For that zdtm.sh is executed in pidns to avoid pid conflicts.
> 
> Cc: Christopher Covington <cov at codeaurora.org>
> Signed-off-by: Andrey Vagin <avagin at openvz.org>

OK, applied :)

> ---
>  test/Makefile | 10 +++++-----
>  test/zdtm.sh  | 21 +++++++++++++++++++++
>  2 files changed, 26 insertions(+), 5 deletions(-)
> 
> diff --git a/test/Makefile b/test/Makefile
> index 351b37b..5d04805 100644
> --- a/test/Makefile
> +++ b/test/Makefile
> @@ -16,11 +16,9 @@ other: .FORCE
>  		$(MAKE) -C $$t run || break;	\
>  	done					\
>  
> -zdtm: .FORCE
> +zdtm: .FORCE 
>  	$(MAKE) zdtm_ns
> -	for t in $(shell echo "$(TST)" | tr ' ' '\n' | grep -Pv $(EXP)); do \
> -		$(MAKE) $$t || break;	\
> -	done
> +	$(MAKE) zdtm_nons
>  .PHONY: zdtm
>  
>  fault-injection: .FORCE
> @@ -28,7 +26,9 @@ fault-injection: .FORCE
>  .PHONY: fault-injection
>  
>  zdtm_ns: $(shell echo "$(TST)" | tr ' ' '\n' | grep -P $(EXP))
> +zdtm_nons: $(shell echo "$(TST)" | tr ' ' '\n' | grep -vP $(EXP))
> +
>  $(TST):
> -	./zdtm.sh ${ZDTM_ARGS} $(@) &> $(subst /,_,$@).log || \
> +	./zdtm.sh --ct ${ZDTM_ARGS} $(@) &> $(subst /,_,$@).log || \
>  	{ flock Makefile cat $(subst /,_,$@).log; exit 1; }
>  .PHONY: zdtm_ns
> diff --git a/test/zdtm.sh b/test/zdtm.sh
> index d1a710d..b6c8095 100755
> --- a/test/zdtm.sh
> +++ b/test/zdtm.sh
> @@ -762,6 +762,7 @@ Options:
>  	-P : Make pre-dump instead of dump on all iterations except the last one
>  	-s : Make iterative snapshots. Only the last one will be checked.
>  	--auto-dedup : Make auto-dedup on restore. Check sizes of pages imges, it must be zero.
> +	--ct : re-execute $0 in a container
>  EOF
>  }
>  
> @@ -868,6 +869,26 @@ while :; do
>  		usage
>  		exit 0
>  		;;
> +	  --ct)
> +		[ -z "$ZDTM_SH_IN_CT" ] && {
> +			export ZDTM_SH_IN_CT=1
> +			shift
> +			args="$@"
> +			# pidns is used to avoid conflicts
> +			# mntns is used to mount /proc
> +			# net is used to avoid conflicts of parasite sockets
> +			unshare --pid --mount --ipc --net -- bash -c "
> +				(
> +					ip link set up dev lo &&
> +					mount --make-rprivate / &&
> +					umount -l /proc &&
> +					mount -t proc proc /proc/ &&
> +					./zdtm.sh $args
> +				)"
> +			exit
> +		}
> +		shift
> +		;;
>  	  -*)
>  		echo "Unrecognized option $1, aborting!" 1>&2
>  		usage
> 



More information about the CRIU mailing list