Skip to content

Commit

Permalink
selftests/ftrace: Support ":tracer" suffix for requires
Browse files Browse the repository at this point in the history
Add ":tracer" suffix support for the requires list, so that
the testcase can list up the required tracer (e.g. function)
to the requires list.

For example, if the testcase requires function_graph tracer,
it can write requires list as below instead of checking
available_tracers.

# requires: function_graph:tracer

Signed-off-by: Masami Hiramatsu <[email protected]>
Reviewed-by: Tom Zanussi <[email protected]>
Signed-off-by: Shuah Khan <[email protected]>
  • Loading branch information
mhiramat authored and shuahkh committed Jun 16, 2020
1 parent 74e6072 commit 305c838
Show file tree
Hide file tree
Showing 13 changed files with 21 additions and 59 deletions.
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: ftrace - function graph filters with stack tracer
# requires: stack_trace set_ftrace_filter
# requires: stack_trace set_ftrace_filter function_graph:tracer

# Make sure that function graph filtering works, and is not
# affected by other tracers enabled (like stack tracer)

if ! grep -q function_graph available_tracers; then
echo "no function graph tracer configured"
exit_unsupported
fi

do_reset() {
if [ -e /proc/sys/kernel/stack_tracer_enabled ]; then
echo 0 > /proc/sys/kernel/stack_tracer_enabled
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: ftrace - function graph filters
# requires: set_ftrace_filter
# requires: set_ftrace_filter function_graph:tracer

# Make sure that function graph filtering works

if ! grep -q function_graph available_tracers; then
echo "no function graph tracer configured"
exit_unsupported
fi

fail() { # msg
echo $1
exit_fail
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: ftrace - function glob filters
# requires: set_ftrace_filter
# requires: set_ftrace_filter function:tracer

# Make sure that function glob matching filter works.

if ! grep -q function available_tracers; then
echo "no function tracer configured"
exit_unsupported
fi

disable_tracing
clear_trace

Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: ftrace - function pid notrace filters
# requires: set_ftrace_notrace_pid set_ftrace_filter
# requires: set_ftrace_notrace_pid set_ftrace_filter function:tracer
# flags: instance

# Make sure that function pid matching filter with notrace works.

if ! grep -q function available_tracers; then
echo "no function tracer configured"
exit_unsupported
fi

do_function_fork=1

if [ ! -f options/function-fork ]; then
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: ftrace - function pid filters
# requires: set_ftrace_pid set_ftrace_filter
# requires: set_ftrace_pid set_ftrace_filter function:tracer
# flags: instance

# Make sure that function pid matching filter works.
# Also test it on an instance directory

if ! grep -q function available_tracers; then
echo "no function tracer configured"
exit_unsupported
fi

do_function_fork=1

if [ ! -f options/function-fork ]; then
Expand Down
6 changes: 1 addition & 5 deletions tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: ftrace - function trace with cpumask
# requires: function:tracer

if ! which nproc ; then
nproc() {
Expand All @@ -15,11 +16,6 @@ if [ $NP -eq 1 ] ;then
exit_unresolved
fi

if ! grep -q "function" available_tracers ; then
echo "Function trace is not enabled"
exit_unsupported
fi

ORIG_CPUMASK=`cat tracing_cpumask`

do_reset() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: ftrace - function profiler with function tracing
# requires: function_profile_enabled set_ftrace_filter
# requires: function_profile_enabled set_ftrace_filter function_graph:tracer

# 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
Expand All @@ -14,10 +14,6 @@
# 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

fail() { # mesg
echo $1
Expand Down
10 changes: 8 additions & 2 deletions tools/testing/selftests/ftrace/test.d/functions
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,15 @@ initialize_ftrace() { # Reset ftrace to initial-state
enable_tracing
}

check_requires() { # Check required files
check_requires() { # Check required files and tracers
for i in $* ; do
if [ ! -e $i ]; then
t=${i%:tracer}
if [ $t != $i ]; then
if ! grep -wq $t available_tracers ; then
echo "Required tracer $t is not configured."
exit_unsupported
fi
elif [ ! -e $i ]; then
echo "Required feature interface $i doesn't exist."
exit_unsupported
fi
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Kprobe dynamic event with function tracer
# requires: kprobe_events stack_trace_filter

grep "function" available_tracers || exit_unsupported # this is configurable
# requires: kprobe_events stack_trace_filter function:tracer

# prepare
echo nop > current_tracer
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: test for the preemptirqsoff tracer
# requires: preemptoff:tracer irqsoff:tracer

MOD=preemptirq_delay_test

Expand All @@ -27,9 +28,6 @@ unres() { #msg
modprobe $MOD || unres "$MOD module not available"
rmmod $MOD

grep -q "preemptoff" available_tracers || unsup "preemptoff tracer not enabled"
grep -q "irqsoff" available_tracers || unsup "irqsoff tracer not enabled"

reset_tracer

# Simulate preemptoff section for half a second couple of times
Expand Down
3 changes: 2 additions & 1 deletion tools/testing/selftests/ftrace/test.d/template
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: %HERE DESCRIBE WHAT THIS DOES%
# requires: %HERE LIST THE REQUIRED FILES%
# requires: %HERE LIST THE REQUIRED FILES OR TRACERS%
# The required tracer needs :tracer suffix, e.g. function:tracer
# you have to add ".tc" extention for your testcase file
# Note that all tests are run with "errexit" option.

Expand Down
6 changes: 1 addition & 5 deletions tools/testing/selftests/ftrace/test.d/tracer/wakeup.tc
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Test wakeup tracer
# requires: wakeup:tracer

if ! which chrt ; then
echo "chrt is not found. This test requires nice command."
exit_unresolved
fi

if ! grep -wq "wakeup" available_tracers ; then
echo "wakeup tracer is not supported"
exit_unsupported
fi

echo wakeup > current_tracer
echo 1 > tracing_on
echo 0 > tracing_max_latency
Expand Down
6 changes: 1 addition & 5 deletions tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Test wakeup RT tracer
# requires: wakeup_rt:tracer

if ! which chrt ; then
echo "chrt is not found. This test requires chrt command."
exit_unresolved
fi

if ! grep -wq "wakeup_rt" available_tracers ; then
echo "wakeup_rt tracer is not supported"
exit_unsupported
fi

echo wakeup_rt > current_tracer
echo 1 > tracing_on
echo 0 > tracing_max_latency
Expand Down

0 comments on commit 305c838

Please sign in to comment.