Skip to content

Commit 78fc8bf

Browse files
Sbermnamhyung
authored andcommitted
perf test trace: Remove set -e and print trace test's error messages
Currently perf test utilizes the set -e option in shell that exit immediately if a command exits with a non-zero status, this prevents further error handling and introduces ambiguity. This patch removes set -e and prints the error message after invoking perf trace during perf tests. In my case, the command that exits with a non-zero status is perf trace instead of grep, because it can't find the 'timer:hrtimer_setup' tracepoint, see below. Before: $ sudo /tmp/perf test enum -vv 107: perf trace enum augmentation tests: 107: perf trace enum augmentation tests : Running --- start --- test child forked, pid 783533 Checking if vmlinux exists Tracing syscall landlock_add_rule Tracing non-syscall tracepoint syscall ---- end(-1) ---- 107: perf trace enum augmentation tests : FAILED! After: $ sudo /tmp/perf test enum -vv 107: perf trace enum augmentation tests: 107: perf trace enum augmentation tests : Running --- start --- test child forked, pid 851658 Checking if vmlinux exists Tracing syscall landlock_add_rule Tracing non-syscall tracepoint timer:hrtimer_setup,timer:hrtimer_start [tracepoint failure] Failed to trace tracepoint timer:hrtimer_setup,timer:hrtimer_start, output: event syntax error: 'timer:hrtimer_setup,timer:hrtimer_start' \___ unknown tracepoint Error: File /sys/kernel/tracing//events/timer/hrtimer_setup not found. Hint: Perhaps this kernel misses some CONFIG_ setting to enable this feature?. Run 'perf list' for a list of valid events Usage: perf trace [<options>] [<command>] or: perf trace [<options>] -- <command> [<options>] or: perf trace record [<options>] [<command>] or: perf trace record [<options>] -- <command> [<options>] -e, --event <event> event/syscall selector. use 'perf list' to list available events---- end(-1) ---- 107: perf trace enum augmentation tests : FAILED! Signed-off-by: Howard Chu <[email protected]> Tested-by: Namhyung Kim <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Namhyung Kim <[email protected]>
1 parent 6612d4d commit 78fc8bf

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

tools/perf/tests/shell/trace_btf_enum.sh

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
# SPDX-License-Identifier: GPL-2.0
44

55
err=0
6-
set -e
76

87
syscall="landlock_add_rule"
98
non_syscall="timer:hrtimer_setup,timer:hrtimer_start"
@@ -34,22 +33,24 @@ trace_landlock() {
3433
return
3534
fi
3635

37-
if perf trace -e $syscall $TESTPROG 2>&1 | \
38-
grep -q -E ".*landlock_add_rule\(ruleset_fd: 11, rule_type: (LANDLOCK_RULE_PATH_BENEATH|LANDLOCK_RULE_NET_PORT), rule_attr: 0x[a-f0-9]+, flags: 45\) = -1.*"
36+
output="$(perf trace -e $syscall $TESTPROG 2>&1)"
37+
if echo "$output" | grep -q -E ".*landlock_add_rule\(ruleset_fd: 11, rule_type: (LANDLOCK_RULE_PATH_BENEATH|LANDLOCK_RULE_NET_PORT), rule_attr: 0x[a-f0-9]+, flags: 45\) = -1.*"
3938
then
4039
err=0
4140
else
41+
printf "[syscall failure] Failed to trace syscall $syscall, output:\n$output\n"
4242
err=1
4343
fi
4444
}
4545

4646
trace_non_syscall() {
47-
echo "Tracing non-syscall tracepoint ${non-syscall}"
48-
if perf trace -e $non_syscall --max-events=1 2>&1 | \
49-
grep -q -E '.*timer:hrtimer_.*\(.*mode: HRTIMER_MODE_.*\)$'
47+
echo "Tracing non-syscall tracepoint ${non_syscall}"
48+
output="$(perf trace -e $non_syscall --max-events=1 2>&1)"
49+
if echo "$output" | grep -q -E '.*timer:hrtimer_.*\(.*mode: HRTIMER_MODE_.*\)$'
5050
then
5151
err=0
5252
else
53+
printf "[tracepoint failure] Failed to trace tracepoint $non_syscall, output:\n$output\n"
5354
err=1
5455
fi
5556
}

0 commit comments

Comments
 (0)