* [PATCH v3] perf test: Add skip to --per-thread test
@ 2022-05-05 18:25 Ian Rogers
2022-05-06 18:15 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 2+ messages in thread
From: Ian Rogers @ 2022-05-05 18:25 UTC (permalink / raw)
To: Thomas Richter, linux-kernel, linux-perf-users, acme, Jiri Olsa,
Namhyung Kim
Cc: svens, gor, sumanthk, hca, Ian Rogers
As reported in:
https://lore.kernel.org/linux-perf-users/20220428122821.3652015-1-tmricht@linux.ibm.com/
the 'instructions:u' event may not be supported. Add a skip using 'perf
record'.
Switch some code away from pipe to make the failures clearer.
Reported-by: Thomas Richter <tmricht@linux.ibm.com>
Tested-by: Thomas Richter <tmricht@linux.ibm.com>
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/tests/shell/record.sh | 46 ++++++++++++++++++++++++++++----
1 file changed, 41 insertions(+), 5 deletions(-)
diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
index d98f4d4a00e1..00c7285ce1ac 100755
--- a/tools/perf/tests/shell/record.sh
+++ b/tools/perf/tests/shell/record.sh
@@ -5,11 +5,43 @@
set -e
err=0
+perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
+
+cleanup() {
+ rm -f ${perfdata}
+ rm -f ${perfdata}.old
+ trap - exit term int
+}
+
+trap_cleanup() {
+ cleanup
+ exit 1
+}
+trap trap_cleanup exit term int
+
test_per_thread() {
echo "Basic --per-thread mode test"
- perf record -e instructions:u --per-thread -o- true 2> /dev/null \
- | perf report -i- -q \
- | egrep -q true
+ if ! perf record -e instructions:u -o ${perfdata} --quiet true 2> /dev/null
+ then
+ echo "Per-thread record [Skipped instructions:u not supported]"
+ if [ $err -ne 1 ]
+ then
+ err=2
+ fi
+ return
+ fi
+ if ! perf record -e instructions:u --per-thread -o ${perfdata} true 2> /dev/null
+ then
+ echo "Per-thread record of instructions:u [Failed]"
+ err=1
+ return
+ fi
+ if ! perf report -i ${perfdata} -q | egrep -q true
+ then
+ echo "Per-thread record [Failed missing output]"
+ err=1
+ return
+ fi
echo "Basic --per-thread mode test [Success]"
}
@@ -18,6 +50,10 @@ test_register_capture() {
if ! perf list | egrep -q 'br_inst_retired.near_call'
then
echo "Register capture test [Skipped missing instruction]"
+ if [ $err -ne 1 ]
+ then
+ err=2
+ fi
return
fi
if ! perf record --intr-regs=\? 2>&1 | egrep -q 'available registers: AX BX CX DX SI DI BP SP IP FLAGS CS SS R8 R9 R10 R11 R12 R13 R14 R15'
@@ -37,8 +73,8 @@ test_register_capture() {
echo "Register capture test [Success]"
}
-# Test for platform support and return TEST_SKIP
-[ $(uname -m) = s390x ] && exit 2
test_per_thread
test_register_capture
+
+cleanup
exit $err
--
2.36.0.512.ge40c2bad7a-goog
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v3] perf test: Add skip to --per-thread test
2022-05-05 18:25 [PATCH v3] perf test: Add skip to --per-thread test Ian Rogers
@ 2022-05-06 18:15 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 2+ messages in thread
From: Arnaldo Carvalho de Melo @ 2022-05-06 18:15 UTC (permalink / raw)
To: Ian Rogers
Cc: Thomas Richter, linux-kernel, linux-perf-users, Jiri Olsa,
Namhyung Kim, svens, gor, sumanthk, hca
Em Thu, May 05, 2022 at 11:25:05AM -0700, Ian Rogers escreveu:
> As reported in:
> https://lore.kernel.org/linux-perf-users/20220428122821.3652015-1-tmricht@linux.ibm.com/
> the 'instructions:u' event may not be supported. Add a skip using 'perf
> record'.
>
> Switch some code away from pipe to make the failures clearer.
Thanks, applied.
- Arnaldo
> Reported-by: Thomas Richter <tmricht@linux.ibm.com>
> Tested-by: Thomas Richter <tmricht@linux.ibm.com>
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
> tools/perf/tests/shell/record.sh | 46 ++++++++++++++++++++++++++++----
> 1 file changed, 41 insertions(+), 5 deletions(-)
>
> diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
> index d98f4d4a00e1..00c7285ce1ac 100755
> --- a/tools/perf/tests/shell/record.sh
> +++ b/tools/perf/tests/shell/record.sh
> @@ -5,11 +5,43 @@
> set -e
>
> err=0
> +perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
> +
> +cleanup() {
> + rm -f ${perfdata}
> + rm -f ${perfdata}.old
> + trap - exit term int
> +}
> +
> +trap_cleanup() {
> + cleanup
> + exit 1
> +}
> +trap trap_cleanup exit term int
> +
> test_per_thread() {
> echo "Basic --per-thread mode test"
> - perf record -e instructions:u --per-thread -o- true 2> /dev/null \
> - | perf report -i- -q \
> - | egrep -q true
> + if ! perf record -e instructions:u -o ${perfdata} --quiet true 2> /dev/null
> + then
> + echo "Per-thread record [Skipped instructions:u not supported]"
> + if [ $err -ne 1 ]
> + then
> + err=2
> + fi
> + return
> + fi
> + if ! perf record -e instructions:u --per-thread -o ${perfdata} true 2> /dev/null
> + then
> + echo "Per-thread record of instructions:u [Failed]"
> + err=1
> + return
> + fi
> + if ! perf report -i ${perfdata} -q | egrep -q true
> + then
> + echo "Per-thread record [Failed missing output]"
> + err=1
> + return
> + fi
> echo "Basic --per-thread mode test [Success]"
> }
>
> @@ -18,6 +50,10 @@ test_register_capture() {
> if ! perf list | egrep -q 'br_inst_retired.near_call'
> then
> echo "Register capture test [Skipped missing instruction]"
> + if [ $err -ne 1 ]
> + then
> + err=2
> + fi
> return
> fi
> if ! perf record --intr-regs=\? 2>&1 | egrep -q 'available registers: AX BX CX DX SI DI BP SP IP FLAGS CS SS R8 R9 R10 R11 R12 R13 R14 R15'
> @@ -37,8 +73,8 @@ test_register_capture() {
> echo "Register capture test [Success]"
> }
>
> -# Test for platform support and return TEST_SKIP
> -[ $(uname -m) = s390x ] && exit 2
> test_per_thread
> test_register_capture
> +
> +cleanup
> exit $err
> --
> 2.36.0.512.ge40c2bad7a-goog
--
- Arnaldo
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-05-06 18:15 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-05-05 18:25 [PATCH v3] perf test: Add skip to --per-thread test Ian Rogers
2022-05-06 18:15 ` Arnaldo Carvalho de Melo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.