diff --git a/tools/perf/tests/shell/test_stat_intel_tpebs.sh b/tools/perf/tests/shell/test_stat_intel_tpebs.sh index 0de6ce45c40a..695dcb93bb5e 100755 --- a/tools/perf/tests/shell/test_stat_intel_tpebs.sh +++ b/tools/perf/tests/shell/test_stat_intel_tpebs.sh @@ -20,6 +20,17 @@ then exit 2 fi +cleanup() { + trap - EXIT TERM INT +} + +trap_cleanup() { + echo "Unexpected signal in ${FUNCNAME[1]}" + cleanup + exit 1 +} +trap trap_cleanup EXIT TERM INT + # Use this event for testing because it should exist in all platforms event=cache-misses:R @@ -31,8 +42,36 @@ alt_name=/cache-misses/R #result=$(perf stat -e "$event" true 2>&1) #[[ "$result" =~ $event || "$result" =~ $alt_name ]] || exit 1 -# In platforms that do not support TPEBS, it should execute without error. -echo "Testing with --record-tpebs" -result=$(perf stat -e "$event" --record-tpebs -a sleep 0.01 2>&1) -[[ "$result" =~ "perf record" && "$result" =~ $event || "$result" =~ $alt_name ]] || exit 1 -echo "Success!" +test_with_record_tpebs() { + echo "Testing with --record-tpebs" + result=$(perf stat -e "$event" --record-tpebs -a sleep 0.01 2>&1) + + # Expected output: + # $ perf stat --record-tpebs -e cache-misses:R -a sleep 0.01 + # Events enabled + # [ perf record: Woken up 2 times to write data ] + # [ perf record: Captured and wrote 0.056 MB - ] + # + # Performance counter stats for 'system wide': + # + # 0 cache-misses:R + # + # 0.013963299 seconds time elapsed + if [[ ! "$result" =~ "perf record" ]] + then + echo "Testing with --record-tpebs [Failed missing perf record]" + echo "$result" + exit 1 + fi + if [[ ! "$result" =~ $event && ! "$result" =~ $alt_name ]] + then + echo "Testing with --record-tpebs [Failed missing event name]" + echo "$result" + exit 1 + fi + echo "Testing with --record-tpebs [Success]" +} + +test_with_record_tpebs +cleanup +exit 0