#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: trace_marker trigger - test histogram with synthetic event
# flags:

do_reset() {
    reset_trigger
    echo > set_event
    echo > synthetic_events
    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 events not supported"
    exit_unsupported
fi

if [ ! -d events/ftrace/print ]; then
    echo "event trace_marker is not supported"
    exit_unsupported
fi

if [ ! -f events/ftrace/print/trigger ]; then
    echo "event trigger is not supported"
    exit_unsupported
fi

if [ ! -f events/ftrace/print/hist ]; then
    echo "hist trigger is not supported"
    exit_unsupported
fi

do_reset

echo "Test histogram trace_marker to trace_marker latency histogram trigger"

echo 'latency u64 lat' > synthetic_events
echo 'hist:keys=common_pid:ts0=common_timestamp.usecs if buf == "start"' > events/ftrace/print/trigger
echo 'hist:keys=common_pid:lat=common_timestamp.usecs-$ts0:onmatch(ftrace.print).latency($lat) if buf == "end"' >> events/ftrace/print/trigger
echo 'hist:keys=common_pid,lat:sort=lat' > events/synthetic/latency/trigger
echo -n "start" > trace_marker
echo -n "end" > trace_marker

cnt=`grep 'hitcount: *1$' events/ftrace/print/hist | wc -l`

if [ $cnt -ne 2 ]; then
    fail "hist trace_marker trigger did not trigger correctly"
fi

grep 'hitcount: *1$' events/synthetic/latency/hist > /dev/null || \
    fail "hist trigger did not trigger "

do_reset

exit 0
