#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: trace_marker trigger - test snapshot trigger
# flags: instance

do_reset() {
    reset_trigger
    echo > set_event
    echo 0 > snapshot
    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 snapshot ]; then
    echo "snapshot is 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

test_trace() {
    file=$1
    x=$2

    cat $file | while read line; do
	comment=`echo $line | sed -e 's/^#//'`
	if [ "$line" != "$comment" ]; then
	    continue
	fi
	echo "testing $line for >$x<"
	match=`echo $line | sed -e "s/>$x<//"`
	if [ "$line" == "$match" ]; then
	    fail "$line does not have >$x< in it"
	fi
	let x=$x+2
    done
}

do_reset

echo "Test snapshot trace_marker tigger"

echo 'snapshot' > events/ftrace/print/trigger

# make sure the snapshot is allocated

grep -q 'Snapshot is allocated' snapshot

for i in `seq 1 10` ; do echo "hello >$i<" > trace_marker; done

test_trace trace 1
test_trace snapshot 2

do_reset

exit 0
