-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
selftests: ftrace: Add inter-event hist triggers testcases
This adds inter-event hist triggers testcases which covers following: - create/remove synthetic event - disable histogram for synthetic event - extended error support - field variable support - histogram variables - histogram trigger onmatch action - histogram trigger onmax action - histogram trigger onmatch-onmax action - simple expression support - combined histogram Here is the test result. === Ftrace unit tests === [1] event trigger - test extended error support [PASS] [2] event trigger - test field variable support [PASS] [3] event trigger - test inter-event combined histogram trigger [PASS] [4] event trigger - test inter-event histogram trigger onmatch action [PASS] [5] event trigger - test inter-event histogram trigger onmatch-onmax action [PASS] [6] event trigger - test inter-event histogram trigger onmax action [PASS] [7] event trigger - test synthetic event create remove [PASS] Link: http://lkml.kernel.org/r/e07ef1e72f7bf0f84dc87c9b736d6dc91b4b0b49.1516069914.git.tom.zanussi@linux.intel.com Signed-off-by: Rajvi Jingar <rajvi.jingar@intel.com> Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
- Loading branch information
Rajvi Jingar
authored and
Steven Rostedt (VMware)
committed
Mar 10, 2018
1 parent
89e270c
commit f06eec4
Showing
8 changed files
with
360 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
39 changes: 39 additions & 0 deletions
39
tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
#!/bin/sh | ||
# description: event trigger - test extended error support | ||
|
||
|
||
do_reset() { | ||
reset_trigger | ||
echo > set_event | ||
clear_trace | ||
} | ||
|
||
fail() { #msg | ||
do_reset | ||
echo $1 | ||
exit_fail | ||
} | ||
|
||
if [ ! -f set_event ]; then | ||
echo "event tracing is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
if [ ! -f synthetic_events ]; then | ||
echo "synthetic event is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
reset_tracer | ||
do_reset | ||
|
||
echo "Test extended error support" | ||
echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger | ||
echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_wakeup/trigger &>/dev/null | ||
if ! grep -q "ERROR:" events/sched/sched_wakeup/hist; then | ||
fail "Failed to generate extended error in histogram" | ||
fi | ||
|
||
do_reset | ||
|
||
exit 0 |
54 changes: 54 additions & 0 deletions
54
tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
#!/bin/sh | ||
# description: event trigger - test field variable support | ||
|
||
do_reset() { | ||
reset_trigger | ||
echo > set_event | ||
clear_trace | ||
} | ||
|
||
fail() { #msg | ||
do_reset | ||
echo $1 | ||
exit_fail | ||
} | ||
|
||
if [ ! -f set_event ]; then | ||
echo "event tracing is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
if [ ! -f synthetic_events ]; then | ||
echo "synthetic event is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
clear_synthetic_events | ||
reset_tracer | ||
do_reset | ||
|
||
echo "Test field variable support" | ||
|
||
echo 'wakeup_latency u64 lat; pid_t pid; int prio; char comm[16]' > synthetic_events | ||
echo 'hist:keys=comm:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_waking/trigger | ||
echo 'hist:keys=next_comm:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).wakeup_latency($wakeup_lat,next_pid,sched.sched_waking.prio,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger | ||
echo 'hist:keys=pid,prio,comm:vals=lat:sort=pid,prio' > events/synthetic/wakeup_latency/trigger | ||
|
||
ping localhost -c 3 | ||
if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then | ||
fail "Failed to create inter-event histogram" | ||
fi | ||
|
||
if ! grep -q "synthetic_prio=prio" events/sched/sched_waking/hist; then | ||
fail "Failed to create histogram with field variable" | ||
fi | ||
|
||
echo '!hist:keys=next_comm:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).wakeup_latency($wakeup_lat,next_pid,sched.sched_waking.prio,next_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger | ||
|
||
if grep -q "synthetic_prio=prio" events/sched/sched_waking/hist; then | ||
fail "Failed to remove histogram with field variable" | ||
fi | ||
|
||
do_reset | ||
|
||
exit 0 |
58 changes: 58 additions & 0 deletions
58
.../testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
#!/bin/sh | ||
# description: event trigger - test inter-event combined histogram trigger | ||
|
||
do_reset() { | ||
reset_trigger | ||
echo > set_event | ||
clear_trace | ||
} | ||
|
||
fail() { #msg | ||
do_reset | ||
echo $1 | ||
exit_fail | ||
} | ||
|
||
if [ ! -f set_event ]; then | ||
echo "event tracing is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
if [ ! -f synthetic_events ]; then | ||
echo "synthetic event is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
reset_tracer | ||
do_reset | ||
clear_synthetic_events | ||
|
||
echo "Test create synthetic event" | ||
|
||
echo 'waking_latency u64 lat pid_t pid' > synthetic_events | ||
if [ ! -d events/synthetic/waking_latency ]; then | ||
fail "Failed to create waking_latency synthetic event" | ||
fi | ||
|
||
echo "Test combined histogram" | ||
|
||
echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_waking/trigger | ||
echo 'hist:keys=pid:waking_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).waking_latency($waking_lat,pid) if comm=="ping"' > events/sched/sched_wakeup/trigger | ||
echo 'hist:keys=pid,lat:sort=pid,lat' > events/synthetic/waking_latency/trigger | ||
|
||
echo 'wakeup_latency u64 lat pid_t pid' >> synthetic_events | ||
echo 'hist:keys=pid:ts1=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_wakeup/trigger | ||
echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts1:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid) if next_comm=="ping"' > events/sched/sched_switch/trigger | ||
|
||
echo 'waking+wakeup_latency u64 lat; pid_t pid' >> synthetic_events | ||
echo 'hist:keys=pid,lat:sort=pid,lat:ww_lat=$waking_lat+$wakeup_lat:onmatch(synthetic.wakeup_latency).waking+wakeup_latency($ww_lat,pid)' >> events/synthetic/wakeup_latency/trigger | ||
echo 'hist:keys=pid,lat:sort=pid,lat' >> events/synthetic/waking+wakeup_latency/trigger | ||
|
||
ping localhost -c 3 | ||
if ! grep -q "pid:" events/synthetic/waking+wakeup_latency/hist; then | ||
fail "Failed to create combined histogram" | ||
fi | ||
|
||
do_reset | ||
|
||
exit 0 |
50 changes: 50 additions & 0 deletions
50
tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
#!/bin/sh | ||
# description: event trigger - test inter-event histogram trigger onmatch action | ||
|
||
do_reset() { | ||
reset_trigger | ||
echo > set_event | ||
clear_trace | ||
} | ||
|
||
fail() { #msg | ||
do_reset | ||
echo $1 | ||
exit_fail | ||
} | ||
|
||
if [ ! -f set_event ]; then | ||
echo "event tracing is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
if [ ! -f synthetic_events ]; then | ||
echo "synthetic event is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
clear_synthetic_events | ||
reset_tracer | ||
do_reset | ||
|
||
echo "Test create synthetic event" | ||
|
||
echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events | ||
if [ ! -d events/synthetic/wakeup_latency ]; then | ||
fail "Failed to create wakeup_latency synthetic event" | ||
fi | ||
|
||
echo "Test create histogram for synthetic event" | ||
echo "Test histogram variables,simple expression support and onmatch action" | ||
|
||
echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger | ||
echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger | ||
echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger | ||
ping localhost -c 5 | ||
if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then | ||
fail "Failed to create onmatch action inter-event histogram" | ||
fi | ||
|
||
do_reset | ||
|
||
exit 0 |
50 changes: 50 additions & 0 deletions
50
.../testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
#!/bin/sh | ||
# description: event trigger - test inter-event histogram trigger onmatch-onmax action | ||
|
||
do_reset() { | ||
reset_trigger | ||
echo > set_event | ||
clear_trace | ||
} | ||
|
||
fail() { #msg | ||
do_reset | ||
echo $1 | ||
exit_fail | ||
} | ||
|
||
if [ ! -f set_event ]; then | ||
echo "event tracing is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
if [ ! -f synthetic_events ]; then | ||
echo "synthetic event is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
clear_synthetic_events | ||
reset_tracer | ||
do_reset | ||
|
||
echo "Test create synthetic event" | ||
|
||
echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events | ||
if [ ! -d events/synthetic/wakeup_latency ]; then | ||
fail "Failed to create wakeup_latency synthetic event" | ||
fi | ||
|
||
echo "Test create histogram for synthetic event" | ||
echo "Test histogram variables,simple expression support and onmatch-onmax action" | ||
|
||
echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger | ||
echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm):onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger | ||
echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger | ||
ping localhost -c 5 | ||
if [ ! grep -q "ping" events/synthetic/wakeup_latency/hist -o ! grep -q "max:" events/sched/sched_switch/hist]; then | ||
fail "Failed to create onmatch-onmax action inter-event histogram" | ||
fi | ||
|
||
do_reset | ||
|
||
exit 0 |
48 changes: 48 additions & 0 deletions
48
tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
#!/bin/sh | ||
# description: event trigger - test inter-event histogram trigger onmax action | ||
|
||
do_reset() { | ||
reset_trigger | ||
echo > set_event | ||
clear_trace | ||
} | ||
|
||
fail() { #msg | ||
do_reset | ||
echo $1 | ||
exit_fail | ||
} | ||
|
||
if [ ! -f set_event ]; then | ||
echo "event tracing is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
if [ ! -f synthetic_events ]; then | ||
echo "synthetic event is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
clear_synthetic_events | ||
reset_tracer | ||
do_reset | ||
|
||
echo "Test create synthetic event" | ||
|
||
echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events | ||
if [ ! -d events/synthetic/wakeup_latency ]; then | ||
fail "Failed to create wakeup_latency synthetic event" | ||
fi | ||
|
||
echo "Test onmax action" | ||
|
||
echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_waking/trigger | ||
echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger | ||
ping localhost -c 3 | ||
if ! grep -q "max:" events/sched/sched_switch/hist; then | ||
fail "Failed to create onmax action inter-event histogram" | ||
fi | ||
|
||
do_reset | ||
|
||
exit 0 |
54 changes: 54 additions & 0 deletions
54
...sting/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
#!/bin/sh | ||
# description: event trigger - test synthetic event create remove | ||
do_reset() { | ||
reset_trigger | ||
echo > set_event | ||
clear_trace | ||
} | ||
|
||
fail() { #msg | ||
do_reset | ||
echo $1 | ||
exit_fail | ||
} | ||
|
||
if [ ! -f set_event ]; then | ||
echo "event tracing is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
if [ ! -f synthetic_events ]; then | ||
echo "synthetic event is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
clear_synthetic_events | ||
reset_tracer | ||
do_reset | ||
|
||
echo "Test create synthetic event" | ||
|
||
echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events | ||
if [ ! -d events/synthetic/wakeup_latency ]; then | ||
fail "Failed to create wakeup_latency synthetic event" | ||
fi | ||
|
||
reset_trigger | ||
|
||
echo "Test create synthetic event with an error" | ||
echo 'wakeup_latency u64 lat pid_t pid char' > synthetic_events > /dev/null | ||
if [ -d events/synthetic/wakeup_latency ]; then | ||
fail "Created wakeup_latency synthetic event with an invalid format" | ||
fi | ||
|
||
reset_trigger | ||
|
||
echo "Test remove synthetic event" | ||
echo '!wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events | ||
if [ -d events/synthetic/wakeup_latency ]; then | ||
fail "Failed to delete wakeup_latency synthetic event" | ||
fi | ||
|
||
do_reset | ||
|
||
exit 0 |