Hello,
Here is the 2nd version of the series for improving ftracetest testcase using gcov/lcov. From previous version, I've added 6 new testcases for some tracers and ftrace basic features.
With this series, ftracetest coverage under kernel/trace/ is improved as below. (Note that this kernel enables ftrace startup tests)
Without new testcases Lines: 10563 17268 61.2 % Functions: 1114 1785 62.4 %
With new testcases Lines: 11703 17268 67.8 % Functions: 1262 1785 70.7 %
Of course we don't need to make it 100%, because ftracetest is a function/specification test, and there are functions and lines which never be called (like critical error detection :) ). Also, ftrace has some amount of code for perf and bpf subsystem which should be tested by perf/bpf tests. However, GCOV(LCOV) gives us a good insight into which functions are covered or not covered by the test cases. We can find which functions are not tested yet from the coverage information.
This series has some ftracetest framework improvements too, which are for debugging ftracetest itself.
Tracing/Gcov-kernel: - Add CONFIG_GCOV_PROFILE_FRACE, which enables gcov profiling only on tracing subsystem (under kernel/trace/). This may not needed for everyone (like a debugging feature). So it can be dropped anyway.
Ftracetest framework improvements: - Add --stop-fail for detecting failure soon. - Add --console for interactively debugging a testcase by shell. - Add testcase-number prefix to logfile for finding log easier. - Improve general init function - Call general init function after all testcases. - Remove init/cleanup code from all testcase (since general init function will fixed it up)
Testcase fixes: - Fix to check $comm availability. - Make checkbashisms clean
Testcase improvements: - Use loopback address instead of localhost - Improve kprobe on module testcase to load/unload module - Improve kprobe testcase to check log data - Improve kretprobe testcase to check log data - Test kprobe-event argument with various bitsize - Check set_event_pid result
Adding testcases: - Add kprobe event with $comm argument testcase - Add kprobe profile testcase - Add kprobe-event with symbol argument testcase - Add nop tracer testcase - Add trace_printk sample module testcase - Add ringbuffer size changing testcase - Add function profiling statistics testcase - Add max stack tracer testcase - Add function filter on module testcase - Add trace_pipe testcase - Add stacktrace ftrace filter command testcase - Add wakeup tracer testcase - Add wakeup_rt tracer testcase - Add blktrace testcase - Add ftrace cpumask testcase - Add ftrace output format testcase
TBD: Following testcase improvements are remaining. - Checking of various supported types (like u8, u64 etc.) testcases
Thank you,
---
Masami Hiramatsu (32): tracing: Allow gcov profiling on only ftrace subsystem selftests/ftrace: Add --stop-fail hidden option for debug selftests/ftrace: Add --console hidden option selftests/ftrace: Add case number prefix to logfile selftests/ftrace: More initialize features in initialize_ftrace selftests/ftrace: Add SPDX License Identifier to template selftests/ftrace: Cleanup ftrace after running test selftests/ftrace: Remove unneeded per-test init/cleanup ftrace selftests/ftrace: Fix to test kprobe $comm arg only if available selftests/ftrace: Fix checkbashisms errors selftests/ftrace: Use loopback address instead of localhost selftests/ftrace: Improve kprobe on module testcase to load/unload module selftests/ftrace: Improve kprobe testcase to check log data selftests/ftrace: Improve kretprobe testcase to check log data selftests/ftrace: Test kprobe-event argument with various bitsize selftests/ftrace: Check set_event_pid result selftests/ftrace: Add kprobe event with $comm argument testcase selftests/ftrace: Add kprobe profile testcase selftests/ftrace: Add a testcase for nop tracer selftests/ftrace: Add kprobe-event with symbol argument test selftests/ftrace: Add trace_printk sample module test selftests/ftrace: Add ringbuffer size changing testcase selftests/ftrace: Add function profiling stat testcase selftests/ftrace: Add max stack tracer testcase selftests/ftrace: Add function filter on module testcase selftests/ftrace: Add trace_pipe testcase selftests/ftrace: Add stacktrace ftrace filter command testcase selftests/ftrace: Add wakeup tracer testcase selftests/ftrace: Add wakeup_rt tracer testcase selftests/ftrace: Add ftrace cpumask testcase selftests/ftrace: Add output format testcase selftests/ftrace: Add blktrace testcase
kernel/trace/Kconfig | 13 +++ kernel/trace/Makefile | 5 + tools/testing/selftests/ftrace/config | 7 ++ tools/testing/selftests/ftrace/ftracetest | 32 ++++++- .../ftrace/test.d/00basic/print_format.tc | 51 +++++++++++ .../ftrace/test.d/00basic/ringbuffer_size.tc | 21 +++++ .../selftests/ftrace/test.d/00basic/trace_pipe.tc | 15 +++ .../selftests/ftrace/test.d/event/event-enable.tc | 8 -- .../selftests/ftrace/test.d/event/event-pid.tc | 6 + .../ftrace/test.d/event/subsystem-enable.tc | 8 -- .../ftrace/test.d/event/toplevel-enable.tc | 8 -- .../selftests/ftrace/test.d/event/trace_printk.tc | 27 ++++++ .../ftrace/test.d/ftrace/fgraph-filter-stack.tc | 4 - .../ftrace/test.d/ftrace/fgraph-filter.tc | 9 -- .../ftrace/test.d/ftrace/func-filter-pid.tc | 8 -- .../ftrace/test.d/ftrace/func-filter-stacktrace.tc | 12 +++ .../selftests/ftrace/test.d/ftrace/func_cpumask.tc | 34 +++++++ .../ftrace/test.d/ftrace/func_event_triggers.tc | 3 - .../ftrace/test.d/ftrace/func_mod_trace.tc | 24 +++++ .../ftrace/test.d/ftrace/func_profile_stat.tc | 23 +++++ .../ftrace/test.d/ftrace/func_profiler.tc | 4 - .../ftrace/test.d/ftrace/func_set_ftrace_file.tc | 13 --- .../ftrace/test.d/ftrace/func_stack_tracer.tc | 39 +++++++++ .../test.d/ftrace/func_traceonoff_triggers.tc | 11 -- tools/testing/selftests/ftrace/test.d/functions | 5 + .../ftrace/test.d/kprobe/add_and_remove.tc | 3 - .../selftests/ftrace/test.d/kprobe/busy_check.tc | 3 - .../selftests/ftrace/test.d/kprobe/kprobe_args.tc | 8 +- .../ftrace/test.d/kprobe/kprobe_args_comm.tc | 17 ++++ .../ftrace/test.d/kprobe/kprobe_args_string.tc | 5 - .../ftrace/test.d/kprobe/kprobe_args_symbol.tc | 39 +++++++++ .../ftrace/test.d/kprobe/kprobe_args_syntax.tc | 8 +- .../ftrace/test.d/kprobe/kprobe_args_type.tc | 52 +++++++---- .../ftrace/test.d/kprobe/kprobe_eventname.tc | 5 - .../ftrace/test.d/kprobe/kprobe_ftrace.tc | 9 -- .../ftrace/test.d/kprobe/kprobe_module.tc | 36 +++++++- .../ftrace/test.d/kprobe/kretprobe_args.tc | 9 +- .../ftrace/test.d/kprobe/kretprobe_maxactive.tc | 4 - .../ftrace/test.d/kprobe/multiple_kprobes.tc | 5 - .../selftests/ftrace/test.d/kprobe/probepoint.tc | 4 - .../selftests/ftrace/test.d/kprobe/profile.tc | 15 +++ tools/testing/selftests/ftrace/test.d/template | 1 .../testing/selftests/ftrace/test.d/tracer/blk.tc | 91 ++++++++++++++++++++ .../testing/selftests/ftrace/test.d/tracer/nop.tc | 22 +++++ .../selftests/ftrace/test.d/tracer/wakeup.tc | 25 +++++ .../selftests/ftrace/test.d/tracer/wakeup_rt.tc | 25 +++++ .../inter-event/trigger-extended-error-support.tc | 12 --- .../inter-event/trigger-field-variable-support.tc | 15 --- .../trigger-inter-event-combined-hist.tc | 15 --- .../inter-event/trigger-multi-actions-accept.tc | 14 --- .../inter-event/trigger-onmatch-action-hist.tc | 15 --- .../trigger-onmatch-onmax-action-hist.tc | 15 --- .../inter-event/trigger-onmax-action-hist.tc | 15 --- .../trigger-synthetic-event-createremove.tc | 12 --- .../ftrace/test.d/trigger/trigger-eventonoff.tc | 12 --- .../ftrace/test.d/trigger/trigger-filter.tc | 14 --- .../ftrace/test.d/trigger/trigger-hist-mod.tc | 12 --- .../ftrace/test.d/trigger/trigger-hist.tc | 12 --- .../ftrace/test.d/trigger/trigger-multihist.tc | 16 ---- .../ftrace/test.d/trigger/trigger-snapshot.tc | 12 --- .../ftrace/test.d/trigger/trigger-stacktrace.tc | 12 --- .../test.d/trigger/trigger-trace-marker-hist.tc | 11 -- .../trigger/trigger-trace-marker-snapshot.tc | 16 ---- .../trigger-trace-marker-synthetic-kernel.tc | 12 --- .../trigger/trigger-trace-marker-synthetic.tc | 12 --- .../ftrace/test.d/trigger/trigger-traceonoff.tc | 12 --- 66 files changed, 630 insertions(+), 412 deletions(-) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/print_format.tc create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc create mode 100644 tools/testing/selftests/ftrace/test.d/event/trace_printk.tc create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc create mode 100644 tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_comm.tc create mode 100644 tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc create mode 100644 tools/testing/selftests/ftrace/test.d/kprobe/profile.tc create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/blk.tc create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/nop.tc create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/wakeup.tc create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc
-- Masami Hiramatsu (Linaro)
Add GCOV_PROFILE_FTRACE to allow gcov profiling on only files in ftrace subsystem. This kconfig flag will be used for checking kselftest/ftrace coverage.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- kernel/trace/Kconfig | 13 +++++++++++++ kernel/trace/Makefile | 5 +++++ 2 files changed, 18 insertions(+)
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig index fd6754b88f87..8decf6d8553a 100644 --- a/kernel/trace/Kconfig +++ b/kernel/trace/Kconfig @@ -774,6 +774,19 @@ config TRACING_EVENTS_GPIO help Enable tracing events for gpio subsystem
+config GCOV_PROFILE_FTRACE + bool "Enable GCOV profiling on ftrace subsystem" + depends on GCOV_KERNEL + help + Enable GCOV profiling on ftrace subsystem for checking + which functions/lines are tested. + + If unsure, say N. + + Note that on a kernel compiled with this flags, ftrace will be + significantly run slower. So do not enable it for production + kernel. + endif # FTRACE
endif # TRACING_SUPPORT diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile index 98d53b39a8ee..f81dadbc7c4a 100644 --- a/kernel/trace/Makefile +++ b/kernel/trace/Makefile @@ -23,6 +23,11 @@ ifdef CONFIG_TRACING_BRANCHES KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING endif
+# for GCOV coverage profiling +ifdef CONFIG_GCOV_PROFILE_FTRACE +GCOV_PROFILE := y +endif + CFLAGS_trace_benchmark.o := -I$(src) CFLAGS_trace_events_filter.o := -I$(src)
On Fri, 17 Aug 2018 01:29:39 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add GCOV_PROFILE_FTRACE to allow gcov profiling on only files in ftrace subsystem. This kconfig flag will be used for checking kselftest/ftrace
Note, I haven't heard of "kconfig flag" as the terminology. Usually, we just say "config" or "config option".
coverage.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
kernel/trace/Kconfig | 13 +++++++++++++ kernel/trace/Makefile | 5 +++++ 2 files changed, 18 insertions(+)
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig index fd6754b88f87..8decf6d8553a 100644 --- a/kernel/trace/Kconfig +++ b/kernel/trace/Kconfig @@ -774,6 +774,19 @@ config TRACING_EVENTS_GPIO help Enable tracing events for gpio subsystem +config GCOV_PROFILE_FTRACE
- bool "Enable GCOV profiling on ftrace subsystem"
- depends on GCOV_KERNEL
- help
Enable GCOV profiling on ftrace subsystem for checking
which functions/lines are tested.
If unsure, say N.
Note that on a kernel compiled with this flags, ftrace will be
significantly run slower. So do not enable it for production
kernel.
I would rewrite the above as:
Note that on a kernel compiled with this config, ftrace will run significantly slower.
I think we can leave out the production sentence. It should be obvious from the "significantly slower" part.
Other than that, it looks fine to me.
-- Steve
endif # FTRACE endif # TRACING_SUPPORT diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile index 98d53b39a8ee..f81dadbc7c4a 100644 --- a/kernel/trace/Makefile +++ b/kernel/trace/Makefile @@ -23,6 +23,11 @@ ifdef CONFIG_TRACING_BRANCHES KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING endif +# for GCOV coverage profiling +ifdef CONFIG_GCOV_PROFILE_FTRACE +GCOV_PROFILE := y +endif
CFLAGS_trace_benchmark.o := -I$(src) CFLAGS_trace_events_filter.o := -I$(src)
On Mon, 20 Aug 2018 11:32:13 -0400 Steven Rostedt rostedt@goodmis.org wrote:
Other than that, it looks fine to me.
This patch also seems out of place for the series. Want to resend it separately, and I'll apply it?
Thanks!
-- Steve
Hi Steve,
On Mon, 20 Aug 2018 11:33:49 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Mon, 20 Aug 2018 11:32:13 -0400 Steven Rostedt rostedt@goodmis.org wrote:
Other than that, it looks fine to me.
This patch also seems out of place for the series.
Yes, this one is the patch for ftrace, not ftracetest.
Want to resend it separately, and I'll apply it?
OK, I'll fix "config" and resend it :)
Thank you,
Add --stop-fail option for debugging the ftracetest.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- tools/testing/selftests/ftrace/ftracetest | 13 +++++++++++++ 1 file changed, 13 insertions(+)
diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest index f9a9d424c980..c9c7fa8dc440 100755 --- a/tools/testing/selftests/ftrace/ftracetest +++ b/tools/testing/selftests/ftrace/ftracetest @@ -69,6 +69,10 @@ parse_opts() { # opts DEBUG=1 shift 1 ;; + --stop-fail) + STOP_FAILURE=1 + shift 1 + ;; --fail-unsupported) UNSUPPORTED_RESULT=1 shift 1 @@ -117,6 +121,7 @@ KEEP_LOG=0 DEBUG=0 VERBOSE=0 UNSUPPORTED_RESULT=0 +STOP_FAILURE=0 # Parse command-line options parse_opts $*
@@ -304,6 +309,10 @@ run_test() { # testfile # Main loop for t in $TEST_CASES; do run_test $t + if [ $STOP_FAILURE -ne 0 -a $TOTAL_RESULT -ne 0 ]; then + echo "A failure detected. Stop test." + exit 1 + fi done
# Test on instance loop @@ -315,6 +324,10 @@ for t in $TEST_CASES; do run_test $t rmdir $TRACING_DIR TRACING_DIR=$SAVED_TRACING_DIR + if [ $STOP_FAILURE -ne 0 -a $TOTAL_RESULT -ne 0 ]; then + echo "A failure detected. Stop test." + exit 1 + fi done
prlog ""
On Fri, 17 Aug 2018 01:30:08 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add --stop-fail option for debugging the ftracetest.
Acked-by: Steven Rostedt (VMware) rostedt@goodmis.org
-- Steve
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
tools/testing/selftests/ftrace/ftracetest | 13 +++++++++++++ 1 file changed, 13 insertions(+)
diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest index f9a9d424c980..c9c7fa8dc440 100755 --- a/tools/testing/selftests/ftrace/ftracetest +++ b/tools/testing/selftests/ftrace/ftracetest @@ -69,6 +69,10 @@ parse_opts() { # opts
Add --console hidden option for debug test cases. This option allows to put "sh" or something else when the test case hits a bug.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- tools/testing/selftests/ftrace/ftracetest | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest index c9c7fa8dc440..8debd37038e4 100755 --- a/tools/testing/selftests/ftrace/ftracetest +++ b/tools/testing/selftests/ftrace/ftracetest @@ -60,11 +60,21 @@ parse_opts() { # opts shift 1 ;; --verbose|-v|-vv|-vvv) + if [ $VERBOSE -eq -1 ]; then + usage "--console can not use with --verbose" + fi VERBOSE=$((VERBOSE + 1)) [ $1 = '-vv' ] && VERBOSE=$((VERBOSE + 1)) [ $1 = '-vvv' ] && VERBOSE=$((VERBOSE + 2)) shift 1 ;; + --console) + if [ $VERBOSE -ne 0 ]; then + usage "--console can not use with --verbose" + fi + VERBOSE=-1 + shift 1 + ;; --debug|-d) DEBUG=1 shift 1 @@ -283,7 +293,9 @@ run_test() { # testfile testcase $1 echo "execute$INSTANCE: "$1 > $testlog SIG_RESULT=0 - if [ -z "$LOG_FILE" ]; then + if [ $VERBOSE -eq -1 ]; then + __run_test $1 + elif [ -z "$LOG_FILE" ]; then __run_test $1 2>&1 elif [ $VERBOSE -ge 3 ]; then __run_test $1 | tee -a $testlog 2>&1
On Fri, 17 Aug 2018 01:30:36 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add --console hidden option for debug test cases. This option allows to put "sh" or something else when the test case hits a bug.
Can you add more information to why and how this would be used.
-- Steve
On Fri, 24 Aug 2018 16:37:37 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:30:36 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add --console hidden option for debug test cases. This option allows to put "sh" or something else when the test case hits a bug.
Can you add more information to why and how this would be used.
For example, if you find a testcase which doesn't pass, you can insert sh for interactive debug as below
#!/bin/sh # description: sample test case
good-command suspicious-wrong-command sh # <- add this for interactive debug
Thank you,
On Sat, 25 Aug 2018 10:35:13 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
On Fri, 24 Aug 2018 16:37:37 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:30:36 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add --console hidden option for debug test cases. This option allows to put "sh" or something else when the test case hits a bug.
Can you add more information to why and how this would be used.
For example, if you find a testcase which doesn't pass, you can insert sh for interactive debug as below
#!/bin/sh # description: sample test case
good-command suspicious-wrong-command sh # <- add this for interactive debug
Ah! OK. But this needs to be explained a little better in the change log as well as in the comments for it.
Thanks!
-- Steve
On Fri, 24 Aug 2018 21:42:04 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Sat, 25 Aug 2018 10:35:13 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
On Fri, 24 Aug 2018 16:37:37 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:30:36 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add --console hidden option for debug test cases. This option allows to put "sh" or something else when the test case hits a bug.
Can you add more information to why and how this would be used.
For example, if you find a testcase which doesn't pass, you can insert sh for interactive debug as below
#!/bin/sh # description: sample test case
good-command suspicious-wrong-command sh # <- add this for interactive debug
Ah! OK. But this needs to be explained a little better in the change log as well as in the comments for it.
Ah sorry I missed "I will add following example"... yes, of course I add this to description.
Thank you,
Thanks!
-- Steve
Add a case number prefix to each logfile. This makes it easier to find which logfile is corresponding to which failure.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- tools/testing/selftests/ftrace/ftracetest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest index 8debd37038e4..3ca596255eff 100755 --- a/tools/testing/selftests/ftrace/ftracetest +++ b/tools/testing/selftests/ftrace/ftracetest @@ -284,13 +284,13 @@ __run_test() { # testfile # Run one test case run_test() { # testfile local testname=`basename $1` + testcase $1 if [ ! -z "$LOG_FILE" ] ; then - local testlog=`mktemp $LOG_DIR/${testname}-log.XXXXXX` + local testlog=`mktemp $LOG_DIR/${CASENO}-${testname}-log.XXXXXX` else local testlog=/proc/self/fd/1 fi export TMPDIR=`mktemp -d /tmp/ftracetest-dir.XXXXXX` - testcase $1 echo "execute$INSTANCE: "$1 > $testlog SIG_RESULT=0 if [ $VERBOSE -eq -1 ]; then
On Fri, 17 Aug 2018 01:31:05 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a case number prefix to each logfile. This makes it easier to find which logfile is corresponding to which failure.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
Acked-by: Steven Rostedt (VMware) rostedt@goodmis.org
-- Steve
tools/testing/selftests/ftrace/ftracetest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest index 8debd37038e4..3ca596255eff 100755 --- a/tools/testing/selftests/ftrace/ftracetest +++ b/tools/testing/selftests/ftrace/ftracetest @@ -284,13 +284,13 @@ __run_test() { # testfile # Run one test case run_test() { # testfile local testname=`basename $1`
- testcase $1 if [ ! -z "$LOG_FILE" ] ; then
- local testlog=`mktemp $LOG_DIR/${testname}-log.XXXXXX`
- local testlog=`mktemp $LOG_DIR/${CASENO}-${testname}-log.XXXXXX` else local testlog=/proc/self/fd/1 fi export TMPDIR=`mktemp -d /tmp/ftracetest-dir.XXXXXX`
- testcase $1 echo "execute$INSTANCE: "$1 > $testlog SIG_RESULT=0 if [ $VERBOSE -eq -1 ]; then
Clear pid filter, synthetic_events, snapshots, ftrace filter, and trace log in initialize_ftrace(), since those are used in test cases.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- Changes in v2: - Add reset_ftrace_filter --- tools/testing/selftests/ftrace/test.d/functions | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/tools/testing/selftests/ftrace/test.d/functions b/tools/testing/selftests/ftrace/test.d/functions index e4645d5e3126..b2bfa4dd43f7 100644 --- a/tools/testing/selftests/ftrace/test.d/functions +++ b/tools/testing/selftests/ftrace/test.d/functions @@ -89,12 +89,17 @@ initialize_ftrace() { # Reset ftrace to initial-state reset_tracer reset_trigger reset_events_filter + reset_ftrace_filter disable_events echo > set_event_pid # event tracer is always on + echo > set_ftrace_pid [ -f set_ftrace_filter ] && echo | tee set_ftrace_* [ -f set_graph_function ] && echo | tee set_graph_* [ -f stack_trace_filter ] && echo > stack_trace_filter [ -f kprobe_events ] && echo > kprobe_events [ -f uprobe_events ] && echo > uprobe_events + [ -f synthetic_events ] && echo > synthetic_events + [ -f snapshot ] && echo 0 > snapshot + clear_trace enable_tracing }
On Fri, 17 Aug 2018 01:31:33 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Clear pid filter, synthetic_events, snapshots, ftrace filter, and trace log in initialize_ftrace(), since those are used in test cases.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
Acked-by: Steven Rostedt (VMware) rostedt@goodmis.org
-- Steve
Changes in v2:
- Add reset_ftrace_filter
tools/testing/selftests/ftrace/test.d/functions | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/tools/testing/selftests/ftrace/test.d/functions b/tools/testing/selftests/ftrace/test.d/functions index e4645d5e3126..b2bfa4dd43f7 100644 --- a/tools/testing/selftests/ftrace/test.d/functions +++ b/tools/testing/selftests/ftrace/test.d/functions @@ -89,12 +89,17 @@ initialize_ftrace() { # Reset ftrace to initial-state reset_tracer reset_trigger reset_events_filter
- reset_ftrace_filter disable_events echo > set_event_pid # event tracer is always on
- echo > set_ftrace_pid [ -f set_ftrace_filter ] && echo | tee set_ftrace_* [ -f set_graph_function ] && echo | tee set_graph_* [ -f stack_trace_filter ] && echo > stack_trace_filter [ -f kprobe_events ] && echo > kprobe_events [ -f uprobe_events ] && echo > uprobe_events
- [ -f synthetic_events ] && echo > synthetic_events
- [ -f snapshot ] && echo 0 > snapshot
- clear_trace enable_tracing
}
On Fri, 17 Aug 2018 01:31:33 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Clear pid filter, synthetic_events, snapshots, ftrace filter, and trace log in initialize_ftrace(), since those are used in test cases.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
Acked-by: Steven Rostedt (VMware) rostedt@goodmis.org
-- Steve
Changes in v2:
- Add reset_ftrace_filter
tools/testing/selftests/ftrace/test.d/functions | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/tools/testing/selftests/ftrace/test.d/functions b/tools/testing/selftests/ftrace/test.d/functions index e4645d5e3126..b2bfa4dd43f7 100644 --- a/tools/testing/selftests/ftrace/test.d/functions +++ b/tools/testing/selftests/ftrace/test.d/functions @@ -89,12 +89,17 @@ initialize_ftrace() { # Reset ftrace to initial-state reset_tracer reset_trigger reset_events_filter
- reset_ftrace_filter disable_events echo > set_event_pid # event tracer is always on
- echo > set_ftrace_pid [ -f set_ftrace_filter ] && echo | tee set_ftrace_* [ -f set_graph_function ] && echo | tee set_graph_* [ -f stack_trace_filter ] && echo > stack_trace_filter [ -f kprobe_events ] && echo > kprobe_events [ -f uprobe_events ] && echo > uprobe_events
- [ -f synthetic_events ] && echo > synthetic_events
- [ -f snapshot ] && echo 0 > snapshot
- clear_trace enable_tracing
}
On Fri, 24 Aug 2018 17:46:01 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:31:33 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Clear pid filter, synthetic_events, snapshots, ftrace filter, and trace log in initialize_ftrace(), since those are used in test cases.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
Acked-by: Steven Rostedt (VMware) rostedt@goodmis.org
Bah, this was suppose to be for the previous patch (which I just got done testing). I'll send out a separate ack for that.
-- Steve
Add SPDX License Identifier line to template file so that someone who makes new testcase from the template does not forgot it.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- tools/testing/selftests/ftrace/test.d/template | 1 + 1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/ftrace/test.d/template b/tools/testing/selftests/ftrace/test.d/template index 5c39ceb18a0d..799da7e0b3c9 100644 --- a/tools/testing/selftests/ftrace/test.d/template +++ b/tools/testing/selftests/ftrace/test.d/template @@ -1,4 +1,5 @@ #!/bin/sh +# SPDX-License-Identifier: GPL2.0 # description: %HERE DESCRIBE WHAT THIS DOES% # you have to add ".tc" extention for your testcase file # Note that all tests are run with "errexit" option.
Cleanup ftrace by initialize_ftrace() after running all test cases. This means we also don't need cleanup ftrace on each test case, except for some special options.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- tools/testing/selftests/ftrace/ftracetest | 1 + 1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest index 3ca596255eff..5c71d58febb2 100755 --- a/tools/testing/selftests/ftrace/ftracetest +++ b/tools/testing/selftests/ftrace/ftracetest @@ -341,6 +341,7 @@ for t in $TEST_CASES; do exit 1 fi done +(cd $TRACING_DIR; initialize_ftrace) # for cleanup
prlog "" prlog "# of passed: " `echo $PASSED_CASES | wc -w`
Since ftracetest framework calls initialize_ftrace() right before each test and after all tests, we don't need to init/cleanup ftrace for each test case. Just remove such unneeded init/cleanup code because it can increase logfile size.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../selftests/ftrace/test.d/event/event-enable.tc | 6 ------ .../selftests/ftrace/test.d/event/event-pid.tc | 3 +-- .../ftrace/test.d/event/subsystem-enable.tc | 6 ------ .../ftrace/test.d/event/toplevel-enable.tc | 6 ------ .../ftrace/test.d/ftrace/fgraph-filter-stack.tc | 4 ---- .../ftrace/test.d/ftrace/fgraph-filter.tc | 9 --------- .../ftrace/test.d/ftrace/func-filter-pid.tc | 6 ------ .../ftrace/test.d/ftrace/func_event_triggers.tc | 3 --- .../ftrace/test.d/ftrace/func_profiler.tc | 4 ---- .../ftrace/test.d/ftrace/func_set_ftrace_file.tc | 13 ------------- .../test.d/ftrace/func_traceonoff_triggers.tc | 11 ----------- .../ftrace/test.d/kprobe/add_and_remove.tc | 3 --- .../selftests/ftrace/test.d/kprobe/busy_check.tc | 3 --- .../selftests/ftrace/test.d/kprobe/kprobe_args.tc | 2 -- .../ftrace/test.d/kprobe/kprobe_args_string.tc | 5 ----- .../ftrace/test.d/kprobe/kprobe_args_syntax.tc | 5 ----- .../ftrace/test.d/kprobe/kprobe_args_type.tc | 4 ---- .../ftrace/test.d/kprobe/kprobe_eventname.tc | 5 ----- .../ftrace/test.d/kprobe/kprobe_ftrace.tc | 9 --------- .../ftrace/test.d/kprobe/kprobe_module.tc | 5 ----- .../ftrace/test.d/kprobe/kretprobe_args.tc | 2 -- .../ftrace/test.d/kprobe/kretprobe_maxactive.tc | 4 ---- .../ftrace/test.d/kprobe/multiple_kprobes.tc | 5 ----- .../selftests/ftrace/test.d/kprobe/probepoint.tc | 4 ---- .../inter-event/trigger-extended-error-support.tc | 12 ------------ .../inter-event/trigger-field-variable-support.tc | 13 ------------- .../trigger-inter-event-combined-hist.tc | 13 ------------- .../inter-event/trigger-multi-actions-accept.tc | 14 -------------- .../inter-event/trigger-onmatch-action-hist.tc | 13 ------------- .../trigger-onmatch-onmax-action-hist.tc | 13 ------------- .../inter-event/trigger-onmax-action-hist.tc | 13 ------------- .../trigger-synthetic-event-createremove.tc | 12 ------------ .../ftrace/test.d/trigger/trigger-eventonoff.tc | 12 ------------ .../ftrace/test.d/trigger/trigger-filter.tc | 14 -------------- .../ftrace/test.d/trigger/trigger-hist-mod.tc | 12 ------------ .../ftrace/test.d/trigger/trigger-hist.tc | 12 ------------ .../ftrace/test.d/trigger/trigger-multihist.tc | 16 ---------------- .../ftrace/test.d/trigger/trigger-snapshot.tc | 12 ------------ .../ftrace/test.d/trigger/trigger-stacktrace.tc | 12 ------------ .../test.d/trigger/trigger-trace-marker-hist.tc | 11 ----------- .../trigger/trigger-trace-marker-snapshot.tc | 12 ------------ .../trigger-trace-marker-synthetic-kernel.tc | 12 ------------ .../trigger/trigger-trace-marker-synthetic.tc | 12 ------------ .../ftrace/test.d/trigger/trigger-traceonoff.tc | 12 ------------ 44 files changed, 1 insertion(+), 378 deletions(-)
diff --git a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc index 9daf034186f5..386dbddbdc11 100644 --- a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc @@ -9,7 +9,6 @@ do_reset() { }
fail() { #msg - do_reset echo $1 exit_fail } @@ -23,9 +22,6 @@ if [ ! -f set_event -o ! -d events/sched ]; then exit_unsupported fi
-reset_tracer -do_reset - echo 'sched:sched_switch' > set_event
yield @@ -57,6 +53,4 @@ if [ $count -ne 0 ]; then fail "sched_switch events should not be recorded" fi
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc index 132478b305c2..6dbf67544fde 100644 --- a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc +++ b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc @@ -30,8 +30,7 @@ if [ ! -f set_event_pid ]; then exit_unsupported fi
-reset_tracer -do_reset +echo 0 > options/event-fork
echo 1 > events/sched/sched_switch/enable
diff --git a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc index 6a37a8642ee6..10eb17f161b7 100644 --- a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc @@ -9,7 +9,6 @@ do_reset() { }
fail() { #msg - do_reset echo $1 exit_fail } @@ -23,9 +22,6 @@ if [ ! -f set_event -o ! -d events/sched ]; then exit_unsupported fi
-reset_tracer -do_reset - echo 'sched:*' > set_event
yield @@ -57,6 +53,4 @@ if [ $count -ne 0 ]; then fail "any of scheduler events should not be recorded" fi
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc index 4e9b6e2c0219..8d55a233c1a4 100644 --- a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc @@ -8,7 +8,6 @@ do_reset() { }
fail() { #msg - do_reset echo $1 exit_fail } @@ -22,9 +21,6 @@ if [ ! -f available_events -o ! -f set_event -o ! -d events ]; then exit_unsupported fi
-reset_tracer -do_reset - echo '*:*' > set_event
yield @@ -60,6 +56,4 @@ if [ $count -ne 0 ]; then fail "any of events should not be recorded" fi
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc b/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc index 1aec99d108eb..aefab0c66d54 100644 --- a/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc +++ b/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc @@ -16,13 +16,9 @@ if [ ! -f set_ftrace_filter ]; then fi
do_reset() { - reset_tracer if [ -e /proc/sys/kernel/stack_tracer_enabled ]; then echo 0 > /proc/sys/kernel/stack_tracer_enabled fi - enable_tracing - clear_trace - echo > set_ftrace_filter }
fail() { # msg diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter.tc b/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter.tc index 9f8d27ca39cf..c8a5209f2119 100644 --- a/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter.tc +++ b/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter.tc @@ -9,14 +9,7 @@ if ! grep -q function_graph available_tracers; then exit_unsupported fi
-do_reset() { - reset_tracer - enable_tracing - clear_trace -} - fail() { # msg - do_reset echo $1 exit_fail } @@ -48,6 +41,4 @@ if [ $count -eq 0 ]; then fail "No schedule traces found?" fi
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc index 524ce24b3c22..970903cb7834 100644 --- a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc @@ -35,12 +35,6 @@ if [ $do_function_fork -eq 1 ]; then fi
do_reset() { - reset_tracer - clear_trace - enable_tracing - echo > set_ftrace_filter - echo > set_ftrace_pid - if [ $do_function_fork -eq 0 ]; then return fi diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc index 6fed4cf2db81..ca2ffd7957f9 100644 --- a/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc @@ -25,15 +25,12 @@ do_reset() { }
fail() { # mesg - do_reset echo $1 exit_fail }
SLEEP_TIME=".1"
-do_reset - echo "Testing function probes with events:"
EVENT="sched:sched_switch" diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_profiler.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_profiler.tc index b2d5a8febfe8..dfbae637c60c 100644 --- a/tools/testing/selftests/ftrace/test.d/ftrace/func_profiler.tc +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_profiler.tc @@ -29,8 +29,6 @@ if [ ! -f function_profile_enabled ]; then fi
fail() { # mesg - reset_tracer - echo > set_ftrace_filter echo $1 exit_fail } @@ -76,6 +74,4 @@ if ! grep -v -e '^#' -e 'schedule' trace > /dev/null; then fail "no other functions besides schedule was found" fi
-reset_tracer - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc index 68e7a48f5828..51f6e6146bd9 100644 --- a/tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc @@ -15,22 +15,11 @@ if [ ! -f set_ftrace_filter ]; then exit_unsupported fi
-do_reset() { - reset_tracer - reset_ftrace_filter - disable_events - clear_trace - enable_tracing -} - fail() { # mesg - do_reset echo $1 exit_fail }
-do_reset - FILTER=set_ftrace_filter FUNC1="schedule" FUNC2="do_softirq" @@ -165,6 +154,4 @@ test_actual rm $TMPDIR/expected rm $TMPDIR/actual
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc index f6d9ac73268a..0c04282d33dd 100644 --- a/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc @@ -16,24 +16,13 @@ if [ ! -f set_ftrace_filter ]; then exit_unsupported fi
-do_reset() { - reset_ftrace_filter - reset_tracer - disable_events - clear_trace - enable_tracing -} - fail() { # mesg - do_reset echo $1 exit_fail }
SLEEP_TIME=".1"
-do_reset - echo "Testing function probes with enabling disabling tracing:"
cnt_trace() { diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc b/tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc index 4604d2103c89..bb1eb5a7c64e 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc @@ -4,10 +4,7 @@
[ -f kprobe_events ] || exit_unsupported # this is configurable
-echo 0 > events/enable -echo > kprobe_events echo p:myevent _do_fork > kprobe_events grep myevent kprobe_events test -d events/kprobes/myevent echo > kprobe_events -clear_trace diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc b/tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc index bbc443a9190c..442c1a8c5edf 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc @@ -4,12 +4,9 @@
[ -f kprobe_events ] || exit_unsupported
-echo 0 > events/enable -echo > kprobe_events echo p:myevent _do_fork > kprobe_events test -d events/kprobes/myevent echo 1 > events/kprobes/myevent/enable echo > kprobe_events && exit_fail # this must fail echo 0 > events/kprobes/myevent/enable echo > kprobe_events # this must succeed -clear_trace diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc index 8b43c6804fc3..9578535ccd67 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc @@ -4,8 +4,6 @@
[ -f kprobe_events ] || exit_unsupported # this is configurable
-echo 0 > events/enable -echo > kprobe_events echo 'p:testprobe _do_fork $stack $stack0 +0($stack)' > kprobe_events grep testprobe kprobe_events test -d events/kprobes/testprobe diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_string.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_string.tc index 1ad70cdaf442..46e7744f8358 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_string.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_string.tc @@ -4,9 +4,6 @@
[ -f kprobe_events ] || exit_unsupported # this is configurable
-echo 0 > events/enable -echo > kprobe_events - case `uname -m` in x86_64) ARG1=%di @@ -44,5 +41,3 @@ echo 1 > events/kprobes/testprobe/enable echo "p:test _do_fork" >> kprobe_events grep -qe "testprobe.* arg1="test" arg2="test"" trace
-echo 0 > events/enable -echo > kprobe_events diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc index d026ff4e562f..d783a8ce0692 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc @@ -6,9 +6,6 @@
grep "x8/16/32/64" README > /dev/null || exit_unsupported # version issue
-echo 0 > events/enable -echo > kprobe_events - PROBEFUNC="vfs_read" GOODREG= BADREG= @@ -100,5 +97,3 @@ test_badarg "${GOODREG}::${GOODTYPE}" "${GOODREG}:${BADTYPE}" \
test_goodarg "$comm:string" "+0($stack):string" test_badarg "$comm:x64" "$stack:string" "${GOODREG}:string" - -echo > kprobe_events diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc index 2a1755bfc290..37443dd23d15 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc @@ -6,10 +6,6 @@
grep "x8/16/32/64" README > /dev/null || exit_unsupported # version issue
-echo 0 > events/enable -echo > kprobe_events -enable_tracing - echo 'p:testprobe _do_fork $stack0:s32 $stack0:u32 $stack0:x32 $stack0:b8@4/32' > kprobe_events grep testprobe kprobe_events test -d events/kprobes/testprobe diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc index 2724a1068cb1..3fb70e01b1fe 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc @@ -4,9 +4,6 @@
[ -f kprobe_events ] || exit_unsupported # this is configurable
-disable_events -echo > kprobe_events - :;: "Add an event on function without name" ;:
FUNC=`grep " [tT] .*vfs_read$" /proc/kallsyms | tail -n 1 | cut -f 3 -d " "` @@ -33,5 +30,3 @@ echo "p $FUNC" > kprobe_events EVENT=`grep $FUNC kprobe_events | cut -f 1 -d " " | cut -f 2 -d:` [ "x" != "x$EVENT" ] || exit_failure test -d events/$EVENT || exit_failure - -echo > kprobe_events diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc index cc4cac0e60f2..492426e95e09 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc @@ -8,8 +8,6 @@ grep function available_tracers || exit_unsupported # this is configurable # prepare echo nop > current_tracer echo _do_fork > set_ftrace_filter -echo 0 > events/enable -echo > kprobe_events echo 'p:testprobe _do_fork' > kprobe_events
# kprobe on / ftrace off @@ -47,10 +45,3 @@ echo > trace ( echo "forked") grep testprobe trace ! grep '_do_fork <-' trace - -# cleanup -echo nop > current_tracer -echo > set_ftrace_filter -echo 0 > events/kprobes/testprobe/enable -echo > kprobe_events -echo > trace diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc index 1e9f75f7a30f..ec6c5fffef1e 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc @@ -4,9 +4,6 @@
[ -f kprobe_events ] || exit_unsupported # this is configurable
-disable_events -echo > kprobe_events - :;: "Add an event on a module function without specifying event name" ;:
MOD=`lsmod | head -n 2 | tail -n 1 | cut -f1 -d" "` @@ -25,5 +22,3 @@ test -d events/kprobes/event1 || exit_failure
echo "p:kprobes1/event1 $MOD:$FUNC" > kprobe_events test -d events/kprobes1/event1 || exit_failure - -echo > kprobe_events diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc index 321954683aaa..4c6b21e30b02 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc @@ -4,8 +4,6 @@
[ -f kprobe_events ] || exit_unsupported # this is configurable
-echo 0 > events/enable -echo > kprobe_events echo 'r:testprobe2 _do_fork $retval' > kprobe_events grep testprobe2 kprobe_events test -d events/kprobes/testprobe2 diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc index 7c0290684c43..8e05b178519a 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc @@ -5,8 +5,6 @@ [ -f kprobe_events ] || exit_unsupported # this is configurable grep -q 'r[maxactive]' README || exit_unsupported # this is older version
-echo > kprobe_events - # Test if we successfully reject unknown messages if echo 'a:myprobeaccept inet_csk_accept' > kprobe_events; then false; else true; fi
@@ -37,5 +35,3 @@ echo > kprobe_events echo 'r10 inet_csk_accept' > kprobe_events grep inet_csk_accept kprobe_events echo > kprobe_events - -clear_trace diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc b/tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc index ce361b9d62cf..5862eee91e1d 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc @@ -12,11 +12,6 @@ case `uname -m` in *) OFFS=0;; esac
-if [ -d events/kprobes ]; then - echo 0 > events/kprobes/enable - echo > kprobe_events -fi - N=0 echo "Setup up kprobes on first available 256 text symbols" grep -i " t " /proc/kallsyms | cut -f3 -d" " | grep -v .*\..* | \ diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc b/tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc index 519d2763f5d2..a902aa0aaabc 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc @@ -30,8 +30,6 @@ if [ `printf "%x" -1 | wc -c` != 9 ]; then UINT_TEST=yes fi
-echo 0 > events/enable -echo > kprobe_events echo "p:testprobe ${TARGET_FUNC}" > kprobe_events echo "p:testprobe ${TARGET}" > kprobe_events echo "p:testprobe ${TARGET_FUNC}${NEXT}" > kprobe_events @@ -39,5 +37,3 @@ echo "p:testprobe ${TARGET_FUNC}${NEXT}" > kprobe_events if [ "${UINT_TEST}" = yes ]; then ! echo "p:testprobe ${TARGET_FUNC}${OVERFLOW}" > kprobe_events fi -echo > kprobe_events -clear_trace diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc index 2aabab363cfb..401104344593 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc @@ -2,14 +2,7 @@ # description: event trigger - test extended error support
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -24,9 +17,6 @@ if [ ! -f synthetic_events ]; then exit_unsupported fi
-reset_tracer -do_reset - echo "Test extended error support" echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger ! echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_wakeup/trigger 2> /dev/null @@ -34,6 +24,4 @@ if ! grep -q "ERROR:" events/sched/sched_wakeup/hist; then fail "Failed to generate extended error in histogram" fi
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc index 7fd5b4a8f060..575af23df04e 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc @@ -1,14 +1,7 @@ #!/bin/sh # description: event trigger - test field variable support
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -23,10 +16,6 @@ if [ ! -f synthetic_events ]; then exit_unsupported fi
-clear_synthetic_events -reset_tracer -do_reset - echo "Test field variable support"
echo 'wakeup_latency u64 lat; pid_t pid; int prio; char comm[16]' > synthetic_events @@ -49,6 +38,4 @@ if grep -q "synthetic_prio=prio" events/sched/sched_waking/hist; then fail "Failed to remove histogram with field variable" fi
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc index c93dbe38b5df..92aef26e2631 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc @@ -1,14 +1,7 @@ #!/bin/sh # description: event trigger - test inter-event combined histogram trigger
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -23,10 +16,6 @@ if [ ! -f synthetic_events ]; then exit_unsupported fi
-reset_tracer -do_reset -clear_synthetic_events - echo "Test create synthetic event"
echo 'waking_latency u64 lat pid_t pid' > synthetic_events @@ -53,6 +42,4 @@ if ! grep -q "pid:" events/synthetic/waking+wakeup_latency/hist; then fail "Failed to create combined histogram" fi
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-multi-actions-accept.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-multi-actions-accept.tc index c193dce611a2..4ddc546771b5 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-multi-actions-accept.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-multi-actions-accept.tc @@ -1,15 +1,7 @@ #!/bin/sh # description: event trigger - test multiple actions on hist trigger
- -do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -24,10 +16,6 @@ if [ ! -f synthetic_events ]; then exit_unsupported fi
-clear_synthetic_events -reset_tracer -do_reset - echo "Test multiple actions on hist trigger" echo 'wakeup_latency u64 lat; pid_t pid' >> synthetic_events TRIGGER1=events/sched/sched_wakeup/trigger @@ -39,6 +27,4 @@ echo 'hist:keys=next_pid:onmatch(sched.sched_wakeup).wakeup_latency(sched.sched_ echo 'hist:keys=next_pid:onmatch(sched.sched_wakeup).wakeup_latency(sched.sched_switch.$wakeup_lat,prev_pid) if next_comm=="cyclictest"' >> $TRIGGER2 echo 'hist:keys=next_pid if next_comm=="cyclictest"' >> $TRIGGER2
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc index e84e7d048566..1ef5dd4521f0 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc @@ -1,14 +1,7 @@ #!/bin/sh # description: event trigger - test inter-event histogram trigger onmatch action
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -23,10 +16,6 @@ if [ ! -f synthetic_events ]; then exit_unsupported fi
-clear_synthetic_events -reset_tracer -do_reset - echo "Test create synthetic event"
echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events @@ -45,6 +34,4 @@ if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then fail "Failed to create onmatch action inter-event histogram" fi
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc index 7907d8aacde3..7234683ee5e5 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc @@ -1,14 +1,7 @@ #!/bin/sh # description: event trigger - test inter-event histogram trigger onmatch-onmax action
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -23,10 +16,6 @@ if [ ! -f synthetic_events ]; then exit_unsupported fi
-clear_synthetic_events -reset_tracer -do_reset - echo "Test create synthetic event"
echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events @@ -45,6 +34,4 @@ if [ ! grep -q "ping" events/synthetic/wakeup_latency/hist -o ! grep -q "max:" e fail "Failed to create onmatch-onmax action inter-event histogram" fi
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc index 38b7ed6242b2..55b9630a1d70 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc @@ -1,14 +1,7 @@ #!/bin/sh # description: event trigger - test inter-event histogram trigger onmax action
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -23,10 +16,6 @@ if [ ! -f synthetic_events ]; then exit_unsupported fi
-clear_synthetic_events -reset_tracer -do_reset - echo "Test create synthetic event"
echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events @@ -43,6 +32,4 @@ if ! grep -q "max:" events/sched/sched_switch/hist; then fail "Failed to create onmax action inter-event histogram" fi
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc index cef11377dcbd..8d647fb572dd 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc @@ -1,13 +1,7 @@ #!/bin/sh # description: event trigger - test synthetic event create remove -do_reset() { - reset_trigger - echo > set_event - clear_trace -}
fail() { #msg - do_reset echo $1 exit_fail } @@ -22,10 +16,6 @@ if [ ! -f synthetic_events ]; then exit_unsupported fi
-clear_synthetic_events -reset_tracer -do_reset - echo "Test create synthetic event"
echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events @@ -49,6 +39,4 @@ if [ -d events/synthetic/wakeup_latency ]; then fail "Failed to delete wakeup_latency synthetic event" fi
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc index 28cc355a3a7b..eddb51e1fbf7 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc @@ -3,14 +3,7 @@ # description: event trigger - test event enable/disable trigger # flags: instance
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -25,9 +18,6 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then exit_unsupported fi
-reset_tracer -do_reset - FEATURE=`grep enable_event events/sched/sched_process_fork/trigger` if [ -z "$FEATURE" ]; then echo "event enable/disable trigger is not supported" @@ -61,6 +51,4 @@ echo 'enable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger ! echo 'enable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger ! echo 'disable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc index a48e23eb8a8b..2dcc2296ebdd 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc @@ -3,14 +3,7 @@ # description: event trigger - test trigger filter # flags: instance
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -25,9 +18,6 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then exit_unsupported fi
-reset_tracer -do_reset - echo "Test trigger filter" echo 1 > tracing_on echo 'traceoff if child_pid == 0' > events/sched/sched_process_fork/trigger @@ -54,8 +44,4 @@ echo '!traceoff' > events/sched/sched_process_fork/trigger echo 'traceoff if parent_pid >= 0 || child_pid >= 0' > events/sched/sched_process_fork/trigger echo '!traceoff' > events/sched/sched_process_fork/trigger
- - -do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc index 8da80efc44d8..fab4431639d3 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc @@ -3,14 +3,7 @@ # description: event trigger - test histogram modifiers # flags: instance
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -30,9 +23,6 @@ if [ ! -f events/sched/sched_process_fork/hist ]; then exit_unsupported fi
-reset_tracer -do_reset - echo "Test histogram with execname modifier"
echo 'hist:keys=common_pid.execname' > events/sched/sched_process_fork/trigger @@ -71,6 +61,4 @@ for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done grep 'bytes_req: ~ 2^[0-9]*' events/kmem/kmalloc/hist > /dev/null || \ fail "log2 modifier on kmem/kmalloc did not work"
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc index 449fe9ff91a2..177e8d4c4744 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc @@ -3,14 +3,7 @@ # description: event trigger - test histogram trigger # flags: instance
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -30,9 +23,6 @@ if [ ! -f events/sched/sched_process_fork/hist ]; then exit_unsupported fi
-reset_tracer -do_reset - echo "Test histogram basic tigger"
echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger @@ -79,6 +69,4 @@ check_inc `grep -o "child_pid:[[:space:]]*[[:digit:]]*" \ events/sched/sched_process_fork/hist | cut -d: -f2 ` || fail "sort param on sched_process_fork did not work"
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc index c5ef8b9d02b3..18fdaab9f570 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc @@ -3,14 +3,7 @@ # description: event trigger - test multiple histogram triggers # flags: instance
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -30,11 +23,6 @@ if [ ! -f events/sched/sched_process_fork/hist ]; then exit_unsupported fi
-reset_tracer -do_reset - -reset_trigger - echo "Test histogram multiple tiggers"
echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger @@ -67,8 +55,4 @@ grep test_hist events/sched/sched_process_exit/hist > /dev/null || \ diffs=`diff events/sched/sched_process_exit/hist events/sched/sched_process_fork/hist | wc -l` test $diffs -eq 0 || fail "Same name histograms are not same"
-reset_trigger - -do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-snapshot.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-snapshot.tc index ed38f0050d77..7717c0a09686 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-snapshot.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-snapshot.tc @@ -2,14 +2,7 @@ # SPDX-License-Identifier: GPL-2.0 # description: event trigger - test snapshot-trigger
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -29,9 +22,6 @@ if [ ! -f snapshot ]; then exit_unsupported fi
-reset_tracer -do_reset - FEATURE=`grep snapshot events/sched/sched_process_fork/trigger` if [ -z "$FEATURE" ]; then echo "snapshot trigger is not supported" @@ -57,6 +47,4 @@ echo "Test snapshot semantic errors" echo "snapshot" > events/sched/sched_process_fork/trigger ! echo "snapshot" > events/sched/sched_process_fork/trigger
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-stacktrace.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-stacktrace.tc index 3121d795a868..398c05c4d2a7 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-stacktrace.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-stacktrace.tc @@ -2,14 +2,7 @@ # SPDX-License-Identifier: GPL-2.0 # description: event trigger - test stacktrace-trigger
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -24,9 +17,6 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then exit_unsupported fi
-reset_tracer -do_reset - FEATURE=`grep stacktrace events/sched/sched_process_fork/trigger` if [ -z "$FEATURE" ]; then echo "stacktrace trigger is not supported" @@ -49,6 +39,4 @@ echo "Test stacktrace semantic errors" echo "stacktrace" > events/sched/sched_process_fork/trigger ! echo "stacktrace" > events/sched/sched_process_fork/trigger
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc index 2acbfe2c0c0c..ab6bedb25736 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc @@ -3,14 +3,7 @@ # description: trace_marker trigger - test histogram trigger # flags: instance
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -35,8 +28,6 @@ if [ ! -f events/ftrace/print/hist ]; then exit_unsupported fi
-do_reset - echo "Test histogram trace_marker tigger"
echo 'hist:keys=common_pid' > events/ftrace/print/trigger @@ -44,6 +35,4 @@ for i in `seq 1 10` ; do echo "hello" > trace_marker; done grep 'hitcount: *10$' events/ftrace/print/hist > /dev/null || \ fail "hist trigger did not trigger correct times on trace_marker"
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc index 6748e8cb42d0..79ce7d51350b 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc @@ -3,15 +3,7 @@ # 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 } @@ -54,8 +46,6 @@ test_trace() { done }
-do_reset - echo "Test snapshot trace_marker tigger"
echo 'snapshot' > events/ftrace/print/trigger @@ -69,6 +59,4 @@ 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 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc index 0a69c5d1cda8..18b4d1c2807e 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc @@ -3,15 +3,7 @@ # description: trace_marker trigger - test histogram with synthetic event against kernel event # flags:
-do_reset() { - reset_trigger - echo > set_event - echo > synthetic_events - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -46,8 +38,6 @@ if [ ! -f events/ftrace/print/hist ]; then exit_unsupported fi
-do_reset - echo "Test histogram kernel event to trace_marker latency histogram trigger"
echo 'latency u64 lat' > synthetic_events @@ -63,6 +53,4 @@ grep 'hitcount: *1$' events/ftrace/print/hist > /dev/null || \ grep 'hitcount: *1$' events/synthetic/latency/hist > /dev/null || \ fail "hist trigger did not trigger "
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc index 3666dd6ab02a..dd262d6d0db6 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc @@ -3,15 +3,7 @@ # description: trace_marker trigger - test histogram with synthetic event # flags:
-do_reset() { - reset_trigger - echo > set_event - echo > synthetic_events - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -41,8 +33,6 @@ if [ ! -f events/ftrace/print/hist ]; then exit_unsupported fi
-do_reset - echo "Test histogram trace_marker to trace_marker latency histogram trigger"
echo 'latency u64 lat' > synthetic_events @@ -61,6 +51,4 @@ fi grep 'hitcount: *1$' events/synthetic/latency/hist > /dev/null || \ fail "hist trigger did not trigger "
-do_reset - exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-traceonoff.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-traceonoff.tc index c59d9eb546da..d5d2dcbc9cab 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-traceonoff.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-traceonoff.tc @@ -2,14 +2,7 @@ # SPDX-License-Identifier: GPL-2.0 # description: event trigger - test traceon/off trigger
-do_reset() { - reset_trigger - echo > set_event - clear_trace -} - fail() { #msg - do_reset echo $1 exit_fail } @@ -24,9 +17,6 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then exit_unsupported fi
-reset_tracer -do_reset - echo "Test traceoff trigger" echo 1 > tracing_on echo 'traceoff' > events/sched/sched_process_fork/trigger @@ -54,6 +44,4 @@ echo 'traceon' > events/sched/sched_process_fork/trigger ! echo 'traceon' > events/sched/sched_process_fork/trigger ! echo 'traceoff' > events/sched/sched_process_fork/trigger
-do_reset - exit 0
Test $comm in kprobe-event argument syntax testcase only if it is supported on the kernel because $comm has been introduced 4.8 kernel. So on older stable kernel, it should be skipped.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../ftrace/test.d/kprobe/kprobe_args_syntax.tc | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc index d783a8ce0692..6f0f19953193 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc @@ -75,8 +75,11 @@ test_badarg "$stackp" "$stack0+10" "$stack1-10" echo "r ${PROBEFUNC} $retval" > kprobe_events ! echo "p ${PROBEFUNC} $retval" > kprobe_events
+# $comm was introduced in 4.8, older kernels reject it. +if grep -A1 "fetcharg:" README | grep -q '$comm' ; then : "Comm access" test_goodarg "$comm" +fi
: "Indirect memory access" test_goodarg "+0(${GOODREG})" "-0(${GOODREG})" "+10($stack)" \
Fix a test case to make checkbashisms clean.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../trigger/trigger-trace-marker-snapshot.tc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc index 79ce7d51350b..df246e505af7 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc @@ -39,10 +39,10 @@ test_trace() { fi echo "testing $line for >$x<" match=`echo $line | sed -e "s/>$x<//"` - if [ "$line" == "$match" ]; then + if [ "$line" = "$match" ]; then fail "$line does not have >$x< in it" fi - let x=$x+2 + x=$((x+2)) done }
On Fri, 17 Aug 2018 01:33:55 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Fix a test case to make checkbashisms clean.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../trigger/trigger-trace-marker-snapshot.tc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc index 79ce7d51350b..df246e505af7 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc @@ -39,10 +39,10 @@ test_trace() { fi echo "testing $line for >$x<" match=`echo $line | sed -e "s/>$x<//"`
- if [ "$line" == "$match" ]; then
- if [ "$line" = "$match" ]; then fail "$line does not have >$x< in it" fi
- let x=$x+2
- x=$((x+2))
I didn't realize "let" was a bashism. I've been using that on other shells I believe. But whatever.
Acked-by: Steven Rostedt (VMware) rostedt@goodmis.org
-- Steve
done
}
Use raw loopback address instead of localhost, because "localhost" can depend on nsswitch and in some case we can not resolve the localhost.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../selftests/ftrace/test.d/event/event-enable.tc | 2 +- .../selftests/ftrace/test.d/event/event-pid.tc | 2 +- .../ftrace/test.d/event/subsystem-enable.tc | 2 +- .../ftrace/test.d/event/toplevel-enable.tc | 2 +- .../ftrace/test.d/ftrace/func-filter-pid.tc | 2 +- .../inter-event/trigger-field-variable-support.tc | 2 +- .../trigger-inter-event-combined-hist.tc | 2 +- .../inter-event/trigger-onmatch-action-hist.tc | 2 +- .../trigger-onmatch-onmax-action-hist.tc | 2 +- .../inter-event/trigger-onmax-action-hist.tc | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc index 386dbddbdc11..a028628cdd0e 100644 --- a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc @@ -14,7 +14,7 @@ fail() { #msg }
yield() { - ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1 + ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1 }
if [ ! -f set_event -o ! -d events/sched ]; then diff --git a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc index 6dbf67544fde..6d2897f6a106 100644 --- a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc +++ b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc @@ -17,7 +17,7 @@ fail() { #msg }
yield() { - ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1 + ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1 }
if [ ! -f set_event -o ! -d events/sched ]; then diff --git a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc index 10eb17f161b7..9f0221b39d4d 100644 --- a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc @@ -14,7 +14,7 @@ fail() { #msg }
yield() { - ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1 + ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1 }
if [ ! -f set_event -o ! -d events/sched ]; then diff --git a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc index 8d55a233c1a4..5f3611047d3a 100644 --- a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc @@ -13,7 +13,7 @@ fail() { #msg }
yield() { - ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1 + ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1 }
if [ ! -f available_events -o ! -f set_event -o ! -d events ]; then diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc index 970903cb7834..cd52cf6a1fc4 100644 --- a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc @@ -49,7 +49,7 @@ fail() { # msg }
yield() { - ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1 + ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1 }
do_test() { diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc index 575af23df04e..59b58c77e9ce 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc @@ -23,7 +23,7 @@ echo 'hist:keys=comm:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/ echo 'hist:keys=next_comm:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).wakeup_latency($wakeup_lat,next_pid,sched.sched_waking.prio,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger echo 'hist:keys=pid,prio,comm:vals=lat:sort=pid,prio' > events/synthetic/wakeup_latency/trigger
-ping localhost -c 3 +ping 127.0.0.1 -c 3 if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then fail "Failed to create inter-event histogram" fi diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc index 92aef26e2631..0a7709fdfd8e 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc @@ -37,7 +37,7 @@ echo 'waking+wakeup_latency u64 lat; pid_t pid' >> synthetic_events echo 'hist:keys=pid,lat:sort=pid,lat:ww_lat=$waking_lat+$wakeup_lat:onmatch(synthetic.wakeup_latency).waking+wakeup_latency($ww_lat,pid)' >> events/synthetic/wakeup_latency/trigger echo 'hist:keys=pid,lat:sort=pid,lat' >> events/synthetic/waking+wakeup_latency/trigger
-ping localhost -c 3 +ping 127.0.0.1 -c 3 if ! grep -q "pid:" events/synthetic/waking+wakeup_latency/hist; then fail "Failed to create combined histogram" fi diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc index 1ef5dd4521f0..c5bdf8338aeb 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc @@ -29,7 +29,7 @@ echo "Test histogram variables,simple expression support and onmatch action" echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger -ping localhost -c 5 +ping 127.0.0.1 -c 5 if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then fail "Failed to create onmatch action inter-event histogram" fi diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc index 7234683ee5e5..47cb76bfd9c0 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc @@ -29,7 +29,7 @@ echo "Test histogram variables,simple expression support and onmatch-onmax actio echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm):onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger -ping localhost -c 5 +ping 127.0.0.1 -c 5 if [ ! grep -q "ping" events/synthetic/wakeup_latency/hist -o ! grep -q "max:" events/sched/sched_switch/hist]; then fail "Failed to create onmatch-onmax action inter-event histogram" fi diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc index 55b9630a1d70..6fa0c449035c 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc @@ -27,7 +27,7 @@ echo "Test onmax action"
echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_waking/trigger echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger -ping localhost -c 3 +ping 127.0.0.1 -c 3 if ! grep -q "max:" events/sched/sched_switch/hist; then fail "Failed to create onmax action inter-event histogram" fi
On Fri, 17 Aug 2018 01:34:23 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Use raw loopback address instead of localhost, because "localhost" can depend on nsswitch and in some case we can not resolve the localhost.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../selftests/ftrace/test.d/event/event-enable.tc | 2 +- .../selftests/ftrace/test.d/event/event-pid.tc | 2 +- .../ftrace/test.d/event/subsystem-enable.tc | 2 +- .../ftrace/test.d/event/toplevel-enable.tc | 2 +- .../ftrace/test.d/ftrace/func-filter-pid.tc | 2 +- .../inter-event/trigger-field-variable-support.tc | 2 +- .../trigger-inter-event-combined-hist.tc | 2 +- .../inter-event/trigger-onmatch-action-hist.tc | 2 +- .../trigger-onmatch-onmax-action-hist.tc | 2 +- .../inter-event/trigger-onmax-action-hist.tc | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc index 386dbddbdc11..a028628cdd0e 100644 --- a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc @@ -14,7 +14,7 @@ fail() { #msg } yield() {
- ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
- ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1
} if [ ! -f set_event -o ! -d events/sched ]; then diff --git a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc index 6dbf67544fde..6d2897f6a106 100644 --- a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc +++ b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc @@ -17,7 +17,7 @@ fail() { #msg } yield() {
- ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
- ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1
} if [ ! -f set_event -o ! -d events/sched ]; then diff --git a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc index 10eb17f161b7..9f0221b39d4d 100644 --- a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc @@ -14,7 +14,7 @@ fail() { #msg } yield() {
- ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
- ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1
} if [ ! -f set_event -o ! -d events/sched ]; then diff --git a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc index 8d55a233c1a4..5f3611047d3a 100644 --- a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc @@ -13,7 +13,7 @@ fail() { #msg } yield() {
- ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
- ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1
} if [ ! -f available_events -o ! -f set_event -o ! -d events ]; then diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc index 970903cb7834..cd52cf6a1fc4 100644 --- a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc @@ -49,7 +49,7 @@ fail() { # msg } yield() {
- ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
- ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1
}
Perhaps we should make this a helper function since it's used so much.
do_test() { diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc index 575af23df04e..59b58c77e9ce 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc @@ -23,7 +23,7 @@ echo 'hist:keys=comm:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/ echo 'hist:keys=next_comm:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).wakeup_latency($wakeup_lat,next_pid,sched.sched_waking.prio,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger echo 'hist:keys=pid,prio,comm:vals=lat:sort=pid,prio' > events/synthetic/wakeup_latency/trigger -ping localhost -c 3 +ping 127.0.0.1 -c 3 if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then fail "Failed to create inter-event histogram" fi diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc index 92aef26e2631..0a7709fdfd8e 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc @@ -37,7 +37,7 @@ echo 'waking+wakeup_latency u64 lat; pid_t pid' >> synthetic_events echo 'hist:keys=pid,lat:sort=pid,lat:ww_lat=$waking_lat+$wakeup_lat:onmatch(synthetic.wakeup_latency).waking+wakeup_latency($ww_lat,pid)' >> events/synthetic/wakeup_latency/trigger echo 'hist:keys=pid,lat:sort=pid,lat' >> events/synthetic/waking+wakeup_latency/trigger -ping localhost -c 3 +ping 127.0.0.1 -c 3 if ! grep -q "pid:" events/synthetic/waking+wakeup_latency/hist; then fail "Failed to create combined histogram" fi diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc index 1ef5dd4521f0..c5bdf8338aeb 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc @@ -29,7 +29,7 @@ echo "Test histogram variables,simple expression support and onmatch action" echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger -ping localhost -c 5 +ping 127.0.0.1 -c 5 if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then fail "Failed to create onmatch action inter-event histogram" fi diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc index 7234683ee5e5..47cb76bfd9c0 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc @@ -29,7 +29,7 @@ echo "Test histogram variables,simple expression support and onmatch-onmax actio echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm):onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger -ping localhost -c 5 +ping 127.0.0.1 -c 5 if [ ! grep -q "ping" events/synthetic/wakeup_latency/hist -o ! grep -q "max:" events/sched/sched_switch/hist]; then fail "Failed to create onmatch-onmax action inter-event histogram" fi diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc index 55b9630a1d70..6fa0c449035c 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc @@ -27,7 +27,7 @@ echo "Test onmax action" echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_waking/trigger echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger -ping localhost -c 3 +ping 127.0.0.1 -c 3
Perhaps we should also add a variable LOCALHOST="127.0.0.1" and use that. I rather not have the raw address all over the place, in case we want to change its meaning, it's best to do it in one place.
-- Steve
if ! grep -q "max:" events/sched/sched_switch/hist; then fail "Failed to create onmax action inter-event histogram" fi
On Fri, 24 Aug 2018 17:52:11 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:34:23 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Use raw loopback address instead of localhost, because "localhost" can depend on nsswitch and in some case we can not resolve the localhost.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../selftests/ftrace/test.d/event/event-enable.tc | 2 +- .../selftests/ftrace/test.d/event/event-pid.tc | 2 +- .../ftrace/test.d/event/subsystem-enable.tc | 2 +- .../ftrace/test.d/event/toplevel-enable.tc | 2 +- .../ftrace/test.d/ftrace/func-filter-pid.tc | 2 +- .../inter-event/trigger-field-variable-support.tc | 2 +- .../trigger-inter-event-combined-hist.tc | 2 +- .../inter-event/trigger-onmatch-action-hist.tc | 2 +- .../trigger-onmatch-onmax-action-hist.tc | 2 +- .../inter-event/trigger-onmax-action-hist.tc | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc index 386dbddbdc11..a028628cdd0e 100644 --- a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc @@ -14,7 +14,7 @@ fail() { #msg } yield() {
- ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
- ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1
} if [ ! -f set_event -o ! -d events/sched ]; then diff --git a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc index 6dbf67544fde..6d2897f6a106 100644 --- a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc +++ b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc @@ -17,7 +17,7 @@ fail() { #msg } yield() {
- ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
- ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1
} if [ ! -f set_event -o ! -d events/sched ]; then diff --git a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc index 10eb17f161b7..9f0221b39d4d 100644 --- a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc @@ -14,7 +14,7 @@ fail() { #msg } yield() {
- ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
- ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1
} if [ ! -f set_event -o ! -d events/sched ]; then diff --git a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc index 8d55a233c1a4..5f3611047d3a 100644 --- a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc @@ -13,7 +13,7 @@ fail() { #msg } yield() {
- ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
- ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1
} if [ ! -f available_events -o ! -f set_event -o ! -d events ]; then diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc index 970903cb7834..cd52cf6a1fc4 100644 --- a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc @@ -49,7 +49,7 @@ fail() { # msg } yield() {
- ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
- ping 127.0.0.1 -c 1 || sleep .001 || usleep 1 || sleep 1
}
Perhaps we should make this a helper function since it's used so much.
Yeah, agree. OK, I'll add a patch to move it in common place.
do_test() { diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc index 575af23df04e..59b58c77e9ce 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc @@ -23,7 +23,7 @@ echo 'hist:keys=comm:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/ echo 'hist:keys=next_comm:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).wakeup_latency($wakeup_lat,next_pid,sched.sched_waking.prio,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger echo 'hist:keys=pid,prio,comm:vals=lat:sort=pid,prio' > events/synthetic/wakeup_latency/trigger -ping localhost -c 3 +ping 127.0.0.1 -c 3 if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then fail "Failed to create inter-event histogram" fi diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc index 92aef26e2631..0a7709fdfd8e 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc @@ -37,7 +37,7 @@ echo 'waking+wakeup_latency u64 lat; pid_t pid' >> synthetic_events echo 'hist:keys=pid,lat:sort=pid,lat:ww_lat=$waking_lat+$wakeup_lat:onmatch(synthetic.wakeup_latency).waking+wakeup_latency($ww_lat,pid)' >> events/synthetic/wakeup_latency/trigger echo 'hist:keys=pid,lat:sort=pid,lat' >> events/synthetic/waking+wakeup_latency/trigger -ping localhost -c 3 +ping 127.0.0.1 -c 3 if ! grep -q "pid:" events/synthetic/waking+wakeup_latency/hist; then fail "Failed to create combined histogram" fi diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc index 1ef5dd4521f0..c5bdf8338aeb 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc @@ -29,7 +29,7 @@ echo "Test histogram variables,simple expression support and onmatch action" echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger -ping localhost -c 5 +ping 127.0.0.1 -c 5 if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then fail "Failed to create onmatch action inter-event histogram" fi diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc index 7234683ee5e5..47cb76bfd9c0 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc @@ -29,7 +29,7 @@ echo "Test histogram variables,simple expression support and onmatch-onmax actio echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm):onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger -ping localhost -c 5 +ping 127.0.0.1 -c 5 if [ ! grep -q "ping" events/synthetic/wakeup_latency/hist -o ! grep -q "max:" events/sched/sched_switch/hist]; then fail "Failed to create onmatch-onmax action inter-event histogram" fi diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc index 55b9630a1d70..6fa0c449035c 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc @@ -27,7 +27,7 @@ echo "Test onmax action" echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_waking/trigger echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger -ping localhost -c 3 +ping 127.0.0.1 -c 3
Perhaps we should also add a variable LOCALHOST="127.0.0.1" and use that. I rather not have the raw address all over the place, in case we want to change its meaning, it's best to do it in one place.
Agreed. That should be moved in the common place too.
Thank you,
-- Steve
if ! grep -q "max:" events/sched/sched_switch/hist; then fail "Failed to create onmax action inter-event histogram" fi
Improve kprobe events on module testcase to check module load/unload with disabled/enabled events. This also change the target module to trace_printk.ko, so it depends on CONFIG_SAMPLE_TRACE_PRINTK=m.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- tools/testing/selftests/ftrace/config | 4 ++ .../ftrace/test.d/kprobe/kprobe_module.tc | 35 ++++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index 07db5ab09cc7..32cf61b6bb54 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -7,3 +7,7 @@ CONFIG_HIST_TRIGGERS=y CONFIG_PREEMPT_TRACER=y CONFIG_IRQSOFF_TRACER=y CONFIG_PREEMPTIRQ_DELAY_TEST=m +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SAMPLES=y +CONFIG_SAMPLE_TRACE_PRINTK=m diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc index ec6c5fffef1e..1efe9e616bc4 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc @@ -4,11 +4,18 @@
[ -f kprobe_events ] || exit_unsupported # this is configurable
+rmmod trace-printk ||: +if ! modprobe trace-printk.ko ; then + echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK= +m" + exit_unresolved; +fi + +MOD=trace_printk +FUNC=trace_printk_irq_work + :;: "Add an event on a module function without specifying event name" ;:
-MOD=`lsmod | head -n 2 | tail -n 1 | cut -f1 -d" "` -FUNC=`grep -m 1 ".* t .*\[$MOD\]" /proc/kallsyms | xargs | cut -f3 -d" "` -[ "x" != "x$MOD" -a "y" != "y$FUNC" ] || exit_unresolved echo "p $MOD:$FUNC" > kprobe_events PROBE_NAME=`echo $MOD:$FUNC | tr ".:" "_"` test -d events/kprobes/p_${PROBE_NAME}_0 || exit_failure @@ -22,3 +29,25 @@ test -d events/kprobes/event1 || exit_failure
echo "p:kprobes1/event1 $MOD:$FUNC" > kprobe_events test -d events/kprobes1/event1 || exit_failure + +:;: "Remove target module, but event still be there" ;: +if ! rmmod trace-printk ; then + echo "Failed to unload module - please enable CONFIG_MODULE_UNLOAD" + exit_unresolved; +fi +test -d events/kprobes1/event1 + +:;: "Check posibility to defining events on unloaded module";: +echo "p:event2 $MOD:$FUNC" >> kprobe_events + +:;: "Target is gone, but we can prepare for next time";: +echo 1 > events/kprobes1/event1/enable + +:;: "Load module again, which means the event1 should be recorded";: +modprobe trace-printk.ko +grep "event1:" trace + +:;: "Remove the module again and check the event is not locked" +rmmod trace-printk +echo 0 > events/kprobes1/event1/enable +echo "-:kprobes1/event1" >> kprobe_events
On Fri, 17 Aug 2018 01:34:51 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Improve kprobe events on module testcase to check module load/unload with disabled/enabled events. This also change the target module to trace_printk.ko, so it depends on CONFIG_SAMPLE_TRACE_PRINTK=m.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
tools/testing/selftests/ftrace/config | 4 ++ .../ftrace/test.d/kprobe/kprobe_module.tc | 35 ++++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index 07db5ab09cc7..32cf61b6bb54 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -7,3 +7,7 @@ CONFIG_HIST_TRIGGERS=y CONFIG_PREEMPT_TRACER=y CONFIG_IRQSOFF_TRACER=y CONFIG_PREEMPTIRQ_DELAY_TEST=m +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SAMPLES=y +CONFIG_SAMPLE_TRACE_PRINTK=m diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc index ec6c5fffef1e..1efe9e616bc4 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc @@ -4,11 +4,18 @@ [ -f kprobe_events ] || exit_unsupported # this is configurable +rmmod trace-printk ||: +if ! modprobe trace-printk.ko ; then
"modprobe trace-printk.ko" dosen't work. You need to drop the .ko
- echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK=
+m"
- exit_unresolved;
+fi
+MOD=trace_printk +FUNC=trace_printk_irq_work
:;: "Add an event on a module function without specifying event name" ;: -MOD=`lsmod | head -n 2 | tail -n 1 | cut -f1 -d" "` -FUNC=`grep -m 1 ".* t .*\[$MOD\]" /proc/kallsyms | xargs | cut -f3 -d" "` -[ "x" != "x$MOD" -a "y" != "y$FUNC" ] || exit_unresolved echo "p $MOD:$FUNC" > kprobe_events PROBE_NAME=`echo $MOD:$FUNC | tr ".:" "_"` test -d events/kprobes/p_${PROBE_NAME}_0 || exit_failure @@ -22,3 +29,25 @@ test -d events/kprobes/event1 || exit_failure echo "p:kprobes1/event1 $MOD:$FUNC" > kprobe_events test -d events/kprobes1/event1 || exit_failure
+:;: "Remove target module, but event still be there" ;: +if ! rmmod trace-printk ; then
- echo "Failed to unload module - please enable CONFIG_MODULE_UNLOAD"
- exit_unresolved;
+fi +test -d events/kprobes1/event1
+:;: "Check posibility to defining events on unloaded module";: +echo "p:event2 $MOD:$FUNC" >> kprobe_events
+:;: "Target is gone, but we can prepare for next time";: +echo 1 > events/kprobes1/event1/enable
+:;: "Load module again, which means the event1 should be recorded";: +modprobe trace-printk.ko
Same here.
-- Steve
+grep "event1:" trace
+:;: "Remove the module again and check the event is not locked" +rmmod trace-printk +echo 0 > events/kprobes1/event1/enable +echo "-:kprobes1/event1" >> kprobe_events
Improve kprobe testcase to check the log data correctness and ensure the event definition is corrctly including argument definition.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../selftests/ftrace/test.d/kprobe/kprobe_args.tc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc index 9578535ccd67..bcdecf80a8f1 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc @@ -5,10 +5,14 @@ [ -f kprobe_events ] || exit_unsupported # this is configurable
echo 'p:testprobe _do_fork $stack $stack0 +0($stack)' > kprobe_events -grep testprobe kprobe_events +grep testprobe kprobe_events | grep -q 'arg1=$stack arg2=$stack0 arg3=+0($stack)' test -d events/kprobes/testprobe + echo 1 > events/kprobes/testprobe/enable ( echo "forked") +grep testprobe trace | grep '_do_fork' | \ + grep -q 'arg1=0x[[:xdigit:]]* arg2=0x[[:xdigit:]]* arg3=0x[[:xdigit:]]*$' + echo 0 > events/kprobes/testprobe/enable echo "-:testprobe" >> kprobe_events clear_trace
Improve kretprobe testcase to check the log data correctness and ensure the event definition is corrctly including argument definition.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../ftrace/test.d/kprobe/kretprobe_args.tc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc index 4c6b21e30b02..ac9ab4a12e53 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc @@ -4,11 +4,16 @@
[ -f kprobe_events ] || exit_unsupported # this is configurable
+# Add new kretprobe event echo 'r:testprobe2 _do_fork $retval' > kprobe_events -grep testprobe2 kprobe_events +grep testprobe2 kprobe_events | grep -q 'arg1=$retval' test -d events/kprobes/testprobe2 + echo 1 > events/kprobes/testprobe2/enable ( echo "forked") + +cat trace | grep testprobe2 | grep -q '<- _do_fork' + echo 0 > events/kprobes/testprobe2/enable echo '-:testprobe2' >> kprobe_events clear_trace
Improve the kprobe-event with argument types testcase to test it with various bitsize. kprobe-event argument can be recorded in given types with various bitsize (8, 16, 32, 64), thus the type testcase should test the different bitsize too.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../ftrace/test.d/kprobe/kprobe_args_type.tc | 48 +++++++++++++------- 1 file changed, 32 insertions(+), 16 deletions(-)
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc index 37443dd23d15..1bcb67dcae26 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc @@ -6,29 +6,45 @@
grep "x8/16/32/64" README > /dev/null || exit_unsupported # version issue
-echo 'p:testprobe _do_fork $stack0:s32 $stack0:u32 $stack0:x32 $stack0:b8@4/32' > kprobe_events -grep testprobe kprobe_events -test -d events/kprobes/testprobe - -echo 1 > events/kprobes/testprobe/enable -( echo "forked") -echo 0 > events/kprobes/testprobe/enable -ARGS=`tail -n 1 trace | sed -e 's/.* arg1=(.*) arg2=(.*) arg3=(.*) arg4=(.*)/\1 \2 \3 \4/'` +gen_event() { # Bitsize + echo "p:testprobe _do_fork $stack0:s$1 $stack0:u$1 $stack0:x$1 $stack0:b4@4/$1" +}
-check_types() { - X1=`printf "%x" $1 | tail -c 8` +check_types() { # s-type u-type x-type bf-type width + test $# -eq 5 + CW=$5 + CW=$((CW / 4)) + X1=`printf "%x" $1 | tail -c ${CW}` X2=`printf "%x" $2` X3=`printf "%x" $3` test $X1 = $X2 test $X2 = $X3 test 0x$X3 = $3
- B4=`printf "%02x" $4` - B3=`echo -n $X3 | tail -c 3 | head -c 2` + B4=`printf "%1x" $4` + B3=`printf "%03x" 0x$X3 | tail -c 2 | head -c 1` test $B3 = $B4 } -check_types $ARGS
-echo "-:testprobe" >> kprobe_events -clear_trace -test -d events/kprobes/testprobe && exit_fail || exit_pass +for width in 64 32 16 8; do + : "Add new event with basic types" + gen_event $width > kprobe_events + grep testprobe kprobe_events + test -d events/kprobes/testprobe + + : "Trace the event" + echo 1 > events/kprobes/testprobe/enable + ( echo "forked") + echo 0 > events/kprobes/testprobe/enable + + : "Confirm the arguments is recorded in given types correctly" + ARGS=`grep "testprobe" trace | sed -e 's/.* arg1=(.*) arg2=(.*) arg3=(.*) arg4=(.*)/\1 \2 \3 \4/'` + check_types $ARGS $width + + : "Clear event for next loop" + echo "-:testprobe" >> kprobe_events + clear_trace + +done + +exit_pass
Ensure the set_event_pid shows set pid list.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../selftests/ftrace/test.d/event/event-pid.tc | 1 + 1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc index 6d2897f6a106..4ecbd9b69ec6 100644 --- a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc +++ b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc @@ -46,6 +46,7 @@ do_reset read mypid rest < /proc/self/stat
echo $mypid > set_event_pid +grep -q $mypid set_event_pid echo 'sched:sched_switch' > set_event
yield
Add kprobe-event with $comm argument testcase to ftracetest. This not only checks syntax but also checks log file.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../ftrace/test.d/kprobe/kprobe_args_comm.tc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_comm.tc
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_comm.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_comm.tc new file mode 100644 index 000000000000..15c1f70fcaf9 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_comm.tc @@ -0,0 +1,17 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Kprobe event with comm arguments + +[ -f kprobe_events ] || exit_unsupported # this is configurable + +grep -A1 "fetcharg:" README | grep -q "$comm" || exit_unsupported # this is too old + +echo 'p:testprobe _do_fork comm=$comm ' > kprobe_events +grep testprobe kprobe_events | grep -q 'comm=$comm' +test -d events/kprobes/testprobe + +echo 1 > events/kprobes/testprobe/enable +( echo "forked") +grep testprobe trace | grep -q 'comm=".*"' + +exit 0
Add a testcase for testing kprobe_profile interface which provides per-kprobe event hit/misshit counts.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../selftests/ftrace/test.d/kprobe/profile.tc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/kprobe/profile.tc
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/profile.tc b/tools/testing/selftests/ftrace/test.d/kprobe/profile.tc new file mode 100644 index 000000000000..0384b525cdee --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/kprobe/profile.tc @@ -0,0 +1,15 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Kprobe dynamic event - adding and removing + +[ -f kprobe_events ] || exit_unsupported # this is configurable + +! grep -q 'myevent' kprobe_profile +echo p:myevent _do_fork > kprobe_events +grep -q 'myevent[[:space:]]*0[[:space:]]*0$' kprobe_profile +echo 1 > events/kprobes/myevent/enable +( echo "forked" ) +grep -q 'myevent[[:space:]]*[[:digit:]]*[[:space:]]*0$' kprobe_profile +echo 0 > events/kprobes/myevent/enable +echo > kprobe_events +! grep -q 'myevent' kprobe_profile
Add a testcase for nop tracer. This tracer has 2 test options, so check it too.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../testing/selftests/ftrace/test.d/tracer/nop.tc | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/nop.tc
diff --git a/tools/testing/selftests/ftrace/test.d/tracer/nop.tc b/tools/testing/selftests/ftrace/test.d/tracer/nop.tc new file mode 100644 index 000000000000..ca63e316e0f5 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/tracer/nop.tc @@ -0,0 +1,22 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Test nop tracer + +# nop must be supported always +grep -q "nop" available_tracers + +echo "nop" > current_tracer + +# nop provides 2 test options +grep -q "test_nop_accept" trace_options +grep -q "test_nop_refuse" trace_options + +# nop_accept always success +echo "test_nop_accept" > trace_options +echo "notest_nop_accept" > trace_options + +# nop_refuse always failed +! echo "test_nop_refuse" > trace_options +! echo "notest_nop_refuse" > trace_options + +exit 0
On Fri, 17 Aug 2018 01:38:09 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for nop tracer. This tracer has 2 test options, so check it too.
I'd rather not include this. In fact, I'd love to get rid of the nop options. They were added to make sure options worked when we first added them. They are actually pointless.
The only point of this test is to know if options work or not. Hmm, I guess that is something that could possibly be valuable :-/
-- Steve
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../testing/selftests/ftrace/test.d/tracer/nop.tc | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/nop.tc
diff --git a/tools/testing/selftests/ftrace/test.d/tracer/nop.tc b/tools/testing/selftests/ftrace/test.d/tracer/nop.tc new file mode 100644 index 000000000000..ca63e316e0f5 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/tracer/nop.tc @@ -0,0 +1,22 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Test nop tracer
+# nop must be supported always +grep -q "nop" available_tracers
+echo "nop" > current_tracer
+# nop provides 2 test options +grep -q "test_nop_accept" trace_options +grep -q "test_nop_refuse" trace_options
+# nop_accept always success +echo "test_nop_accept" > trace_options +echo "notest_nop_accept" > trace_options
+# nop_refuse always failed +! echo "test_nop_refuse" > trace_options +! echo "notest_nop_refuse" > trace_options
+exit 0
On Fri, 24 Aug 2018 18:53:42 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:38:09 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for nop tracer. This tracer has 2 test options, so check it too.
I'd rather not include this. In fact, I'd love to get rid of the nop options. They were added to make sure options worked when we first added them. They are actually pointless.
Got it. I was thinking it was an odd option when I was writing a test. :)
The only point of this test is to know if options work or not. Hmm, I guess that is something that could possibly be valuable :-/
Actually setting "nop" is already done in basic testcase. So I think we can just drop this test.
Thank you,
-- Steve
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../testing/selftests/ftrace/test.d/tracer/nop.tc | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/nop.tc
diff --git a/tools/testing/selftests/ftrace/test.d/tracer/nop.tc b/tools/testing/selftests/ftrace/test.d/tracer/nop.tc new file mode 100644 index 000000000000..ca63e316e0f5 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/tracer/nop.tc @@ -0,0 +1,22 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Test nop tracer
+# nop must be supported always +grep -q "nop" available_tracers
+echo "nop" > current_tracer
+# nop provides 2 test options +grep -q "test_nop_accept" trace_options +grep -q "test_nop_refuse" trace_options
+# nop_accept always success +echo "test_nop_accept" > trace_options +echo "notest_nop_accept" > trace_options
+# nop_refuse always failed +! echo "test_nop_refuse" > trace_options +! echo "notest_nop_refuse" > trace_options
+exit 0
Add a testcase for kprobe-event with @symbol argument. Since @symbol needs to refer the kernel data symbol (linux_proc_banner), it requires CONFIG_KALLSYMS_ALL.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- tools/testing/selftests/ftrace/config | 1 + .../ftrace/test.d/kprobe/kprobe_args_symbol.tc | 39 ++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc
diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index 32cf61b6bb54..b7ac74fcb0fa 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -11,3 +11,4 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_SAMPLES=y CONFIG_SAMPLE_TRACE_PRINTK=m +CONFIG_KALLSYMS_ALL=y diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc new file mode 100644 index 000000000000..2b6dd33f9076 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc @@ -0,0 +1,39 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Kprobe event symbol argument + +[ -f kprobe_events ] || exit_unsupported # this is configurable + +SYMBOL="linux_proc_banner" + +if [ ! -f /proc/kallsyms ]; then + echo "Can not check the target symbol - please enable CONFIG_KALLSYMS" + exit_unresolved +elif ! grep "$SYMBOL$" /proc/kallsyms; then + echo "Linux banner is not exported - please enable CONFIG_KALLSYMS_ALL" + exit_unresolved +fi + +: "Test get basic types symbol argument" +echo "p:testprobe_u _do_fork arg1=@linux_proc_banner:u64 arg2=@linux_proc_banner:u32 arg3=@linux_proc_banner:u16 arg4=@linux_proc_banner:u8" > kprobe_events +echo "p:testprobe_s _do_fork arg1=@linux_proc_banner:s64 arg2=@linux_proc_banner:s32 arg3=@linux_proc_banner:s16 arg4=@linux_proc_banner:s8" >> kprobe_events +if grep -q "x8/16/32/64" README; then + echo "p:testprobe_x _do_fork arg1=@linux_proc_banner:x64 arg2=@linux_proc_banner:x32 arg3=@linux_proc_banner:x16 arg4=@linux_proc_banner:x8" >> kprobe_events +fi +echo "p:testprobe_bf _do_fork arg1=@linux_proc_banner:b8@4/32" >> kprobe_events +echo 1 > events/kprobes/enable +(echo "forked") +echo 0 > events/kprobes/enable +grep "testprobe_[usx]:.* arg1=.* arg2=.* arg3=.* arg4=.*" trace +grep "testprobe_bf:.* arg1=.*" trace + +: "Test get string symbol argument" +echo "p:testprobe_str _do_fork arg1=@linux_proc_banner:string" > kprobe_events +echo 1 > events/kprobes/enable +(echo "forked") +echo 0 > events/kprobes/enable +RESULT=`grep "testprobe_str" trace | sed -e 's/.* arg1=(.*)/\1/'` + +RESULT=`echo $RESULT | sed -e 's/.* ((.*)) ((.*)) .*/\1 \2/'` +ORIG=`cat /proc/version | sed -e 's/.* ((.*)) ((.*)) .*/\1 \2/'` +test "$RESULT" = "$ORIG"
Add trace_printk sample module test. This requires to enable trace_printk.ko module for test.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../selftests/ftrace/test.d/event/trace_printk.tc | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/event/trace_printk.tc
diff --git a/tools/testing/selftests/ftrace/test.d/event/trace_printk.tc b/tools/testing/selftests/ftrace/test.d/event/trace_printk.tc new file mode 100644 index 000000000000..4da4d739f03d --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/event/trace_printk.tc @@ -0,0 +1,27 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Test trace_printk from module + +rmmod trace-printk ||: +if ! modprobe trace-printk.ko ; then + echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK=m" + exit_unresolved; +fi + +echo "Waiting for irq work" +sleep 1 + +grep -q ": This .* trace_bputs" trace +grep -q ": This .* trace_puts" trace +grep -q ": This .* trace_bprintk" trace +grep -q ": This .* trace_printk" trace + +grep -q ": (irq) .* trace_bputs" trace +grep -q ": (irq) .* trace_puts" trace +grep -q ": (irq) .* trace_bprintk" trace +grep -q ": (irq) .* trace_printk" trace + +grep -q "This is a %s that will use trace_bprintk" printk_formats +grep -q "(irq) This is a static string that will use trace_bputs" printk_formats + +rmmod trace-printk ||:
On Fri, 17 Aug 2018 01:39:06 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add trace_printk sample module test. This requires to enable trace_printk.ko module for test.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../selftests/ftrace/test.d/event/trace_printk.tc | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/event/trace_printk.tc
diff --git a/tools/testing/selftests/ftrace/test.d/event/trace_printk.tc b/tools/testing/selftests/ftrace/test.d/event/trace_printk.tc new file mode 100644 index 000000000000..4da4d739f03d --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/event/trace_printk.tc @@ -0,0 +1,27 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Test trace_printk from module
+rmmod trace-printk ||: +if ! modprobe trace-printk.ko ; then
"modprobe trace-printk.ko" doesn't work. You need to drop the ".ko"
-- Steve
- echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK=m"
- exit_unresolved;
+fi
+echo "Waiting for irq work" +sleep 1
+grep -q ": This .* trace_bputs" trace +grep -q ": This .* trace_puts" trace +grep -q ": This .* trace_bprintk" trace +grep -q ": This .* trace_printk" trace
+grep -q ": (irq) .* trace_bputs" trace +grep -q ": (irq) .* trace_puts" trace +grep -q ": (irq) .* trace_bprintk" trace +grep -q ": (irq) .* trace_printk" trace
+grep -q "This is a %s that will use trace_bprintk" printk_formats +grep -q "(irq) This is a static string that will use trace_bputs" printk_formats
+rmmod trace-printk ||:
On Fri, 24 Aug 2018 19:06:21 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:39:06 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add trace_printk sample module test. This requires to enable trace_printk.ko module for test.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../selftests/ftrace/test.d/event/trace_printk.tc | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/event/trace_printk.tc
diff --git a/tools/testing/selftests/ftrace/test.d/event/trace_printk.tc b/tools/testing/selftests/ftrace/test.d/event/trace_printk.tc new file mode 100644 index 000000000000..4da4d739f03d --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/event/trace_printk.tc @@ -0,0 +1,27 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Test trace_printk from module
+rmmod trace-printk ||: +if ! modprobe trace-printk.ko ; then
"modprobe trace-printk.ko" doesn't work. You need to drop the ".ko"
Ah, I'm using busybox's modprobe, which acccepts .ko :(
I'll fix that.
Thanks!
-- Steve
- echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK=m"
- exit_unresolved;
+fi
+echo "Waiting for irq work" +sleep 1
+grep -q ": This .* trace_bputs" trace +grep -q ": This .* trace_puts" trace +grep -q ": This .* trace_bprintk" trace +grep -q ": This .* trace_printk" trace
+grep -q ": (irq) .* trace_bputs" trace +grep -q ": (irq) .* trace_puts" trace +grep -q ": (irq) .* trace_bprintk" trace +grep -q ": (irq) .* trace_printk" trace
+grep -q "This is a %s that will use trace_bprintk" printk_formats +grep -q "(irq) This is a static string that will use trace_bputs" printk_formats
+rmmod trace-printk ||:
Add a testcase for changing ringbuffer size. This tests not only ringbuffer size but also tests the imbalance per-cpu buffer size change too.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../ftrace/test.d/00basic/ringbuffer_size.tc | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc
diff --git a/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc b/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc new file mode 100644 index 000000000000..9224f33b3194 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc @@ -0,0 +1,21 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Change the ringbuffer size + +rb_size_test() { +ORIG=`cat buffer_size_kb` + +expr $ORIG / 2 > buffer_size_kb + +expr $ORIG * 2 > buffer_size_kb + +echo $ORIG > buffer_size_kb +} + +rb_size_test + +: "If per-cpu buffer is supported, imbalance it" +if [ -d per_cpu/cpu0 ]; then + cd per_cpu/cpu0 + rb_size_test +fi
On Fri, 17 Aug 2018 01:39:34 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for changing ringbuffer size. This tests not only ringbuffer size but also tests the imbalance per-cpu buffer size change too.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
I'm fine with this, but one day I need to port over some of my other tests. I have a test that stresses the ring buffer size (basically checks to see if it can cause an oom). I need to port that to selftests. But for now...
Acked-by: Steven Rostedt (VMware) rostedt@goodmis.org
But, one more thing..
.../ftrace/test.d/00basic/ringbuffer_size.tc | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc
diff --git a/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc b/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc new file mode 100644 index 000000000000..9224f33b3194 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc @@ -0,0 +1,21 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Change the ringbuffer size
Should add:
# flags: instance
As this works for instances as well.
-- Steve
+rb_size_test() { +ORIG=`cat buffer_size_kb`
+expr $ORIG / 2 > buffer_size_kb
+expr $ORIG * 2 > buffer_size_kb
+echo $ORIG > buffer_size_kb +}
+rb_size_test
+: "If per-cpu buffer is supported, imbalance it" +if [ -d per_cpu/cpu0 ]; then
- cd per_cpu/cpu0
- rb_size_test
+fi
On Fri, 24 Aug 2018 19:18:36 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:39:34 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for changing ringbuffer size. This tests not only ringbuffer size but also tests the imbalance per-cpu buffer size change too.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
I'm fine with this, but one day I need to port over some of my other tests. I have a test that stresses the ring buffer size (basically checks to see if it can cause an oom). I need to port that to selftests. But for now...
Hmm, such stress test is not good for kselftest, since it can cause oom and kill some test process. Maybe we should have such stresstest framework (which allows test to crash kernel)
Acked-by: Steven Rostedt (VMware) rostedt@goodmis.org
But, one more thing..
.../ftrace/test.d/00basic/ringbuffer_size.tc | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc
diff --git a/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc b/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc new file mode 100644 index 000000000000..9224f33b3194 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc @@ -0,0 +1,21 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: Change the ringbuffer size
Should add:
# flags: instance
OK, I'll add it.
Thank you!
As this works for instances as well.
-- Steve
+rb_size_test() { +ORIG=`cat buffer_size_kb`
+expr $ORIG / 2 > buffer_size_kb
+expr $ORIG * 2 > buffer_size_kb
+echo $ORIG > buffer_size_kb +}
+rb_size_test
+: "If per-cpu buffer is supported, imbalance it" +if [ -d per_cpu/cpu0 ]; then
- cd per_cpu/cpu0
- rb_size_test
+fi
On Thu, 30 Aug 2018 16:12:18 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
I'm fine with this, but one day I need to port over some of my other tests. I have a test that stresses the ring buffer size (basically checks to see if it can cause an oom). I need to port that to selftests. But for now...
Hmm, such stress test is not good for kselftest, since it can cause oom and kill some test process. Maybe we should have such stresstest framework (which allows test to crash kernel)
The point of the test is to make sure that it doesn't kill everything :-) The ring buffer code is suppose to detect that it will cause an OOM, and if it does that's considered a failure.
Just like any other test, if it fails, it can crash the kernel. But the ring buffer code is suppose to be able to keep the kernel from crashing (including triggering OOM) if the buffer size is stressed.
Maybe I'll port that over today :-/
-- Steve
On Thu, 30 Aug 2018 11:50:55 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Thu, 30 Aug 2018 16:12:18 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
I'm fine with this, but one day I need to port over some of my other tests. I have a test that stresses the ring buffer size (basically checks to see if it can cause an oom). I need to port that to selftests. But for now...
Hmm, such stress test is not good for kselftest, since it can cause oom and kill some test process. Maybe we should have such stresstest framework (which allows test to crash kernel)
The point of the test is to make sure that it doesn't kill everything :-) The ring buffer code is suppose to detect that it will cause an OOM, and if it does that's considered a failure.
Ah, OK, so the test itself must not cause OOM. That's reasonable. :)
Just like any other test, if it fails, it can crash the kernel. But the ring buffer code is suppose to be able to keep the kernel from crashing (including triggering OOM) if the buffer size is stressed.
Maybe I'll port that over today :-/
Looking forward it!
Thank you,
-- Steve
On Fri, 31 Aug 2018 08:35:28 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
On Thu, 30 Aug 2018 11:50:55 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Thu, 30 Aug 2018 16:12:18 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
I'm fine with this, but one day I need to port over some of my other tests. I have a test that stresses the ring buffer size (basically checks to see if it can cause an oom). I need to port that to selftests. But for now...
Hmm, such stress test is not good for kselftest, since it can cause oom and kill some test process. Maybe we should have such stresstest framework (which allows test to crash kernel)
The point of the test is to make sure that it doesn't kill everything :-) The ring buffer code is suppose to detect that it will cause an OOM, and if it does that's considered a failure.
Ah, OK, so the test itself must not cause OOM. That's reasonable. :)
Just like any other test, if it fails, it can crash the kernel. But the ring buffer code is suppose to be able to keep the kernel from crashing (including triggering OOM) if the buffer size is stressed.
Maybe I'll port that over today :-/
Looking forward it!
Unfortunately, I didn't get to it, and will be on PTO for the next 4 days. Perhaps next week.
-- Steve
Add a testcase for function profiling per-cpu statistics interface. There is already func_profile.tc, but that is mainly focusing on the combination of function-profiler and function tracer. This testcase ensures trace_stat per-cpu function statistics is correctly updated.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../ftrace/test.d/ftrace/func_profile_stat.tc | 23 ++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc new file mode 100644 index 000000000000..1d2440d80ec3 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc @@ -0,0 +1,23 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: ftrace - function profiling + +[ ! -f function_profile_enabled ] && exit_unsupported + +: "Enable function profile" +echo 1 > function_profile_enabled + +: "Profile must be updated" +cp trace_stat/function0 $TMPDIR/ +( echo "forked"; sleep 1 ) +: "diff returns 0 if there is no difference" +! diff trace_stat/function0 $TMPDIR/function0 + +echo 0 > function_profile_enabled + +: "Profile must NOT be updated" +cp trace_stat/function0 $TMPDIR/ +( echo "forked"; sleep 1 ) +: "diff returns 0 if there is no difference" +diff trace_stat/function0 $TMPDIR/function0 +
On Fri, 17 Aug 2018 01:40:02 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for function profiling per-cpu statistics interface. There is already func_profile.tc, but that is mainly focusing on the combination of function-profiler and function tracer. This testcase ensures trace_stat per-cpu function statistics is correctly updated.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../ftrace/test.d/ftrace/func_profile_stat.tc | 23 ++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc new file mode 100644 index 000000000000..1d2440d80ec3 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc @@ -0,0 +1,23 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: ftrace - function profiling
+[ ! -f function_profile_enabled ] && exit_unsupported
+: "Enable function profile" +echo 1 > function_profile_enabled
+: "Profile must be updated" +cp trace_stat/function0 $TMPDIR/ +( echo "forked"; sleep 1 ) +: "diff returns 0 if there is no difference" +! diff trace_stat/function0 $TMPDIR/function0
+echo 0 > function_profile_enabled
+: "Profile must NOT be updated" +cp trace_stat/function0 $TMPDIR/ +( echo "forked"; sleep 1 ) +: "diff returns 0 if there is no difference" +diff trace_stat/function0 $TMPDIR/function0
Can remove the last empty line from the file.
Other than that...
Acked-by: Steven Rostedt (VMware) rostedt@goodmis.org
-- Steve
-- Steve
On Fri, 24 Aug 2018 19:20:18 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:40:02 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for function profiling per-cpu statistics interface. There is already func_profile.tc, but that is mainly focusing on the combination of function-profiler and function tracer. This testcase ensures trace_stat per-cpu function statistics is correctly updated.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../ftrace/test.d/ftrace/func_profile_stat.tc | 23 ++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc new file mode 100644 index 000000000000..1d2440d80ec3 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc @@ -0,0 +1,23 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: ftrace - function profiling
+[ ! -f function_profile_enabled ] && exit_unsupported
+: "Enable function profile" +echo 1 > function_profile_enabled
+: "Profile must be updated" +cp trace_stat/function0 $TMPDIR/ +( echo "forked"; sleep 1 ) +: "diff returns 0 if there is no difference" +! diff trace_stat/function0 $TMPDIR/function0
+echo 0 > function_profile_enabled
+: "Profile must NOT be updated" +cp trace_stat/function0 $TMPDIR/ +( echo "forked"; sleep 1 ) +: "diff returns 0 if there is no difference" +diff trace_stat/function0 $TMPDIR/function0
Can remove the last empty line from the file.
Yes, thank you for pointing it out.
Other than that...
Acked-by: Steven Rostedt (VMware) rostedt@goodmis.org
Thanks!
-- Steve
-- Steve
Add a testcase for max stack tracer, which checks basic max stack usage tracing and its filter feature.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../ftrace/test.d/ftrace/func_stack_tracer.tc | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc new file mode 100644 index 000000000000..b414f0e3c646 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc @@ -0,0 +1,39 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: ftrace - Max stack tracer +# Test the basic function of max-stack usage tracing + +if [ ! -f stack_trace ]; then + echo "Max stack tracer is not supported - please make CONFIG_STACK_TRACER=y" + exit_unsupported +fi + +echo > stack_trace_filter +echo 0 > stack_max_size +echo 1 > /proc/sys/kernel/stack_tracer_enabled + +: "Fork and wait for the first entry become !lock" +timeout=10 +while [ $timeout -ne 0 ]; do + ( echo "forked" ) + FL=`grep " 0)" stack_trace` + echo $FL | grep -q "lock" || break; + timeout=$((timeout - 1)) +done +echo 0 > /proc/sys/kernel/stack_tracer_enabled + +echo '*lock*' > stack_trace_filter +test `cat stack_trace_filter | wc -l` -eq `grep lock stack_trace_filter | wc -l` + +echo 0 > stack_max_size +echo 1 > /proc/sys/kernel/stack_tracer_enabled + +: "Fork and always the first entry including lock" +timeout=10 +while [ $timeout -ne 0 ]; do + ( echo "forked" ) + FL=`grep " 0)" stack_trace` + echo $FL | grep -q "lock" + timeout=$((timeout - 1)) +done +echo 0 > /proc/sys/kernel/stack_tracer_enabled
On Fri, 17 Aug 2018 01:40:30 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for max stack tracer, which checks basic max stack usage tracing and its filter feature.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../ftrace/test.d/ftrace/func_stack_tracer.tc | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc new file mode 100644 index 000000000000..b414f0e3c646 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc @@ -0,0 +1,39 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: ftrace - Max stack tracer +# Test the basic function of max-stack usage tracing
+if [ ! -f stack_trace ]; then
- echo "Max stack tracer is not supported - please make CONFIG_STACK_TRACER=y"
- exit_unsupported
+fi
+echo > stack_trace_filter +echo 0 > stack_max_size +echo 1 > /proc/sys/kernel/stack_tracer_enabled
+: "Fork and wait for the first entry become !lock" +timeout=10 +while [ $timeout -ne 0 ]; do
- ( echo "forked" )
- FL=`grep " 0)" stack_trace`
- echo $FL | grep -q "lock" || break;
- timeout=$((timeout - 1))
+done +echo 0 > /proc/sys/kernel/stack_tracer_enabled
+echo '*lock*' > stack_trace_filter +test `cat stack_trace_filter | wc -l` -eq `grep lock stack_trace_filter | wc -l`
+echo 0 > stack_max_size +echo 1 > /proc/sys/kernel/stack_tracer_enabled
This test fails quite a bit because it doesn't guarantee that another stack trace gets in that is bigger, and we don't find the "lock".
-- Steve
+: "Fork and always the first entry including lock" +timeout=10 +while [ $timeout -ne 0 ]; do
- ( echo "forked" )
- FL=`grep " 0)" stack_trace`
- echo $FL | grep -q "lock"
- timeout=$((timeout - 1))
+done +echo 0 > /proc/sys/kernel/stack_tracer_enabled
On Fri, 24 Aug 2018 19:23:52 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:40:30 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for max stack tracer, which checks basic max stack usage tracing and its filter feature.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../ftrace/test.d/ftrace/func_stack_tracer.tc | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc new file mode 100644 index 000000000000..b414f0e3c646 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc @@ -0,0 +1,39 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: ftrace - Max stack tracer +# Test the basic function of max-stack usage tracing
+if [ ! -f stack_trace ]; then
- echo "Max stack tracer is not supported - please make CONFIG_STACK_TRACER=y"
- exit_unsupported
+fi
+echo > stack_trace_filter +echo 0 > stack_max_size +echo 1 > /proc/sys/kernel/stack_tracer_enabled
+: "Fork and wait for the first entry become !lock" +timeout=10 +while [ $timeout -ne 0 ]; do
- ( echo "forked" )
- FL=`grep " 0)" stack_trace`
- echo $FL | grep -q "lock" || break;
- timeout=$((timeout - 1))
+done +echo 0 > /proc/sys/kernel/stack_tracer_enabled
+echo '*lock*' > stack_trace_filter +test `cat stack_trace_filter | wc -l` -eq `grep lock stack_trace_filter | wc -l`
+echo 0 > stack_max_size +echo 1 > /proc/sys/kernel/stack_tracer_enabled
This test fails quite a bit because it doesn't guarantee that another stack trace gets in that is bigger, and we don't find the "lock".
Hmm, maybe I misunderstand what is the stack_trace_filter. I thought it filtered the function that triggered stack trace, so the top of stack trace was always filtered function. If not, what does this filter?
Thank you,
-- Steve
+: "Fork and always the first entry including lock" +timeout=10 +while [ $timeout -ne 0 ]; do
- ( echo "forked" )
- FL=`grep " 0)" stack_trace`
- echo $FL | grep -q "lock"
- timeout=$((timeout - 1))
+done +echo 0 > /proc/sys/kernel/stack_tracer_enabled
On Sat, 25 Aug 2018 10:45:09 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
On Fri, 24 Aug 2018 19:23:52 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:40:30 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for max stack tracer, which checks basic max stack usage tracing and its filter feature.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../ftrace/test.d/ftrace/func_stack_tracer.tc | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc new file mode 100644 index 000000000000..b414f0e3c646 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc @@ -0,0 +1,39 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: ftrace - Max stack tracer +# Test the basic function of max-stack usage tracing
+if [ ! -f stack_trace ]; then
- echo "Max stack tracer is not supported - please make CONFIG_STACK_TRACER=y"
- exit_unsupported
+fi
+echo > stack_trace_filter +echo 0 > stack_max_size +echo 1 > /proc/sys/kernel/stack_tracer_enabled
+: "Fork and wait for the first entry become !lock" +timeout=10 +while [ $timeout -ne 0 ]; do
- ( echo "forked" )
- FL=`grep " 0)" stack_trace`
- echo $FL | grep -q "lock" || break;
- timeout=$((timeout - 1))
+done +echo 0 > /proc/sys/kernel/stack_tracer_enabled
+echo '*lock*' > stack_trace_filter +test `cat stack_trace_filter | wc -l` -eq `grep lock stack_trace_filter | wc -l`
+echo 0 > stack_max_size +echo 1 > /proc/sys/kernel/stack_tracer_enabled
This test fails quite a bit because it doesn't guarantee that another stack trace gets in that is bigger, and we don't find the "lock".
Hmm, maybe I misunderstand what is the stack_trace_filter. I thought it filtered the function that triggered stack trace, so the top of stack trace was always filtered function. If not, what does this filter?
Ah, I missed the filter part, no its correct, and actually found a bug ;-) By adding this patch, it works again:
diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c index 4237eba4ef20..2b0d1ee3241c 100644 --- a/kernel/trace/trace_stack.c +++ b/kernel/trace/trace_stack.c @@ -111,7 +111,7 @@ check_stack(unsigned long ip, unsigned long *stack) stack_trace_max_size = this_size;
stack_trace_max.nr_entries = 0; - stack_trace_max.skip = 3; + stack_trace_max.skip = 0;
save_stack_trace(&stack_trace_max);
-- Steve
+: "Fork and always the first entry including lock" +timeout=10 +while [ $timeout -ne 0 ]; do
- ( echo "forked" )
- FL=`grep " 0)" stack_trace`
- echo $FL | grep -q "lock"
- timeout=$((timeout - 1))
+done +echo 0 > /proc/sys/kernel/stack_tracer_enabled
On Fri, 24 Aug 2018 22:41:22 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Sat, 25 Aug 2018 10:45:09 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
On Fri, 24 Aug 2018 19:23:52 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:40:30 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for max stack tracer, which checks basic max stack usage tracing and its filter feature.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../ftrace/test.d/ftrace/func_stack_tracer.tc | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc new file mode 100644 index 000000000000..b414f0e3c646 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc @@ -0,0 +1,39 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: ftrace - Max stack tracer +# Test the basic function of max-stack usage tracing
+if [ ! -f stack_trace ]; then
- echo "Max stack tracer is not supported - please make CONFIG_STACK_TRACER=y"
- exit_unsupported
+fi
+echo > stack_trace_filter +echo 0 > stack_max_size +echo 1 > /proc/sys/kernel/stack_tracer_enabled
+: "Fork and wait for the first entry become !lock" +timeout=10 +while [ $timeout -ne 0 ]; do
- ( echo "forked" )
- FL=`grep " 0)" stack_trace`
- echo $FL | grep -q "lock" || break;
- timeout=$((timeout - 1))
+done +echo 0 > /proc/sys/kernel/stack_tracer_enabled
+echo '*lock*' > stack_trace_filter +test `cat stack_trace_filter | wc -l` -eq `grep lock stack_trace_filter | wc -l`
+echo 0 > stack_max_size +echo 1 > /proc/sys/kernel/stack_tracer_enabled
This test fails quite a bit because it doesn't guarantee that another stack trace gets in that is bigger, and we don't find the "lock".
Hmm, maybe I misunderstand what is the stack_trace_filter. I thought it filtered the function that triggered stack trace, so the top of stack trace was always filtered function. If not, what does this filter?
Ah, I missed the filter part, no its correct, and actually found a bug ;-) By adding this patch, it works again:
Great! this shows ftracetest really works :) Anyway, with this fix, we don't need the timeout things anymore.
Thanks!
diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c index 4237eba4ef20..2b0d1ee3241c 100644 --- a/kernel/trace/trace_stack.c +++ b/kernel/trace/trace_stack.c @@ -111,7 +111,7 @@ check_stack(unsigned long ip, unsigned long *stack) stack_trace_max_size = this_size; stack_trace_max.nr_entries = 0;
- stack_trace_max.skip = 3;
- stack_trace_max.skip = 0;
save_stack_trace(&stack_trace_max);
-- Steve
+: "Fork and always the first entry including lock" +timeout=10 +while [ $timeout -ne 0 ]; do
- ( echo "forked" )
- FL=`grep " 0)" stack_trace`
- echo $FL | grep -q "lock"
- timeout=$((timeout - 1))
+done +echo 0 > /proc/sys/kernel/stack_tracer_enabled
Add a testcase for function filter on module.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../ftrace/test.d/ftrace/func_mod_trace.tc | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc new file mode 100644 index 000000000000..359380c3834f --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc @@ -0,0 +1,24 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: ftrace - function trace on module + +[ ! -f set_ftrace_filter ] && exit_unsupported + +: "mod: allows to filter a non exist function" +echo 'non_exist_func:mod:non_exist_module' > set_ftrace_filter +grep -q "non_exist_func" set_ftrace_filter + +: "mod: on exist module" +echo '*:mod:trace_printk' > set_ftrace_filter +if ! modprobe trace-printk.ko ; then + echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK= +m" + exit_unresolved; +fi + +: "Wildcard should be resolved after loading module" +grep -q "trace_printk_irq_work" set_ftrace_filter + +: "After removing the filter becomes empty" +rmmod trace_printk +test `cat set_ftrace_filter | wc -l` -eq 0
On Fri, 17 Aug 2018 01:40:59 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for function filter on module.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../ftrace/test.d/ftrace/func_mod_trace.tc | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc new file mode 100644 index 000000000000..359380c3834f --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc @@ -0,0 +1,24 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: ftrace - function trace on module
+[ ! -f set_ftrace_filter ] && exit_unsupported
+: "mod: allows to filter a non exist function" +echo 'non_exist_func:mod:non_exist_module' > set_ftrace_filter +grep -q "non_exist_func" set_ftrace_filter
+: "mod: on exist module" +echo '*:mod:trace_printk' > set_ftrace_filter +if ! modprobe trace-printk.ko ; then
Need to remove the '.ko'
-- Steve
- echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK=
+m"
- exit_unresolved;
+fi
+: "Wildcard should be resolved after loading module" +grep -q "trace_printk_irq_work" set_ftrace_filter
+: "After removing the filter becomes empty" +rmmod trace_printk +test `cat set_ftrace_filter | wc -l` -eq 0
Add a simple testcase for trace_pipe which can consume ringbuffer.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../selftests/ftrace/test.d/00basic/trace_pipe.tc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc
diff --git a/tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc b/tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc new file mode 100644 index 000000000000..a7dd6fda487a --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc @@ -0,0 +1,15 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: trace_pipe and trace_marker + +[ ! -f trace_marker ] && exit_unsupported + +echo "test input 1" > trace_marker + +: "trace interface never consume the ring buffer" +grep -q "test input 1" trace +grep -q "test input 1" trace + +: "trace interface never consume the ring buffer" +head -n 1 trace_pipe | grep -q "test input 1" +! grep -q "test input 1" trace
On Fri, 17 Aug 2018 01:41:27 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a simple testcase for trace_pipe which can consume ringbuffer.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../selftests/ftrace/test.d/00basic/trace_pipe.tc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc
diff --git a/tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc b/tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc new file mode 100644 index 000000000000..a7dd6fda487a --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc @@ -0,0 +1,15 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: trace_pipe and trace_marker
Should add:
# flags: instance
-- Steve
+[ ! -f trace_marker ] && exit_unsupported
+echo "test input 1" > trace_marker
+: "trace interface never consume the ring buffer" +grep -q "test input 1" trace +grep -q "test input 1" trace
+: "trace interface never consume the ring buffer" +head -n 1 trace_pipe | grep -q "test input 1" +! grep -q "test input 1" trace
On Fri, 24 Aug 2018 19:26:29 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:41:27 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a simple testcase for trace_pipe which can consume ringbuffer.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../selftests/ftrace/test.d/00basic/trace_pipe.tc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc
diff --git a/tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc b/tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc new file mode 100644 index 000000000000..a7dd6fda487a --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc @@ -0,0 +1,15 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: trace_pipe and trace_marker
Should add:
# flags: instance
Ah, right!
Thanks!
-- Steve
+[ ! -f trace_marker ] && exit_unsupported
+echo "test input 1" > trace_marker
+: "trace interface never consume the ring buffer" +grep -q "test input 1" trace +grep -q "test input 1" trace
+: "trace interface never consume the ring buffer" +head -n 1 trace_pipe | grep -q "test input 1" +! grep -q "test input 1" trace
Add a test case for stacktrace filter command for ftrace.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../ftrace/test.d/ftrace/func-filter-stacktrace.tc | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc new file mode 100644 index 000000000000..ec0d8216d509 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc @@ -0,0 +1,12 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: ftrace - stacktrace filter command + +echo _do_fork:stacktrace >> set_ftrace_filter + +grep -q "_do_fork:stacktrace:unlimited" set_ftrace_filter + +(echo "forked"; sleep 1) + +grep -q "<stack trace>" trace +
On Fri, 17 Aug 2018 01:41:55 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a test case for stacktrace filter command for ftrace.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../ftrace/test.d/ftrace/func-filter-stacktrace.tc | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc new file mode 100644 index 000000000000..ec0d8216d509 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc @@ -0,0 +1,12 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: ftrace - stacktrace filter command
Add:
# flags: instance
+echo _do_fork:stacktrace >> set_ftrace_filter
+grep -q "_do_fork:stacktrace:unlimited" set_ftrace_filter
+(echo "forked"; sleep 1)
+grep -q "<stack trace>" trace
Can remove the extra line.
-- Steve
Add a testcase for wakeup tracer.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- tools/testing/selftests/ftrace/config | 1 + .../selftests/ftrace/test.d/tracer/wakeup.tc | 25 ++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/wakeup.tc
diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index b7ac74fcb0fa..c2c8de4fafff 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -4,6 +4,7 @@ CONFIG_FUNCTION_PROFILER=y CONFIG_TRACER_SNAPSHOT=y CONFIG_STACK_TRACER=y CONFIG_HIST_TRIGGERS=y +CONFIG_SCHED_TRACER=y CONFIG_PREEMPT_TRACER=y CONFIG_IRQSOFF_TRACER=y CONFIG_PREEMPTIRQ_DELAY_TEST=m diff --git a/tools/testing/selftests/ftrace/test.d/tracer/wakeup.tc b/tools/testing/selftests/ftrace/test.d/tracer/wakeup.tc new file mode 100644 index 000000000000..e3005fa785f0 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/tracer/wakeup.tc @@ -0,0 +1,25 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: Test 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 + +: "Wakeup higher priority task" +chrt -f 5 sleep 1 + +echo 0 > tracing_on +grep '+ [[[:digit:]]*]' trace +grep '==> [[[:digit:]]*]' trace +
Add a testcase for wakeup_rt tracer. This requires chrt command to test.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../selftests/ftrace/test.d/tracer/wakeup_rt.tc | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc
diff --git a/tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc b/tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc new file mode 100644 index 000000000000..3f279072ec2d --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc @@ -0,0 +1,25 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: Test wakeup RT tracer + +if ! which nice ; 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 > current_tracer +echo 1 > tracing_on +echo 0 > tracing_max_latency + +: "Wakeup a realtime task" +chrt -f 5 sleep 1 + +echo 0 > tracing_on +grep "+ [[[:digit:]]*]" trace +grep "==> [[[:digit:]]*]" trace +
On Fri, 17 Aug 2018 01:42:52 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for wakeup_rt tracer. This requires chrt command to test.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../selftests/ftrace/test.d/tracer/wakeup_rt.tc | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc
diff --git a/tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc b/tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc new file mode 100644 index 000000000000..3f279072ec2d --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc @@ -0,0 +1,25 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: Test wakeup RT tracer
+if ! which nice ; 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 > current_tracer
I think you meant "echo wakeup_rt" ;-)
-- Steve
+echo 1 > tracing_on +echo 0 > tracing_max_latency
+: "Wakeup a realtime task" +chrt -f 5 sleep 1
+echo 0 > tracing_on +grep "+ [[[:digit:]]*]" trace +grep "==> [[[:digit:]]*]" trace
On Fri, 24 Aug 2018 22:09:49 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:42:52 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for wakeup_rt tracer. This requires chrt command to test.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../selftests/ftrace/test.d/tracer/wakeup_rt.tc | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc
diff --git a/tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc b/tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc new file mode 100644 index 000000000000..3f279072ec2d --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc @@ -0,0 +1,25 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: Test wakeup RT tracer
+if ! which nice ; 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 > current_tracer
I think you meant "echo wakeup_rt" ;-)
Oops, that's my fault....
Thanks!
-- Steve
+echo 1 > tracing_on +echo 0 > tracing_max_latency
+: "Wakeup a realtime task" +chrt -f 5 sleep 1
+echo 0 > tracing_on +grep "+ [[[:digit:]]*]" trace +grep "==> [[[:digit:]]*]" trace
Add a testcase for tracing_cpumask with function tracer.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../selftests/ftrace/test.d/ftrace/func_cpumask.tc | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc new file mode 100644 index 000000000000..37420e355445 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc @@ -0,0 +1,34 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: ftrace - function trace with cpumask + +NP=`grep "^processor" /proc/cpuinfo | wc -l` + +if [ $NP -eq 1 ] ;then + echo "We can not test cpumask on UP environment" + exit_unresolved +fi + +do_reset() { + echo ffff > tracing_cpumask +} + +echo 0 > tracing_on +echo > trace +: "Bitmask only record on CPU1" +echo 2 > tracing_cpumask +MASK=0x`cat tracing_cpumask` +test `printf "%d" $MASK` -eq 2 || do_reset + +echo function > current_tracer +echo 1 > tracing_on +(echo "forked") +echo 0 > tracing_on + +: "Check CPU1 events are recorded" +grep -q -e "[001]" trace || do_reset + +: "There should be No other cpu events" +! grep -qv -e "[001]" -e "^#" trace || do_reset + +do_reset
On Fri, 17 Aug 2018 01:43:20 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for tracing_cpumask with function tracer.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../selftests/ftrace/test.d/ftrace/func_cpumask.tc | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc new file mode 100644 index 000000000000..37420e355445 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc @@ -0,0 +1,34 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: ftrace - function trace with cpumask
+NP=`grep "^processor" /proc/cpuinfo | wc -l`
A better way to find the number of CPUs is to either use "nproc" or just look at /sys/devices/system/cpu/cpu[0-9]*. Because what I learned from experience is that searching for strings in /proc/cpuinfo is not cross arch compatible. For example, other archs don't use "processor" in the stings and would come up with a box with 0 CPUs. Something we've been working on for some time ;-)
-- Steve
+if [ $NP -eq 1 ] ;then
- echo "We can not test cpumask on UP environment"
- exit_unresolved
+fi
+do_reset() {
- echo ffff > tracing_cpumask
Why ffff? Should we save what was in tracing_cpumask first and just reuse it?
-- Steve
+}
+echo 0 > tracing_on +echo > trace +: "Bitmask only record on CPU1" +echo 2 > tracing_cpumask +MASK=0x`cat tracing_cpumask` +test `printf "%d" $MASK` -eq 2 || do_reset
+echo function > current_tracer +echo 1 > tracing_on +(echo "forked") +echo 0 > tracing_on
+: "Check CPU1 events are recorded" +grep -q -e "[001]" trace || do_reset
+: "There should be No other cpu events" +! grep -qv -e "[001]" -e "^#" trace || do_reset
+do_reset
On Fri, 24 Aug 2018 22:18:22 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:43:20 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for tracing_cpumask with function tracer.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../selftests/ftrace/test.d/ftrace/func_cpumask.tc | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc new file mode 100644 index 000000000000..37420e355445 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc @@ -0,0 +1,34 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: ftrace - function trace with cpumask
+NP=`grep "^processor" /proc/cpuinfo | wc -l`
A better way to find the number of CPUs is to either use "nproc" or just look at /sys/devices/system/cpu/cpu[0-9]*. Because what I learned from experience is that searching for strings in /proc/cpuinfo is not cross arch compatible. For example, other archs don't use "processor" in the stings and would come up with a box with 0 CPUs. Something we've been working on for some time ;-)
OK, I'll use nproc.
-- Steve
+if [ $NP -eq 1 ] ;then
- echo "We can not test cpumask on UP environment"
- exit_unresolved
+fi
+do_reset() {
- echo ffff > tracing_cpumask
Why ffff? Should we save what was in tracing_cpumask first and just reuse it?
OK, it also works. I just took a margin :)
Thanks!
-- Steve
+}
+echo 0 > tracing_on +echo > trace +: "Bitmask only record on CPU1" +echo 2 > tracing_cpumask +MASK=0x`cat tracing_cpumask` +test `printf "%d" $MASK` -eq 2 || do_reset
+echo function > current_tracer +echo 1 > tracing_on +(echo "forked") +echo 0 > tracing_on
+: "Check CPU1 events are recorded" +grep -q -e "[001]" trace || do_reset
+: "There should be No other cpu events" +! grep -qv -e "[001]" -e "^#" trace || do_reset
+do_reset
Add a testcase for tracing output format using trace_marker. This tests raw, hex and bin format output.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- .../ftrace/test.d/00basic/print_format.tc | 51 ++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/print_format.tc
diff --git a/tools/testing/selftests/ftrace/test.d/00basic/print_format.tc b/tools/testing/selftests/ftrace/test.d/00basic/print_format.tc new file mode 100644 index 000000000000..55feb542e83e --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/00basic/print_format.tc @@ -0,0 +1,51 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: Change print trace format + +if [ ! -f trace_marker ]; then + echo "trace_marker is not supported, can not continue testing" + exit_unresolved +fi + +do_reset() { + if [ `cat options/bin` -eq 1 ]; then + grep -v "^#" trace | od -h | cut -f 2- -d " " | xargs echo + fi + echo 0 > options/hex + echo 0 > options/raw + echo 0 > options/bin + cat trace + exit 1 +} + +echo > trace +echo "abcdefgh" > trace_marker +echo 0 > tracing_on + +: "Get the pid and cpu#" +IDS=`grep -v "^#" trace | sed -e 's/[[:space:]]*.*-([[:digit:]]*)[[:space:]]*[([[:digit:]]*)].*/\1 \2/'` + +read_pid_cpu() { + _PID=$1 + _CPU=`printf "%d" $2` +} + +read_pid_cpu $IDS + +: "Test raw output format" +echo 1 > options/raw +grep -v "^#" trace | grep "^$_PID $_CPU" || do_reset +echo 0 > options/raw + +: "Test hex output format" +echo 1 > options/hex +PAT=`printf "%08x %08x" $_PID $_CPU` +grep -v "^#" trace | grep "^$PAT" || do_reset +echo 0 > options/hex + +: "Test bin output format" +echo 1 > options/bin +PAT=`printf "%04x [[:xdigit:]]* [[:xdigit:]]*%02x" $_PID $_CPU` +# Make a stream of hexdump +grep -v "^#" trace | od -h | cut -f 2- -d " " | xargs echo | grep "$PAT" || do_reset +echo 0 > options/bin
On Fri, 17 Aug 2018 01:43:49 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for tracing output format using trace_marker. This tests raw, hex and bin format output.
I'd like to deprecate these formats. They are useless ever since we implemented trace_pipe_raw.
Let's not add this test.
Thanks,
-- Steve
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../ftrace/test.d/00basic/print_format.tc | 51 ++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/print_format.tc
diff --git a/tools/testing/selftests/ftrace/test.d/00basic/print_format.tc b/tools/testing/selftests/ftrace/test.d/00basic/print_format.tc new file mode 100644 index 000000000000..55feb542e83e --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/00basic/print_format.tc @@ -0,0 +1,51 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: Change print trace format
+if [ ! -f trace_marker ]; then
- echo "trace_marker is not supported, can not continue testing"
- exit_unresolved
+fi
+do_reset() {
- if [ `cat options/bin` -eq 1 ]; then
- grep -v "^#" trace | od -h | cut -f 2- -d " " | xargs echo
- fi
- echo 0 > options/hex
- echo 0 > options/raw
- echo 0 > options/bin
- cat trace
- exit 1
+}
+echo > trace +echo "abcdefgh" > trace_marker +echo 0 > tracing_on
+: "Get the pid and cpu#" +IDS=`grep -v "^#" trace | sed -e 's/[[:space:]]*.*-([[:digit:]]*)[[:space:]]*[([[:digit:]]*)].*/\1 \2/'`
+read_pid_cpu() {
- _PID=$1
- _CPU=`printf "%d" $2`
+}
+read_pid_cpu $IDS
+: "Test raw output format" +echo 1 > options/raw +grep -v "^#" trace | grep "^$_PID $_CPU" || do_reset +echo 0 > options/raw
+: "Test hex output format" +echo 1 > options/hex +PAT=`printf "%08x %08x" $_PID $_CPU` +grep -v "^#" trace | grep "^$PAT" || do_reset +echo 0 > options/hex
+: "Test bin output format" +echo 1 > options/bin +PAT=`printf "%04x [[:xdigit:]]* [[:xdigit:]]*%02x" $_PID $_CPU` +# Make a stream of hexdump +grep -v "^#" trace | od -h | cut -f 2- -d " " | xargs echo | grep "$PAT" || do_reset +echo 0 > options/bin
On Fri, 24 Aug 2018 22:19:26 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:43:49 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a testcase for tracing output format using trace_marker. This tests raw, hex and bin format output.
I'd like to deprecate these formats. They are useless ever since we implemented trace_pipe_raw.
Let's not add this test.
OK, I'll drop it. I think this test code itself can reuse for testing trace_pipe_raw too. (for next time?)
Thank you,
Thanks,
-- Steve
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
.../ftrace/test.d/00basic/print_format.tc | 51 ++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/print_format.tc
diff --git a/tools/testing/selftests/ftrace/test.d/00basic/print_format.tc b/tools/testing/selftests/ftrace/test.d/00basic/print_format.tc new file mode 100644 index 000000000000..55feb542e83e --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/00basic/print_format.tc @@ -0,0 +1,51 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: Change print trace format
+if [ ! -f trace_marker ]; then
- echo "trace_marker is not supported, can not continue testing"
- exit_unresolved
+fi
+do_reset() {
- if [ `cat options/bin` -eq 1 ]; then
- grep -v "^#" trace | od -h | cut -f 2- -d " " | xargs echo
- fi
- echo 0 > options/hex
- echo 0 > options/raw
- echo 0 > options/bin
- cat trace
- exit 1
+}
+echo > trace +echo "abcdefgh" > trace_marker +echo 0 > tracing_on
+: "Get the pid and cpu#" +IDS=`grep -v "^#" trace | sed -e 's/[[:space:]]*.*-([[:digit:]]*)[[:space:]]*[([[:digit:]]*)].*/\1 \2/'`
+read_pid_cpu() {
- _PID=$1
- _CPU=`printf "%d" $2`
+}
+read_pid_cpu $IDS
+: "Test raw output format" +echo 1 > options/raw +grep -v "^#" trace | grep "^$_PID $_CPU" || do_reset +echo 0 > options/raw
+: "Test hex output format" +echo 1 > options/hex +PAT=`printf "%08x %08x" $_PID $_CPU` +grep -v "^#" trace | grep "^$PAT" || do_reset +echo 0 > options/hex
+: "Test bin output format" +echo 1 > options/bin +PAT=`printf "%04x [[:xdigit:]]* [[:xdigit:]]*%02x" $_PID $_CPU` +# Make a stream of hexdump +grep -v "^#" trace | od -h | cut -f 2- -d " " | xargs echo | grep "$PAT" || do_reset +echo 0 > options/bin
Add a basic testcase for blktrace. For making it portable, this test uses a loop device.
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org --- tools/testing/selftests/ftrace/config | 1 .../testing/selftests/ftrace/test.d/tracer/blk.tc | 91 ++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/blk.tc
diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index c2c8de4fafff..d999032442e1 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -5,6 +5,7 @@ CONFIG_TRACER_SNAPSHOT=y CONFIG_STACK_TRACER=y CONFIG_HIST_TRIGGERS=y CONFIG_SCHED_TRACER=y +CONFIG_BLK_DEV_IO_TRACE=y CONFIG_PREEMPT_TRACER=y CONFIG_IRQSOFF_TRACER=y CONFIG_PREEMPTIRQ_DELAY_TEST=m diff --git a/tools/testing/selftests/ftrace/test.d/tracer/blk.tc b/tools/testing/selftests/ftrace/test.d/tracer/blk.tc new file mode 100644 index 000000000000..9d6e72810c8a --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/tracer/blk.tc @@ -0,0 +1,91 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: Test blktrace + +IMG=$TMPDIR/fs.img +MNTDIR=$TMPDIR/mnt + +if ! grep -wq "blk" available_tracers ; then + echo "blktrace is not supported" + exit_unsupported +fi + +available_fs() { #fstype + grep -q $1 /proc/filesystems && which mkfs.$1 +} + +if available_fs ext3; then + FSTYPE=ext3 +elif available_fs ext4; then + FSTYPE=ext4 +elif available_fs ext2; then + FSTYPE=ext2 +elif available_fs xfs; then + FSTYPE=xfs +elif available_fs btrfs; then + FSTYPE=btrfs +else + echo "No available block-based filesystems" + exit_unresolved +fi + +if ! which losetup; then + echo "No losetup found" + exit_unresolved +fi +LODEV=`losetup -f` +LODEVTRACE=/sys/block/`basename $LODEV`/trace + +do_cleanup() { + if [ -d $MNTDIR ]; then + umount $MNTDIR ||: + fi + losetup -d $LODEV ||: + rm -f $IMG +} + +# workload failure is not a tracer's failure +workload_fail() { + do_cleanup + echo "Failed to run workload" + exit_unresolved +} + +do_fail() { + do_cleanup + echo "Test failed" + exit 1 +} + +enable_lodevtrace() { + if [ `cat $LODEVTRACE/enable` -ne 1 ]; then + echo 1 > $LODEVTRACE/enable + fi +} + +echo blk > current_tracer + +dd if=/dev/zero of=$IMG bs=1M count=10 &&\ +losetup $LODEV $IMG &&\ +mkfs.$FSTYPE $LODEV &&\ +mkdir -p $MNTDIR &&\ +mount -t $FSTYPE $LODEV $MNTDIR &&\ +enable_lodevtrace &&\ +dd if=/dev/urandom of=$MNTDIR/testfile bs=1M count=1 &&\ +sync &&\ +umount $MNTDIR || workload_fail + +grep -q "[dd]" trace || do_fail +grep -q "[umount]" trace || do_fail +echo > trace + +losetup $LODEV $IMG &&\ +mount -t $FSTYPE $LODEV $MNTDIR &&\ +cat $MNTDIR/testfile > /dev/null &&\ +echo 0 > $LODEVTRACE/enable &&\ +umount $MNTDIR || workload_fail + +grep -q "[cat]" trace || do_fail +grep -q "[mount]" trace || do_fail + +do_cleanup
On Fri, 17 Aug 2018 01:44:18 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a basic testcase for blktrace. For making it portable, this test uses a loop device.
blktrace is a bit special, as it's maintained by the block subsystem and not really truly part of ftrace. It lives in the tracing directory, but the changes go through Jens's tree. I'm guessing that Jens already has tests for this. Not sure we should add a test to the ftrace selftests for this tracer.
Jens, you have thoughts on this?
-- Steve
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
tools/testing/selftests/ftrace/config | 1 .../testing/selftests/ftrace/test.d/tracer/blk.tc | 91 ++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/blk.tc
diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index c2c8de4fafff..d999032442e1 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -5,6 +5,7 @@ CONFIG_TRACER_SNAPSHOT=y CONFIG_STACK_TRACER=y CONFIG_HIST_TRIGGERS=y CONFIG_SCHED_TRACER=y +CONFIG_BLK_DEV_IO_TRACE=y CONFIG_PREEMPT_TRACER=y CONFIG_IRQSOFF_TRACER=y CONFIG_PREEMPTIRQ_DELAY_TEST=m diff --git a/tools/testing/selftests/ftrace/test.d/tracer/blk.tc b/tools/testing/selftests/ftrace/test.d/tracer/blk.tc new file mode 100644 index 000000000000..9d6e72810c8a --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/tracer/blk.tc @@ -0,0 +1,91 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: Test blktrace
+IMG=$TMPDIR/fs.img +MNTDIR=$TMPDIR/mnt
+if ! grep -wq "blk" available_tracers ; then
- echo "blktrace is not supported"
- exit_unsupported
+fi
+available_fs() { #fstype
- grep -q $1 /proc/filesystems && which mkfs.$1
+}
+if available_fs ext3; then
- FSTYPE=ext3
+elif available_fs ext4; then
- FSTYPE=ext4
+elif available_fs ext2; then
- FSTYPE=ext2
+elif available_fs xfs; then
- FSTYPE=xfs
+elif available_fs btrfs; then
- FSTYPE=btrfs
+else
- echo "No available block-based filesystems"
- exit_unresolved
+fi
+if ! which losetup; then
- echo "No losetup found"
- exit_unresolved
+fi +LODEV=`losetup -f` +LODEVTRACE=/sys/block/`basename $LODEV`/trace
+do_cleanup() {
- if [ -d $MNTDIR ]; then
- umount $MNTDIR ||:
- fi
- losetup -d $LODEV ||:
- rm -f $IMG
+}
+# workload failure is not a tracer's failure +workload_fail() {
- do_cleanup
- echo "Failed to run workload"
- exit_unresolved
+}
+do_fail() {
- do_cleanup
- echo "Test failed"
- exit 1
+}
+enable_lodevtrace() {
- if [ `cat $LODEVTRACE/enable` -ne 1 ]; then
- echo 1 > $LODEVTRACE/enable
- fi
+}
+echo blk > current_tracer
+dd if=/dev/zero of=$IMG bs=1M count=10 &&\ +losetup $LODEV $IMG &&\ +mkfs.$FSTYPE $LODEV &&\ +mkdir -p $MNTDIR &&\ +mount -t $FSTYPE $LODEV $MNTDIR &&\ +enable_lodevtrace &&\ +dd if=/dev/urandom of=$MNTDIR/testfile bs=1M count=1 &&\ +sync &&\ +umount $MNTDIR || workload_fail
+grep -q "[dd]" trace || do_fail +grep -q "[umount]" trace || do_fail +echo > trace
+losetup $LODEV $IMG &&\ +mount -t $FSTYPE $LODEV $MNTDIR &&\ +cat $MNTDIR/testfile > /dev/null &&\ +echo 0 > $LODEVTRACE/enable &&\ +umount $MNTDIR || workload_fail
+grep -q "[cat]" trace || do_fail +grep -q "[mount]" trace || do_fail
+do_cleanup
On Fri, 24 Aug 2018 22:22:19 -0400 Steven Rostedt rostedt@goodmis.org wrote:
On Fri, 17 Aug 2018 01:44:18 +0900 Masami Hiramatsu mhiramat@kernel.org wrote:
Add a basic testcase for blktrace. For making it portable, this test uses a loop device.
blktrace is a bit special, as it's maintained by the block subsystem and not really truly part of ftrace. It lives in the tracing directory, but the changes go through Jens's tree. I'm guessing that Jens already has tests for this. Not sure we should add a test to the ftrace selftests for this tracer.
I see. But as far as it is in the ftrace, and can easily wake it up from tracefs interface, I think we can have a basic testcase in ftracetest, just for keeping it doesn't break anything.
Jens, you have thoughts on this?
Jens, ping?
Thank you,
-- Steve
Signed-off-by: Masami Hiramatsu mhiramat@kernel.org
tools/testing/selftests/ftrace/config | 1 .../testing/selftests/ftrace/test.d/tracer/blk.tc | 91 ++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/tracer/blk.tc
diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index c2c8de4fafff..d999032442e1 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -5,6 +5,7 @@ CONFIG_TRACER_SNAPSHOT=y CONFIG_STACK_TRACER=y CONFIG_HIST_TRIGGERS=y CONFIG_SCHED_TRACER=y +CONFIG_BLK_DEV_IO_TRACE=y CONFIG_PREEMPT_TRACER=y CONFIG_IRQSOFF_TRACER=y CONFIG_PREEMPTIRQ_DELAY_TEST=m diff --git a/tools/testing/selftests/ftrace/test.d/tracer/blk.tc b/tools/testing/selftests/ftrace/test.d/tracer/blk.tc new file mode 100644 index 000000000000..9d6e72810c8a --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/tracer/blk.tc @@ -0,0 +1,91 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL2.0 +# description: Test blktrace
+IMG=$TMPDIR/fs.img +MNTDIR=$TMPDIR/mnt
+if ! grep -wq "blk" available_tracers ; then
- echo "blktrace is not supported"
- exit_unsupported
+fi
+available_fs() { #fstype
- grep -q $1 /proc/filesystems && which mkfs.$1
+}
+if available_fs ext3; then
- FSTYPE=ext3
+elif available_fs ext4; then
- FSTYPE=ext4
+elif available_fs ext2; then
- FSTYPE=ext2
+elif available_fs xfs; then
- FSTYPE=xfs
+elif available_fs btrfs; then
- FSTYPE=btrfs
+else
- echo "No available block-based filesystems"
- exit_unresolved
+fi
+if ! which losetup; then
- echo "No losetup found"
- exit_unresolved
+fi +LODEV=`losetup -f` +LODEVTRACE=/sys/block/`basename $LODEV`/trace
+do_cleanup() {
- if [ -d $MNTDIR ]; then
- umount $MNTDIR ||:
- fi
- losetup -d $LODEV ||:
- rm -f $IMG
+}
+# workload failure is not a tracer's failure +workload_fail() {
- do_cleanup
- echo "Failed to run workload"
- exit_unresolved
+}
+do_fail() {
- do_cleanup
- echo "Test failed"
- exit 1
+}
+enable_lodevtrace() {
- if [ `cat $LODEVTRACE/enable` -ne 1 ]; then
- echo 1 > $LODEVTRACE/enable
- fi
+}
+echo blk > current_tracer
+dd if=/dev/zero of=$IMG bs=1M count=10 &&\ +losetup $LODEV $IMG &&\ +mkfs.$FSTYPE $LODEV &&\ +mkdir -p $MNTDIR &&\ +mount -t $FSTYPE $LODEV $MNTDIR &&\ +enable_lodevtrace &&\ +dd if=/dev/urandom of=$MNTDIR/testfile bs=1M count=1 &&\ +sync &&\ +umount $MNTDIR || workload_fail
+grep -q "[dd]" trace || do_fail +grep -q "[umount]" trace || do_fail +echo > trace
+losetup $LODEV $IMG &&\ +mount -t $FSTYPE $LODEV $MNTDIR &&\ +cat $MNTDIR/testfile > /dev/null &&\ +echo 0 > $LODEVTRACE/enable &&\ +umount $MNTDIR || workload_fail
+grep -q "[cat]" trace || do_fail +grep -q "[mount]" trace || do_fail
+do_cleanup
linux-kselftest-mirror@lists.linaro.org