Commit 280c36d2 authored by Ian Rogers's avatar Ian Rogers Committed by Arnaldo Carvalho de Melo
Browse files

perf test: Add skip to --per-thread test

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: default avatarThomas Richter <tmricht@linux.ibm.com>
Signed-off-by: default avatarIan Rogers <irogers@google.com>
Tested-by: default avatarThomas Richter <tmricht@linux.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Link: https://lore.kernel.org/r/20220505182505.3313191-1-irogers@google.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 33cd6928
Loading
Loading
Loading
Loading
+41 −5
Original line number Diff line number Diff line
@@ -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