#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: ftrace - function profiler with function tracing

# There was a bug after a rewrite of the ftrace infrastructure that
# caused the function_profiler not to be able to run with the function
# tracer, because the function_profiler used the function_graph tracer
# and it was assumed the two could not run simultaneously.
#
# There was another related bug where the solution to the first bug
# broke the way filtering of the function tracer worked.
#
# This test triggers those bugs on those kernels.
#
# We need function_graph and profiling to to run this test
if ! grep -q function_graph available_tracers; then
    echo "no function graph tracer configured"
    exit_unsupported;
fi

if [ ! -f set_ftrace_filter ]; then
    echo "set_ftrace_filter not found? Is dynamic ftrace not set?"
    exit_unsupported
fi

if [ ! -f function_profile_enabled ]; then
    echo "function_profile_enabled not found, function profiling enabled?"
    exit_unsupported
fi

fail() { # mesg
    reset_tracer
    echo > set_ftrace_filter
    echo $1
    exit $FAIL
}

echo "Testing function tracer with profiler:"
echo "enable function tracer"
echo function > current_tracer
echo "enable profiler"
echo 1 > function_profile_enabled

sleep 1

echo "Now filter on just schedule"
echo '*schedule' > set_ftrace_filter
clear_trace

echo "Now disable function profiler"
echo 0 > function_profile_enabled

sleep 1

# make sure only schedule functions exist

echo "testing if only schedule is being traced"
if grep -v -e '^#' -e 'schedule' trace; then
	fail "more than schedule was found"
fi

echo "Make sure schedule was traced"
if ! grep -e 'schedule' trace > /dev/null; then
	cat trace
	fail "can not find schedule in trace"
fi

echo > set_ftrace_filter
clear_trace

sleep 1

echo "make sure something other than scheduler is being traced"
if ! grep -v -e '^#' -e 'schedule' trace > /dev/null; then
	cat trace
	fail "no other functions besides schedule was found"
fi

reset_tracer

exit 0
