[CRIU] [PATCH RFC] zdtm: Cleanup binfmt_misc entries in case of fail

Pavel Emelyanov xemul at virtuozzo.com
Wed Nov 30 00:43:24 PST 2016


On 11/28/2016 07:47 PM, Kirill Tkhai wrote:
> Add binfmt_misc hook to cleanup registered entries even
> in case of test failed.
> 
> Q:Guys, is there a better way to get test's filename option value,
> than I used in zdtm.py?
> 
> Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
> ---
>  test/zdtm.py                      |    2 +-
>  test/zdtm/static/binfmt_misc.c    |    4 ++--
>  test/zdtm/static/binfmt_misc.hook |   27 +++++++++++++++++++++++++++
>  3 files changed, 30 insertions(+), 3 deletions(-)
>  create mode 100755 test/zdtm/static/binfmt_misc.hook
> 
> diff --git a/test/zdtm.py b/test/zdtm.py
> index 7ca4bbf..4532d83 100755
> --- a/test/zdtm.py
> +++ b/test/zdtm.py
> @@ -962,7 +962,7 @@ join_ns_file = '/run/netns/zdtm_netns'
>  	hname = test.getname() + '.hook'
>  	if os.access(hname, os.X_OK):
>  		print "Running %s(%s)" % (hname, ', '.join(args))
> -		hook = subprocess.Popen([hname] + args)
> +		hook = subprocess.Popen([hname] + args + ["--name", os.path.basename(test.getname())])

Can hook find this out himself by analyzing the $0 variable?

>  		if hook.wait() != 0:
>  			raise test_fail_exc("hook " + " ".join(args))
>  
> diff --git a/test/zdtm/static/binfmt_misc.c b/test/zdtm/static/binfmt_misc.c
> index 62b9b51..ef362c2 100644
> --- a/test/zdtm/static/binfmt_misc.c
> +++ b/test/zdtm/static/binfmt_misc.c
> @@ -104,8 +104,8 @@ int main(int argc, char **argv)
>  
>  	test_init(argc, argv);
>  
> -	snprintf(NAME[0], PATH_MAX, "%s_magic", filename);
> -	snprintf(NAME[1], PATH_MAX, "%s_extention", filename);
> +	snprintf(NAME[0], PATH_MAX, "criu_zdtm_%s_magic", filename);
> +	snprintf(NAME[1], PATH_MAX, "criu_zdtm_%s_extention", filename);
>  
>  	if (mkdir(dirname, 0777)) {
>  		fail("mkdir");
> diff --git a/test/zdtm/static/binfmt_misc.hook b/test/zdtm/static/binfmt_misc.hook
> new file mode 100755
> index 0000000..a0f86ff
> --- /dev/null
> +++ b/test/zdtm/static/binfmt_misc.hook
> @@ -0,0 +1,27 @@
> +#!/bin/bash
> +
> +[ "$1" == "--clean" ] || exit 0
> +
> +if [ "$#" -ne 3 -o "$2" != "--name" ]; then
> +	echo "Wrong arguments were passed"
> +	exit -1
> +fi
> +
> +name=$3
> +
> +tname=$(mktemp -d binfmt_misc.XXXXXX)
> +mount -t binfmt_misc none $tname
> +
> +echo "Cleaning $tname: $@"
> +set +e
> +if [ -e $tname/criu_zdtm_${name}.test_magic ]; then
> +	echo -1 > $tname/criu_zdtm_${name}.test_magic
> +fi
> +
> +if [ -e $tname/criu_zdtm_${name}.test_extention ]; then
> +	echo -1 > $tname/criu_zdtm_${name}.test_extention
> +fi
> +set -e
> +
> +umount "$tname"
> +rmdir "$tname"
> 
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu
> .
> 



More information about the CRIU mailing list