[CRIU] [PATCH 1/2] test: replace cat in Makefiles with awk

Dmitry Safonov 0x7f454c46 at gmail.com
Thu Jan 12 00:20:11 PST 2017


2017-01-12 9:27 GMT+03:00 Vitaly Ostrosablin <vostrosablin at virtuozzo.com>:
> cat *.pid works when we have only one running process at any moment.
> That's because pidfiles contain no newlines and cat will just
> concatenate content of all files present in directory. So, e.g., if we
> have pidfiles:
>
> 31338
> 31359
> 31880
> 31884
> 31889
>
> cat will build following string from those pidfiles:
>
> 3133831359318803188431889

I don't mind the patch, but your explanation looks obiviously wrong:
[test]$ echo 123 > 1.txt
[test]$ echo 456 > 2.txt
[test]$ cat *.txt
123
456
[test]$ cat Makefile
all:
    cat *.txt
[test]$ make
cat *.txt
123
456

Is it something that depends on environment, like ${IFS} in bash?
Check, please.

>
> Obviously, kill would fail to send signals to processes, because it's
> now a single big number, which cannot be unambigously split back in
> general case.
>
> That's where awk comes in. We don't need to modify C part of tests to
> print newlines at end of file. We just order awk to print content of
> each file, which adds a newline at end - problem solved, kill can once
> again parse, which PIDs it get and send proper signals to them. Also,
> should be completely safe for zdtm.py, because it doesn't use Makefiles
> and sends signals on it's own.
> ---
>  test/zdtm/static/Makefile     | 4 ++--
>  test/zdtm/transition/Makefile | 4 ++--
>  2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/test/zdtm/static/Makefile b/test/zdtm/static/Makefile
> index af1254f5..8fe9d953 100644
> --- a/test/zdtm/static/Makefile
> +++ b/test/zdtm/static/Makefile
> @@ -338,7 +338,7 @@ start:      $(PID) $(STATE)
>  check_start:   $(PID:%.pid=%.is_running)
>
>  stop:  $(STATE_OUT)
> -       -kill -TERM `cat *.pid`
> +       -kill -TERM `awk '{print}' *.pid`
>
>  WAIT_TIME=240
>  %.stop:        %.pid %
> @@ -356,7 +356,7 @@ WAIT_TIME=240
>  wait_stop:
>                 i=0; \
>                 while [ $$i -lt $(WAIT_TIME) ] ; do \
> -               kill -0 `cat *.pid 2>/dev/null` 2>/dev/null || break; \
> +               kill -0 `awk '{print}' *.pid 2>/dev/null` 2>/dev/null || break; \
>                 sleep 1; \
>                 i=`expr $$i + 1`; \
>         done
> diff --git a/test/zdtm/transition/Makefile b/test/zdtm/transition/Makefile
> index 7ddb2384..dfc10ef5 100644
> --- a/test/zdtm/transition/Makefile
> +++ b/test/zdtm/transition/Makefile
> @@ -65,12 +65,12 @@ start:      $(PID)
>  check_start:   $(PID:%.pid=%.is_running)
>
>  stop:
> -       -kill -TERM `cat *.pid`
> +       -kill -TERM `awk '{print}' *.pid`
>
>  WAIT_TIME=10
>  wait_stop:
>         -for i in `seq 1 $(WAIT_TIME)`; do \
> -               kill -0 `cat *.pid 2>/dev/null` 2>/dev/null || break; \
> +               kill -0 `awk '{print}' *.pid 2>/dev/null` 2>/dev/null || break; \
>                 sleep 1; \
>         done
>
> --
> 2.11.0
>
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu



-- 
             Dmitry


More information about the CRIU mailing list