Skip to content

Commit cfa0963

Browse files
mhiramathitachirostedt
authored andcommitted
kselftests/ftrace : Add event trigger testcases
This adds simple event trigger testcases for ftracetest, which covers following triggers. - traceon-traceoff trigger - enable/disable_event trigger - snapshot trigger - stacktrace trigger - trigger filters Here is the test result. ---- # ./ftracetest test.d/trigger/ === Ftrace unit tests === [1] event trigger - test event enable/disable trigger [PASS] [2] event trigger - test trigger filter [PASS] [3] event trigger - test snapshot-trigger [PASS] [4] event trigger - test stacktrace-trigger [PASS] [5] event trigger - test traceon/off trigger [PASS] # of passed: 5 # of failed: 0 # of unresolved: 0 # of untested: 0 # of unsupported: 0 # of xfailed: 0 # of undefined(test bug): 0 ---- Link: http://lkml.kernel.org/r/12b9c2b289a0dc1e4386e7b77674611a83abca85.1457029949.git.tom.zanussi@linux.intel.com Signed-off-by: Masami Hiramatsu <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Shuah Khan <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Tom Zanussi <[email protected]> Reviewed-by: Namhyung Kim <[email protected]> Signed-off-by: Steven Rostedt <[email protected]>
1 parent 5463bfd commit cfa0963

File tree

6 files changed

+299
-0
lines changed

6 files changed

+299
-0
lines changed

tools/testing/selftests/ftrace/test.d/functions

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,12 @@ enable_tracing() { # start trace recording
1414
reset_tracer() { # reset the current tracer
1515
echo nop > current_tracer
1616
}
17+
18+
reset_trigger() { # reset all current setting triggers
19+
grep -v ^# events/*/*/trigger |
20+
while read line; do
21+
cmd=`echo $line | cut -f2- -d: | cut -f1 -d" "`
22+
echo "!$cmd" > `echo $line | cut -f1 -d:`
23+
done
24+
}
25+
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/bin/sh
2+
# description: event trigger - test event enable/disable trigger
3+
4+
do_reset() {
5+
reset_trigger
6+
echo > set_event
7+
clear_trace
8+
}
9+
10+
fail() { #msg
11+
do_reset
12+
echo $1
13+
exit $FAIL
14+
}
15+
16+
if [ ! -f set_event -o ! -d events/sched ]; then
17+
echo "event tracing is not supported"
18+
exit_unsupported
19+
fi
20+
21+
if [ ! -f events/sched/sched_process_fork/trigger ]; then
22+
echo "event trigger is not supported"
23+
exit_unsupported
24+
fi
25+
26+
reset_tracer
27+
do_reset
28+
29+
FEATURE=`grep enable_event events/sched/sched_process_fork/trigger`
30+
if [ -z "$FEATURE" ]; then
31+
echo "event enable/disable trigger is not supported"
32+
exit_unsupported
33+
fi
34+
35+
echo "Test enable_event trigger"
36+
echo 0 > events/sched/sched_switch/enable
37+
echo 'enable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger
38+
( echo "forked")
39+
if [ `cat events/sched/sched_switch/enable` != '1*' ]; then
40+
fail "enable_event trigger on sched_process_fork did not work"
41+
fi
42+
43+
reset_trigger
44+
45+
echo "Test disable_event trigger"
46+
echo 1 > events/sched/sched_switch/enable
47+
echo 'disable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger
48+
( echo "forked")
49+
if [ `cat events/sched/sched_switch/enable` != '0*' ]; then
50+
fail "disable_event trigger on sched_process_fork did not work"
51+
fi
52+
53+
reset_trigger
54+
55+
echo "Test semantic error for event enable/disable trigger"
56+
! echo 'enable_event:nogroup:noevent' > events/sched/sched_process_fork/trigger
57+
! echo 'disable_event+1' > events/sched/sched_process_fork/trigger
58+
echo 'enable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger
59+
! echo 'enable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger
60+
! echo 'disable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger
61+
62+
do_reset
63+
64+
exit 0
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#!/bin/sh
2+
# description: event trigger - test trigger filter
3+
4+
do_reset() {
5+
reset_trigger
6+
echo > set_event
7+
clear_trace
8+
}
9+
10+
fail() { #msg
11+
do_reset
12+
echo $1
13+
exit $FAIL
14+
}
15+
16+
if [ ! -f set_event -o ! -d events/sched ]; then
17+
echo "event tracing is not supported"
18+
exit_unsupported
19+
fi
20+
21+
if [ ! -f events/sched/sched_process_fork/trigger ]; then
22+
echo "event trigger is not supported"
23+
exit_unsupported
24+
fi
25+
26+
reset_tracer
27+
do_reset
28+
29+
echo "Test trigger filter"
30+
echo 1 > tracing_on
31+
echo 'traceoff if child_pid == 0' > events/sched/sched_process_fork/trigger
32+
( echo "forked")
33+
if [ `cat tracing_on` -ne 1 ]; then
34+
fail "traceoff trigger on sched_process_fork did not work"
35+
fi
36+
37+
reset_trigger
38+
39+
echo "Test semantic error for trigger filter"
40+
! echo 'traceoff if a' > events/sched/sched_process_fork/trigger
41+
! echo 'traceoff if common_pid=0' > events/sched/sched_process_fork/trigger
42+
! echo 'traceoff if common_pid==b' > events/sched/sched_process_fork/trigger
43+
echo 'traceoff if common_pid == 0' > events/sched/sched_process_fork/trigger
44+
echo '!traceoff' > events/sched/sched_process_fork/trigger
45+
! echo 'traceoff if common_pid == child_pid' > events/sched/sched_process_fork/trigger
46+
echo 'traceoff if common_pid <= 0' > events/sched/sched_process_fork/trigger
47+
echo '!traceoff' > events/sched/sched_process_fork/trigger
48+
echo 'traceoff if common_pid >= 0' > events/sched/sched_process_fork/trigger
49+
echo '!traceoff' > events/sched/sched_process_fork/trigger
50+
echo 'traceoff if parent_pid >= 0 && child_pid >= 0' > events/sched/sched_process_fork/trigger
51+
echo '!traceoff' > events/sched/sched_process_fork/trigger
52+
echo 'traceoff if parent_pid >= 0 || child_pid >= 0' > events/sched/sched_process_fork/trigger
53+
echo '!traceoff' > events/sched/sched_process_fork/trigger
54+
55+
56+
57+
do_reset
58+
59+
exit 0
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#!/bin/sh
2+
# description: event trigger - test snapshot-trigger
3+
4+
do_reset() {
5+
reset_trigger
6+
echo > set_event
7+
clear_trace
8+
}
9+
10+
fail() { #msg
11+
do_reset
12+
echo $1
13+
exit $FAIL
14+
}
15+
16+
if [ ! -f set_event -o ! -d events/sched ]; then
17+
echo "event tracing is not supported"
18+
exit_unsupported
19+
fi
20+
21+
if [ ! -f events/sched/sched_process_fork/trigger ]; then
22+
echo "event trigger is not supported"
23+
exit_unsupported
24+
fi
25+
26+
reset_tracer
27+
do_reset
28+
29+
FEATURE=`grep snapshot events/sched/sched_process_fork/trigger`
30+
if [ -z "$FEATURE" ]; then
31+
echo "snapshot trigger is not supported"
32+
exit_unsupported
33+
fi
34+
35+
echo "Test snapshot tigger"
36+
echo 0 > snapshot
37+
echo 1 > events/sched/sched_process_fork/enable
38+
( echo "forked")
39+
echo 'snapshot:1' > events/sched/sched_process_fork/trigger
40+
( echo "forked")
41+
grep sched_process_fork snapshot > /dev/null || \
42+
fail "snapshot trigger on sched_process_fork did not work"
43+
44+
reset_trigger
45+
echo 0 > snapshot
46+
echo 0 > events/sched/sched_process_fork/enable
47+
48+
echo "Test snapshot semantic errors"
49+
50+
! echo "snapshot+1" > events/sched/sched_process_fork/trigger
51+
echo "snapshot" > events/sched/sched_process_fork/trigger
52+
! echo "snapshot" > events/sched/sched_process_fork/trigger
53+
54+
do_reset
55+
56+
exit 0
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/bin/sh
2+
# description: event trigger - test stacktrace-trigger
3+
4+
do_reset() {
5+
reset_trigger
6+
echo > set_event
7+
clear_trace
8+
}
9+
10+
fail() { #msg
11+
do_reset
12+
echo $1
13+
exit $FAIL
14+
}
15+
16+
if [ ! -f set_event -o ! -d events/sched ]; then
17+
echo "event tracing is not supported"
18+
exit_unsupported
19+
fi
20+
21+
if [ ! -f events/sched/sched_process_fork/trigger ]; then
22+
echo "event trigger is not supported"
23+
exit_unsupported
24+
fi
25+
26+
reset_tracer
27+
do_reset
28+
29+
FEATURE=`grep stacktrace events/sched/sched_process_fork/trigger`
30+
if [ -z "$FEATURE" ]; then
31+
echo "stacktrace trigger is not supported"
32+
exit_unsupported
33+
fi
34+
35+
echo "Test stacktrace tigger"
36+
echo 0 > trace
37+
echo 0 > options/stacktrace
38+
echo 'stacktrace' > events/sched/sched_process_fork/trigger
39+
( echo "forked")
40+
grep "<stack trace>" trace > /dev/null || \
41+
fail "stacktrace trigger on sched_process_fork did not work"
42+
43+
reset_trigger
44+
45+
echo "Test stacktrace semantic errors"
46+
47+
! echo "stacktrace:foo" > events/sched/sched_process_fork/trigger
48+
echo "stacktrace" > events/sched/sched_process_fork/trigger
49+
! echo "stacktrace" > events/sched/sched_process_fork/trigger
50+
51+
do_reset
52+
53+
exit 0
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#!/bin/sh
2+
# description: event trigger - test traceon/off trigger
3+
4+
do_reset() {
5+
reset_trigger
6+
echo > set_event
7+
clear_trace
8+
}
9+
10+
fail() { #msg
11+
do_reset
12+
echo $1
13+
exit $FAIL
14+
}
15+
16+
if [ ! -f set_event -o ! -d events/sched ]; then
17+
echo "event tracing is not supported"
18+
exit_unsupported
19+
fi
20+
21+
if [ ! -f events/sched/sched_process_fork/trigger ]; then
22+
echo "event trigger is not supported"
23+
exit_unsupported
24+
fi
25+
26+
reset_tracer
27+
do_reset
28+
29+
echo "Test traceoff trigger"
30+
echo 1 > tracing_on
31+
echo 'traceoff' > events/sched/sched_process_fork/trigger
32+
( echo "forked")
33+
if [ `cat tracing_on` -ne 0 ]; then
34+
fail "traceoff trigger on sched_process_fork did not work"
35+
fi
36+
37+
reset_trigger
38+
39+
echo "Test traceon trigger"
40+
echo 0 > tracing_on
41+
echo 'traceon' > events/sched/sched_process_fork/trigger
42+
( echo "forked")
43+
if [ `cat tracing_on` -ne 1 ]; then
44+
fail "traceoff trigger on sched_process_fork did not work"
45+
fi
46+
47+
reset_trigger
48+
49+
echo "Test semantic error for traceoff/on trigger"
50+
! echo 'traceoff:badparam' > events/sched/sched_process_fork/trigger
51+
! echo 'traceoff+0' > events/sched/sched_process_fork/trigger
52+
echo 'traceon' > events/sched/sched_process_fork/trigger
53+
! echo 'traceon' > events/sched/sched_process_fork/trigger
54+
! echo 'traceoff' > events/sched/sched_process_fork/trigger
55+
56+
do_reset
57+
58+
exit 0

0 commit comments

Comments
 (0)