2021-03-20 11:26:11

by Leo Yan

[permalink] [raw]
Subject: [PATCH] perf test: Change to use bash for daemon test

When executed the daemon test on Arm64 and x86 with Debian (Buster)
distro, both skip the test case with the log:

# ./perf test -v 76
76: daemon operations :
--- start ---
test child forked, pid 11687
test daemon list
trap: SIGINT: bad trap
./tests/shell/daemon.sh: 173: local: cpu-clock: bad variable name
test child finished with -2
---- end ----
daemon operations: Skip

So the error happens for the variable expansion when use local variable
in the shell script. Since Debian Buster uses dash but not bash as
non-interactive shell, when execute the daemon testing, it hits a
known issue for dash which was reported [1].

To resolve this issue, one option is to add double quotes for all local
variables assignment, so need to change the code from:

local line=`perf daemon --config ${config} -x: | head -2 | tail -1`

... to:

local line="`perf daemon --config ${config} -x: | head -2 | tail -1`"

But the testing script has bunch of local variables, this leads to big
changes for whole script.

On the other hand, the testing script asks to use the "local" feature
which is bash-specific, so this patch explicitly uses "#!/bin/bash" to
ensure running the script with bash.

After:

# ./perf test -v 76
76: daemon operations :
--- start ---
test child forked, pid 11329
test daemon list
test daemon reconfig
test daemon stop
test daemon signal
signal 12 sent to session 'test [11596]'
signal 12 sent to session 'test [11596]'
test daemon ping
test daemon lock
test child finished with 0
---- end ----
daemon operations: Ok

[1] https://bugs.launchpad.net/ubuntu/+source/dash/+bug/139097

Fixes: 2291bb915b55 ("perf tests: Add daemon 'list' command test")
Signed-off-by: Leo Yan <[email protected]>
---
tools/perf/tests/shell/daemon.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/tests/shell/daemon.sh b/tools/perf/tests/shell/daemon.sh
index ee4a30ca3f57..45fc24af5b07 100755
--- a/tools/perf/tests/shell/daemon.sh
+++ b/tools/perf/tests/shell/daemon.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# daemon operations
# SPDX-License-Identifier: GPL-2.0

--
2.25.1


2021-03-24 09:13:21

by Namhyung Kim

[permalink] [raw]
Subject: Re: [PATCH] perf test: Change to use bash for daemon test

Hi Leo,

On Sat, Mar 20, 2021 at 7:46 PM Leo Yan <[email protected]> wrote:
>
> When executed the daemon test on Arm64 and x86 with Debian (Buster)
> distro, both skip the test case with the log:
>
> # ./perf test -v 76
> 76: daemon operations :
> --- start ---
> test child forked, pid 11687
> test daemon list
> trap: SIGINT: bad trap
> ./tests/shell/daemon.sh: 173: local: cpu-clock: bad variable name
> test child finished with -2
> ---- end ----
> daemon operations: Skip
>
> So the error happens for the variable expansion when use local variable
> in the shell script. Since Debian Buster uses dash but not bash as
> non-interactive shell, when execute the daemon testing, it hits a
> known issue for dash which was reported [1].
>
> To resolve this issue, one option is to add double quotes for all local
> variables assignment, so need to change the code from:
>
> local line=`perf daemon --config ${config} -x: | head -2 | tail -1`
>
> ... to:
>
> local line="`perf daemon --config ${config} -x: | head -2 | tail -1`"
>
> But the testing script has bunch of local variables, this leads to big
> changes for whole script.
>
> On the other hand, the testing script asks to use the "local" feature
> which is bash-specific, so this patch explicitly uses "#!/bin/bash" to
> ensure running the script with bash.
>
> After:
>
> # ./perf test -v 76
> 76: daemon operations :
> --- start ---
> test child forked, pid 11329
> test daemon list
> test daemon reconfig
> test daemon stop
> test daemon signal
> signal 12 sent to session 'test [11596]'
> signal 12 sent to session 'test [11596]'
> test daemon ping
> test daemon lock
> test child finished with 0
> ---- end ----
> daemon operations: Ok
>
> [1] https://bugs.launchpad.net/ubuntu/+source/dash/+bug/139097
>
> Fixes: 2291bb915b55 ("perf tests: Add daemon 'list' command test")
> Signed-off-by: Leo Yan <[email protected]>

Acked-by: Namhyung Kim <[email protected]>

Thanks,
Namhyung


> ---
> tools/perf/tests/shell/daemon.sh | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/tests/shell/daemon.sh b/tools/perf/tests/shell/daemon.sh
> index ee4a30ca3f57..45fc24af5b07 100755
> --- a/tools/perf/tests/shell/daemon.sh
> +++ b/tools/perf/tests/shell/daemon.sh
> @@ -1,4 +1,4 @@
> -#!/bin/sh
> +#!/bin/bash
> # daemon operations
> # SPDX-License-Identifier: GPL-2.0
>
> --
> 2.25.1
>

2021-03-24 13:54:38

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH] perf test: Change to use bash for daemon test

Em Wed, Mar 24, 2021 at 10:45:22AM +0900, Namhyung Kim escreveu:
> On Sat, Mar 20, 2021 at 7:46 PM Leo Yan <[email protected]> wrote:
> > [1] https://bugs.launchpad.net/ubuntu/+source/dash/+bug/139097
> >
> > Fixes: 2291bb915b55 ("perf tests: Add daemon 'list' command test")
> > Signed-off-by: Leo Yan <[email protected]>
>
> Acked-by: Namhyung Kim <[email protected]>

Thanks, applied.

- Arnaldo