GNU Linux-libre 4.19.295-gnu1
[releases.git] / tools / testing / selftests / ftrace / test.d / trigger / trigger-trace-marker-synthetic.tc
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0
3 # description: trace_marker trigger - test histogram with synthetic 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 [ ! -f events/ftrace/print/trigger ]; then
35     echo "event trigger is not supported"
36     exit_unsupported
37 fi
38
39 if [ ! -f events/ftrace/print/hist ]; then
40     echo "hist trigger is not supported"
41     exit_unsupported
42 fi
43
44 do_reset
45
46 echo "Test histogram trace_marker to trace_marker latency histogram trigger"
47
48 echo 'latency u64 lat' > synthetic_events
49 echo 'hist:keys=common_pid:ts0=common_timestamp.usecs if buf == "start"' > events/ftrace/print/trigger
50 echo 'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat) if buf == "end"' >> events/ftrace/print/trigger
51 echo 'hist:keys=common_pid,lat:sort=lat' > events/synthetic/latency/trigger
52 echo -n "start" > trace_marker
53 echo -n "end" > trace_marker
54
55 cnt=`grep 'hitcount: *1$' events/ftrace/print/hist | wc -l`
56
57 if [ $cnt -ne 2 ]; then
58     fail "hist trace_marker trigger did not trigger correctly"
59 fi
60
61 grep 'hitcount: *1$' events/synthetic/latency/hist > /dev/null || \
62     fail "hist trigger did not trigger "
63
64 do_reset
65
66 exit 0