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

tracing/selftest: Add test to test hist trigger between kernel event and trace_marker

Add a test that tests a trigger that is initiated by a kernel event
(sched_waking) and compared to a write to the trace_marker.

Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Reviewed-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>

+68
+68
tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
··· 1 + #!/bin/sh 2 + # SPDX-License-Identifier: GPL-2.0 3 + # description: trace_marker trigger - test histogram with synthetic event against kernel event 4 + # flags: 5 + 6 + do_reset() { 7 + reset_trigger 8 + echo > set_event 9 + echo > synthetic_events 10 + clear_trace 11 + } 12 + 13 + fail() { #msg 14 + do_reset 15 + echo $1 16 + exit_fail 17 + } 18 + 19 + if [ ! -f set_event ]; then 20 + echo "event tracing is not supported" 21 + exit_unsupported 22 + fi 23 + 24 + if [ ! -f synthetic_events ]; then 25 + echo "synthetic events not supported" 26 + exit_unsupported 27 + fi 28 + 29 + if [ ! -d events/ftrace/print ]; then 30 + echo "event trace_marker is not supported" 31 + exit_unsupported 32 + fi 33 + 34 + if [ ! -d events/sched/sched_waking ]; then 35 + echo "event sched_waking is not supported" 36 + exit_unsupported 37 + fi 38 + 39 + if [ ! -f events/ftrace/print/trigger ]; then 40 + echo "event trigger is not supported" 41 + exit_unsupported 42 + fi 43 + 44 + if [ ! -f events/ftrace/print/hist ]; then 45 + echo "hist trigger is not supported" 46 + exit_unsupported 47 + fi 48 + 49 + do_reset 50 + 51 + echo "Test histogram kernel event to trace_marker latency histogram trigger" 52 + 53 + echo 'latency u64 lat' > synthetic_events 54 + echo 'hist:keys=pid:ts0=common_timestamp.usecs' > events/sched/sched_waking/trigger 55 + echo 'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).latency($lat)' > events/ftrace/print/trigger 56 + echo 'hist:keys=common_pid,lat:sort=lat' > events/synthetic/latency/trigger 57 + sleep 1 58 + echo "hello" > trace_marker 59 + 60 + grep 'hitcount: *1$' events/ftrace/print/hist > /dev/null || \ 61 + fail "hist trigger did not trigger correct times on trace_marker" 62 + 63 + grep 'hitcount: *1$' events/synthetic/latency/hist > /dev/null || \ 64 + fail "hist trigger did not trigger " 65 + 66 + do_reset 67 + 68 + exit 0