#!/bin/sh
# 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
