ftracetest: Updates for 3.19
Steven Rostedt
maintainercover ftracetest: Updates for 3.19
git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git
for-next
Head SHA1: 815b18ea66d6fb67a3534edf68dfa23bdcec0485
Heiko Carstens (1):
ftracetest: Sort testcases
Namhyung Kim (3):
ftracetest: Use logfile name supported by busybox's mktemp
ftracetest: Clear trace buffer after running kprobe testcases
ftracetest: Add basic event tracing test cases
Steven Rostedt (Red Hat) (2):
ftracetest: Add functions file that holds helper functions
ftracetest: Add a couple of ftrace test cases
----
tools/testing/selftests/ftrace/ftracetest | 7 +- .../selftests/ftrace/test.d/00basic/basic4.tc | 5 ++ .../selftests/ftrace/test.d/event/event-enable.tc | 53 +++++++++++++ .../ftrace/test.d/event/subsystem-enable.tc | 53 +++++++++++++ .../ftrace/test.d/event/toplevel-enable.tc | 47 ++++++++++++ .../ftrace/test.d/ftrace/fgraph-filter-stack.tc | 89 ++++++++++++++++++++++ .../ftrace/test.d/ftrace/fgraph-filter.tc | 52 +++++++++++++ .../ftrace/test.d/ftrace/func_profiler.tc | 80 +++++++++++++++++++ tools/testing/selftests/ftrace/test.d/functions | 16 ++++ .../ftrace/test.d/kprobe/add_and_remove.tc | 1 + .../selftests/ftrace/test.d/kprobe/busy_check.tc | 1 + .../selftests/ftrace/test.d/kprobe/kprobe_args.tc | 1 + .../ftrace/test.d/kprobe/kretprobe_args.tc | 1 + 13 files changed, 404 insertions(+), 2 deletions(-)
Steven Rostedt
maintainerPATCH 1/6 ftracetest: Sort testcases
From: Heiko Carstens <[email protected]>
Make sure the order of the executed testcases is always the same.
--- tools/testing/selftests/ftrace/ftracetest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/testing/selftests/ftrace/ftracetest +1 -1
@@ -37,7 +37,7 @@ abspath() { } find_testcases() { #directory - echo `find $1 -name \*.tc` + echo `find $1 -name \*.tc | sort` } parse_opts() { # opts
Signature · 1 line
2.1.1
Steven Rostedt
maintainerPATCH 2/6 ftracetest: Add functions file that holds helper functions
In reply to Steven RostedtFrom: "Steven Rostedt (Red Hat)" <[email protected]>
Created the file tools/testing/ftrace/test.d/functions that will hold helper functions.
Current helper functions include:
Add clear_trace() helper to reset the trace file
Used as a descriptive name to show that "echo > trace" is clearing the trace file.
Add disable/enable_tracing() helper calls
Add calls that disable and enable tracing respectively by echoing 0 or 1 into tracing_on.
Add helper reset_tracer() function
Add a helper function reset_tracer() that will clear the current_tracer (echo nop > current_tracer).
--- tools/testing/selftests/ftrace/ftracetest | 3 +++ tools/testing/selftests/ftrace/test.d/functions | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/functions
tools/testing/selftests/ftrace/ftracetest +3 -0
@@ -235,6 +235,9 @@ run_test() { # testfile fi } +# load in the helper functions +. $TEST_DIR/functions + # Main loop for t in $TEST_CASES; do run_test $t
tools/testing/selftests/ftrace/test.d/functions new file +16 -0
@@ -0,0 +1,16 @@ + +clear_trace() { # reset trace output + echo > trace +} + +disable_tracing() { # stop trace recording + echo 0 > tracing_on +} + +enable_tracing() { # start trace recording + echo 1 > tracing_on +} + +reset_tracer() { # reset the current tracer + echo nop > current_tracer +}
Signature · 1 line
2.1.1
Steven Rostedt
maintainerPATCH 3/6 ftracetest: Add a couple of ftrace test cases
In reply to Steven RostedtFrom: "Steven Rostedt (Red Hat)" <[email protected]>
Added three test cases to get the feel of adding tests to ftracetest. The three cases are:
function profiling test, to make sure function profiling still works
with function tracing (was a regression)
function graph filter test to make sure that function graph filtering works.
function graph filter with stack tracing test to make sure that the function
graph filter does filter and also continues to filter when another function tracer is running (like the stack tracer)
--- .../ftrace/test.d/ftrace/fgraph-filter-stack.tc | 89 ++++++++++++++++++++++ .../ftrace/test.d/ftrace/fgraph-filter.tc | 52 +++++++++++++ .../ftrace/test.d/ftrace/func_profiler.tc | 80 +++++++++++++++++++ 3 files changed, 221 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter.tc create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_profiler.tc
tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc new file +89 -0
@@ -0,0 +1,89 @@ +#!/bin/sh +# description: ftrace - function graph filters with stack 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 + +if [ ! -f set_ftrace_filter ]; then + echo "set_ftrace_filter not found? Is dynamic ftrace not set?" + exit_unsupported +fi + +do_reset() { + reset_tracer + echo 0 > /proc/sys/kernel/stack_tracer_enabled + enable_tracing + clear_trace + echo > set_ftrace_filter +} + +fail() { # msg + do_reset + echo $1 + exit -1 +} + +disable_tracing +clear_trace; + +# filter something, schedule is always good +if ! echo "schedule" > set_ftrace_filter; then + # test for powerpc 64 + if ! echo ".schedule" > set_ftrace_filter; then + fail "can not enable schedule filter" + fi +fi + +echo function_graph > current_tracer + +if [ ! -f stack_trace ]; then + echo "Stack tracer not configured" + do_reset + exit_unsupported; +fi + +echo "Now testing with stack tracer" + +echo 1 > /proc/sys/kernel/stack_tracer_enabled + +disable_tracing +clear_trace +enable_tracing +sleep 1 + +count=`cat trace | grep '()' | grep -v schedule | wc -l` + +if [ $count -ne 0 ]; then + fail "Graph filtering not working with stack tracer?" +fi + +# Make sure we did find something +count=`cat trace | grep 'schedule()' | wc -l` +if [ $count -eq 0 ]; then + fail "No schedule traces found?" +fi + +echo 0 > /proc/sys/kernel/stack_tracer_enabled +clear_trace +sleep 1 + + +count=`cat trace | grep '()' | grep -v schedule | wc -l` + +if [ $count -ne 0 ]; then + fail "Graph filtering not working after stack tracer disabled?" +fi + +count=`cat trace | grep 'schedule()' | wc -l` +if [ $count -eq 0 ]; then + fail "No schedule traces found?" +fi + +do_reset + +exit 0
tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter.tc new file +52 -0
52 lines not on this page · raw message
tools/testing/selftests/ftrace/test.d/ftrace/func_profiler.tc new file +80 -0
80 lines not on this page · raw message
Signature · 1 line
2.1.1
Steven Rostedt
maintainerPATCH 4/6 ftracetest: Use logfile name supported by busyboxs mktemp
In reply to Steven RostedtFrom: Namhyung Kim <[email protected]>
When I run the ftracetest in a busybox docker container, I saw following error. Make the logfile template to comply with busybox's mktemp. It also keep the logfiles under the logs directory.
# /linux/tools/testing/selftests/ftrace/ftracetest === Ftrace unit tests === mktemp: unrecognized option `--tmpdir=/linux/tools/testing/selftests/ftrace/logs/20141106-003624/' BusyBox v1.22.1 (2014-05-22 23:22:11 UTC) multi-call binary.
Usage: mktemp [-dt] [-p DIR] [TEMPLATE]
Create a temporary file with name based on TEMPLATE and print its name. TEMPLATE must end with XXXXXX (e.g. [/dir/]nameXXXXXX). Without TEMPLATE, -t tmp.XXXXXX is assumed.
-d Make directory, not file -q Fail silently on errors -t Prepend base directory name to TEMPLATE
-p DIR Use DIR as a base directory (implies -t)
-u Do not create anything; print a name
Base directory is: -p DIR, else $TMPDIR, else /tmp
[1] Basic trace file check/linux/tools/testing/selftests/ftrace/ftracetest: line 244: can't create : nonexistent directory /linux/tools/testing/selftests/ftrace/ftracetest: line 244: can't create : nonexistent directory
[FAIL]
--- tools/testing/selftests/ftrace/ftracetest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/testing/selftests/ftrace/ftracetest +1 -1
@@ -218,7 +218,7 @@ trap 'SIG_RESULT=$XFAIL' $SIG_XFAIL # Run one test case run_test() { # testfile local testname=`basename $1` - local testlog=`mktemp --tmpdir=$LOG_DIR ${testname}-XXXXXX.log` + local testlog=`mktemp $LOG_DIR/${testname}-log.XXXXXX` testcase $1 echo "execute: "$1 > $testlog SIG_RESULT=0
Signature · 1 line
2.1.1
Steven Rostedt
maintainerPATCH 5/6 ftracetest: Clear trace buffer after running kprobe testcases
In reply to Steven RostedtFrom: Namhyung Kim <[email protected]>
The kprobe testcases create, use and delete dynamic events during the test but didn't clear the trace buffer so it'll leave the result after it finishes.
# ./ftracetest ...
# cat trace
# tracer: nop
#
# entries-in-buffer/entries-written: 2/2 #P:12
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
ftracetest-26474 [009] d..1 79417.143782: Unknown type 1099
ftracetest-26498 [009] d..1 79417.208034: Unknown type 1101--- tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc | 1 + tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc | 1 + tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc | 1 + tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc | 1 + 4 files changed, 4 insertions(+)
tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc +1 -0
@@ -9,3 +9,4 @@ echo p:myevent do_fork > kprobe_events grep myevent kprobe_events test -d events/kprobes/myevent echo > kprobe_events +clear_trace
tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc +1 -0
@@ -11,3 +11,4 @@ echo 1 > events/kprobes/myevent/enable echo > kprobe_events && exit 1 # this must fail echo 0 > events/kprobes/myevent/enable echo > kprobe_events # this must succeed +clear_trace
tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc +1 -0
@@ -12,5 +12,6 @@ echo 1 > events/kprobes/testprobe/enable ( echo "forked") echo 0 > events/kprobes/testprobe/enable echo "-:testprobe" >> kprobe_events +clear_trace test -d events/kprobes/testprobe && exit 1 || exit 0
tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc +1 -0
@@ -12,4 +12,5 @@ echo 1 > events/kprobes/testprobe2/enable ( echo "forked") echo 0 > events/kprobes/testprobe2/enable echo '-:testprobe2' >> kprobe_events +clear_trace test -d events/kprobes/testprobe2 && exit 1 || exit 0
Signature · 1 line
2.1.1
Steven Rostedt
maintainerPATCH 6/6 ftracetest: Add basic event tracing test cases
In reply to Steven RostedtFrom: Namhyung Kim <[email protected]>
This patch adds basic event tracing tests like enable/disable with top-level, subsystem-level and individual event files.
# ./ftracetest === Ftrace unit tests === [1] Basic trace file check [PASS] [2] Basic trace clock test [PASS] [3] Basic event tracing check [PASS] [4] Basic test for tracers [PASS] [5] event tracing - enable/disable with top level files [PASS] [6] event tracing - enable/disable with subsystem level files [PASS] [7] event tracing - enable/disable with event level files [PASS] [8] ftrace - function graph filters [PASS] [9] ftrace - function profiler with function tracing [PASS] [10] ftrace - function graph filters with stack tracer [PASS] [11] Kretprobe dynamic event with arguments [PASS] [12] Kprobe dynamic event - busy event check [PASS] [13] Kprobe dynamic event with arguments [PASS] [14] Kprobe dynamic event - adding and removing [PASS]
# of passed: 14 # of failed: 0 # of unresolved: 0 # of untested: 0 # of unsupported: 0 # of xfailed: 0 # of undefined(test bug): 0
--- .../selftests/ftrace/test.d/00basic/basic4.tc | 5 ++ .../selftests/ftrace/test.d/event/event-enable.tc | 53 ++++++++++++++++++++++ .../ftrace/test.d/event/subsystem-enable.tc | 53 ++++++++++++++++++++++ .../ftrace/test.d/event/toplevel-enable.tc | 47 +++++++++++++++++++ 4 files changed, 158 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/basic4.tc create mode 100644 tools/testing/selftests/ftrace/test.d/event/event-enable.tc create mode 100644 tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc create mode 100644 tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc
tools/testing/selftests/ftrace/test.d/00basic/basic4.tc new file +5 -0
@@ -0,0 +1,5 @@ +#!/bin/sh +# description: Basic event tracing check +test -f available_events -a -f set_event -a -d events +# check scheduler events are available +grep -q sched available_events && exit 0 || exit -1
tools/testing/selftests/ftrace/test.d/event/event-enable.tc new file +53 -0
53 lines not on this page · raw message
tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc new file +53 -0
53 lines not on this page · raw message
tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc new file +47 -0
47 lines not on this page · raw message
Signature · 1 line
2.1.1