-
Notifications
You must be signed in to change notification settings - Fork 23
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
kselftests/ftrace: Add hist trigger testcases
Add the hist trigger testcases for ftracetest. This checks the basic histogram trigger behaviors like as; - Histogram trigger itself - Histogram with string key - Histogram with compound keys - Histogram with sort key - Histogram trigger modifiers (execname, hex, syscall) - Multiple histograms on an event - Named histogram - Named histogram on multi events Here is the test result. ---- # ./ftracetest test.d/trigger/*hist*.tc === Ftrace unit tests === [1] event trigger - test histogram modifiers [PASS] [2] event trigger - test histogram trigger [PASS] [3] event trigger - test multiple histogram triggers [PASS] # of passed: 3 # 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/17cb3a3d9eeadc3282645147905455a298e7fbeb.1457029949.git.tom.zanussi@linux.intel.com Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Shuah Khan <shuahkh@osg.samsung.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> [Tom Zanussi: Change multihist test from truncate ('>') to append ('>>')] Reviewed-by: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
- Loading branch information
1 parent
cfa0963
commit 76929ab
Showing
3 changed files
with
221 additions
and
0 deletions.
There are no files selected for viewing
65 changes: 65 additions & 0 deletions
65
tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.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,65 @@ | ||
#!/bin/sh | ||
# description: event trigger - test histogram modifiers | ||
|
||
do_reset() { | ||
reset_trigger | ||
echo > set_event | ||
clear_trace | ||
} | ||
|
||
fail() { #msg | ||
do_reset | ||
echo $1 | ||
exit $FAIL | ||
} | ||
|
||
if [ ! -f set_event -o ! -d events/sched ]; then | ||
echo "event tracing is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
if [ ! -f events/sched/sched_process_fork/trigger ]; then | ||
echo "event trigger is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
reset_tracer | ||
do_reset | ||
|
||
FEATURE=`grep hist events/sched/sched_process_fork/trigger` | ||
if [ -z "$FEATURE" ]; then | ||
echo "hist trigger is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
echo "Test histogram with execname modifier" | ||
|
||
echo 'hist:keys=common_pid.execname' > events/sched/sched_process_fork/trigger | ||
for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done | ||
COMM=`cat /proc/$$/comm` | ||
grep "common_pid: $COMM" events/sched/sched_process_fork/hist > /dev/null || \ | ||
fail "execname modifier on sched_process_fork did not work" | ||
|
||
reset_trigger | ||
|
||
echo "Test histogram with hex modifier" | ||
|
||
echo 'hist:keys=parent_pid.hex' > events/sched/sched_process_fork/trigger | ||
for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done | ||
# Note that $$ is the parent pid. $PID is current PID. | ||
HEX=`printf %x $PID` | ||
grep "parent_pid: $HEX" events/sched/sched_process_fork/hist > /dev/null || \ | ||
fail "hex modifier on sched_process_fork did not work" | ||
|
||
reset_trigger | ||
|
||
echo "Test histogram with syscall modifier" | ||
|
||
echo 'hist:keys=id.syscall' > events/raw_syscalls/sys_exit/trigger | ||
for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done | ||
grep "id: sys_" events/raw_syscalls/sys_exit/hist > /dev/null || \ | ||
fail "syscall modifier on raw_syscalls/sys_exit did not work" | ||
|
||
do_reset | ||
|
||
exit 0 |
83 changes: 83 additions & 0 deletions
83
tools/testing/selftests/ftrace/test.d/trigger/trigger-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,83 @@ | ||
#!/bin/sh | ||
# description: event trigger - test histogram trigger | ||
|
||
do_reset() { | ||
reset_trigger | ||
echo > set_event | ||
clear_trace | ||
} | ||
|
||
fail() { #msg | ||
do_reset | ||
echo $1 | ||
exit $FAIL | ||
} | ||
|
||
if [ ! -f set_event -o ! -d events/sched ]; then | ||
echo "event tracing is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
if [ ! -f events/sched/sched_process_fork/trigger ]; then | ||
echo "event trigger is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
reset_tracer | ||
do_reset | ||
|
||
FEATURE=`grep hist events/sched/sched_process_fork/trigger` | ||
if [ -z "$FEATURE" ]; then | ||
echo "hist trigger is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
echo "Test histogram basic tigger" | ||
|
||
echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger | ||
for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done | ||
grep parent_pid events/sched/sched_process_fork/hist > /dev/null || \ | ||
fail "hist trigger on sched_process_fork did not work" | ||
grep child events/sched/sched_process_fork/hist > /dev/null || \ | ||
fail "hist trigger on sched_process_fork did not work" | ||
|
||
reset_trigger | ||
|
||
echo "Test histogram with compound keys" | ||
|
||
echo 'hist:keys=parent_pid,child_pid' > events/sched/sched_process_fork/trigger | ||
for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done | ||
grep '^{ parent_pid:.*, child_pid:.*}' events/sched/sched_process_fork/hist > /dev/null || \ | ||
fail "compound keys on sched_process_fork did not work" | ||
|
||
reset_trigger | ||
|
||
echo "Test histogram with string key" | ||
|
||
echo 'hist:keys=parent_comm' > events/sched/sched_process_fork/trigger | ||
for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done | ||
COMM=`cat /proc/$$/comm` | ||
grep "parent_comm: $COMM" events/sched/sched_process_fork/hist > /dev/null || \ | ||
fail "string key on sched_process_fork did not work" | ||
|
||
reset_trigger | ||
|
||
echo "Test histogram with sort key" | ||
|
||
echo 'hist:keys=parent_pid,child_pid:sort=child_pid.ascending' > events/sched/sched_process_fork/trigger | ||
for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done | ||
|
||
check_inc() { | ||
while [ $# -gt 1 ]; do | ||
[ $1 -gt $2 ] && return 1 | ||
shift 1 | ||
done | ||
return 0 | ||
} | ||
check_inc `grep -o "child_pid:[[:space:]]*[[:digit:]]*" \ | ||
events/sched/sched_process_fork/hist | cut -d: -f2 ` || | ||
fail "sort param on sched_process_fork did not work" | ||
|
||
do_reset | ||
|
||
exit 0 |
73 changes: 73 additions & 0 deletions
73
tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.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,73 @@ | ||
#!/bin/sh | ||
# description: event trigger - test multiple histogram triggers | ||
|
||
do_reset() { | ||
reset_trigger | ||
echo > set_event | ||
clear_trace | ||
} | ||
|
||
fail() { #msg | ||
do_reset | ||
echo $1 | ||
exit $FAIL | ||
} | ||
|
||
if [ ! -f set_event -o ! -d events/sched ]; then | ||
echo "event tracing is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
if [ ! -f events/sched/sched_process_fork/trigger ]; then | ||
echo "event trigger is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
reset_tracer | ||
do_reset | ||
|
||
FEATURE=`grep hist events/sched/sched_process_fork/trigger` | ||
if [ -z "$FEATURE" ]; then | ||
echo "hist trigger is not supported" | ||
exit_unsupported | ||
fi | ||
|
||
reset_trigger | ||
|
||
echo "Test histogram multiple tiggers" | ||
|
||
echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger | ||
echo 'hist:keys=parent_comm:vals=child_pid' >> events/sched/sched_process_fork/trigger | ||
for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done | ||
grep parent_pid events/sched/sched_process_fork/hist > /dev/null || \ | ||
fail "hist trigger on sched_process_fork did not work" | ||
grep child events/sched/sched_process_fork/hist > /dev/null || \ | ||
fail "hist trigger on sched_process_fork did not work" | ||
COMM=`cat /proc/$$/comm` | ||
grep "parent_comm: $COMM" events/sched/sched_process_fork/hist > /dev/null || \ | ||
fail "string key on sched_process_fork did not work" | ||
|
||
reset_trigger | ||
|
||
echo "Test histogram with its name" | ||
|
||
echo 'hist:name=test_hist:keys=common_pid' > events/sched/sched_process_fork/trigger | ||
for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done | ||
grep test_hist events/sched/sched_process_fork/hist > /dev/null || \ | ||
fail "named event on sched_process_fork did not work" | ||
|
||
echo "Test same named histogram on different events" | ||
|
||
echo 'hist:name=test_hist:keys=common_pid' > events/sched/sched_process_exit/trigger | ||
for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done | ||
grep test_hist events/sched/sched_process_exit/hist > /dev/null || \ | ||
fail "named event on sched_process_fork did not work" | ||
|
||
diffs=`diff events/sched/sched_process_exit/hist events/sched/sched_process_fork/hist | wc -l` | ||
test $diffs -eq 0 || fail "Same name histograms are not same" | ||
|
||
reset_trigger | ||
|
||
do_reset | ||
|
||
exit 0 |