Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/ftrace: Add testcases for dynamic event

Add common testcases for dynamic_events interface.
- Add/remove kprobe events via dynamic_events
- Add/remove synthetic events via dynamic_events
- Selective clear events (clear events other interfaces)
- Genelic clear events ("!LINE" syntax)

Link: http://lkml.kernel.org/r/154140872590.17322.10394440849261743052.stgit@devbox

Reviewed-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Tested-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>

authored by

Masami Hiramatsu and committed by
Steven Rostedt (VMware)
dbc3f042 1ce25e9f

+156
+30
tools/testing/selftests/ftrace/test.d/dynevent/add_remove_kprobe.tc
··· 1 + #!/bin/sh 2 + # SPDX-License-Identifier: GPL-2.0 3 + # description: Generic dynamic event - add/remove kprobe events 4 + 5 + [ -f dynamic_events ] || exit_unsupported 6 + 7 + grep -q "place: \[<module>:\]<symbol>" README || exit_unsupported 8 + grep -q "place (kretprobe): \[<module>:\]<symbol>" README || exit_unsupported 9 + 10 + echo 0 > events/enable 11 + echo > dynamic_events 12 + 13 + PLACE=_do_fork 14 + 15 + echo "p:myevent1 $PLACE" >> dynamic_events 16 + echo "r:myevent2 $PLACE" >> dynamic_events 17 + 18 + grep -q myevent1 dynamic_events 19 + grep -q myevent2 dynamic_events 20 + test -d events/kprobes/myevent1 21 + test -d events/kprobes/myevent2 22 + 23 + echo "-:myevent2" >> dynamic_events 24 + 25 + grep -q myevent1 dynamic_events 26 + ! grep -q myevent2 dynamic_events 27 + 28 + echo > dynamic_events 29 + 30 + clear_trace
+27
tools/testing/selftests/ftrace/test.d/dynevent/add_remove_synth.tc
··· 1 + #!/bin/sh 2 + # SPDX-License-Identifier: GPL-2.0 3 + # description: Generic dynamic event - add/remove synthetic events 4 + 5 + [ -f dynamic_events ] || exit_unsupported 6 + 7 + grep -q "s:\[synthetic/\]" README || exit_unsupported 8 + 9 + echo 0 > events/enable 10 + echo > dynamic_events 11 + 12 + echo "s:latency1 u64 lat; pid_t pid;" >> dynamic_events 13 + echo "s:latency2 u64 lat; pid_t pid;" >> dynamic_events 14 + 15 + grep -q latency1 dynamic_events 16 + grep -q latency2 dynamic_events 17 + test -d events/synthetic/latency1 18 + test -d events/synthetic/latency2 19 + 20 + echo "-:synthetic/latency2" >> dynamic_events 21 + 22 + grep -q latency1 dynamic_events 23 + ! grep -q latency2 dynamic_events 24 + 25 + echo > dynamic_events 26 + 27 + clear_trace
+50
tools/testing/selftests/ftrace/test.d/dynevent/clear_select_events.tc
··· 1 + #!/bin/sh 2 + # SPDX-License-Identifier: GPL-2.0 3 + # description: Generic dynamic event - selective clear (compatibility) 4 + 5 + [ -f dynamic_events ] || exit_unsupported 6 + 7 + grep -q "place: \[<module>:\]<symbol>" README || exit_unsupported 8 + grep -q "place (kretprobe): \[<module>:\]<symbol>" README || exit_unsupported 9 + 10 + grep -q "s:\[synthetic/\]" README || exit_unsupported 11 + 12 + [ -f synthetic_events ] || exit_unsupported 13 + [ -f kprobe_events ] || exit_unsupported 14 + 15 + echo 0 > events/enable 16 + echo > dynamic_events 17 + 18 + PLACE=_do_fork 19 + 20 + setup_events() { 21 + echo "p:myevent1 $PLACE" >> dynamic_events 22 + echo "s:latency1 u64 lat; pid_t pid;" >> dynamic_events 23 + echo "r:myevent2 $PLACE" >> dynamic_events 24 + echo "s:latency2 u64 lat; pid_t pid;" >> dynamic_events 25 + 26 + grep -q myevent1 dynamic_events 27 + grep -q myevent2 dynamic_events 28 + grep -q latency1 dynamic_events 29 + grep -q latency2 dynamic_events 30 + } 31 + 32 + setup_events 33 + echo > synthetic_events 34 + 35 + grep -q myevent1 dynamic_events 36 + grep -q myevent2 dynamic_events 37 + ! grep -q latency1 dynamic_events 38 + ! grep -q latency2 dynamic_events 39 + 40 + echo > dynamic_events 41 + 42 + setup_events 43 + echo > kprobe_events 44 + 45 + ! grep -q myevent1 dynamic_events 46 + ! grep -q myevent2 dynamic_events 47 + grep -q latency1 dynamic_events 48 + grep -q latency2 dynamic_events 49 + 50 + echo > dynamic_events
+49
tools/testing/selftests/ftrace/test.d/dynevent/generic_clear_event.tc
··· 1 + #!/bin/sh 2 + # SPDX-License-Identifier: GPL-2.0 3 + # description: Generic dynamic event - generic clear event 4 + 5 + [ -f dynamic_events ] || exit_unsupported 6 + 7 + grep -q "place: \[<module>:\]<symbol>" README || exit_unsupported 8 + grep -q "place (kretprobe): \[<module>:\]<symbol>" README || exit_unsupported 9 + 10 + grep -q "s:\[synthetic/\]" README || exit_unsupported 11 + 12 + echo 0 > events/enable 13 + echo > dynamic_events 14 + 15 + PLACE=_do_fork 16 + 17 + setup_events() { 18 + echo "p:myevent1 $PLACE" >> dynamic_events 19 + echo "s:latency1 u64 lat; pid_t pid;" >> dynamic_events 20 + echo "r:myevent2 $PLACE" >> dynamic_events 21 + echo "s:latency2 u64 lat; pid_t pid;" >> dynamic_events 22 + 23 + grep -q myevent1 dynamic_events 24 + grep -q myevent2 dynamic_events 25 + grep -q latency1 dynamic_events 26 + grep -q latency2 dynamic_events 27 + } 28 + 29 + setup_events 30 + 31 + echo "!p:myevent1 $PLACE" >> dynamic_events 32 + ! grep -q myevent1 dynamic_events 33 + grep -q myevent2 dynamic_events 34 + grep -q latency1 dynamic_events 35 + grep -q latency2 dynamic_events 36 + 37 + echo "!s:latency1 u64 lat; pid_t pid;" >> dynamic_events 38 + grep -q myevent2 dynamic_events 39 + ! grep -q latency1 dynamic_events 40 + grep -q latency2 dynamic_events 41 + 42 + echo "!r:myevent2 $PLACE" >> dynamic_events 43 + ! grep -q myevent2 dynamic_events 44 + grep -q latency2 dynamic_events 45 + 46 + echo "!s:latency2 u64 lat; pid_t pid;" >> dynamic_events 47 + ! grep -q latency2 dynamic_events 48 + 49 + echo > dynamic_events