diff options
author | Ian Rogers <[email protected]> | 2022-05-05 11:25:05 -0700 |
---|---|---|
committer | Arnaldo Carvalho de Melo <[email protected]> | 2022-05-06 15:15:05 -0300 |
commit | 280c36d26eb80ec674df1648034b0ad2df5b0cff (patch) | |
tree | 034e09e31412ad98e923df036df918786985df7d | |
parent | 33cd6928039c6bf18cf0baec936924d908e6c89b (diff) |
perf test: Add skip to --per-thread test
As reported in:
https://lore.kernel.org/linux-perf-users/[email protected]/
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 <[email protected]>
Signed-off-by: Ian Rogers <[email protected]>
Tested-by: Thomas Richter <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Sumanth Korikkar <[email protected]>
Cc: Sven Schnelle <[email protected]>
Cc: Vasily Gorbik <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
-rwxr-xr-x | tools/perf/tests/shell/record.sh | 46 |
1 files 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 |