Skip to contentSkip to conversation

ftracetest: Use logfile name supported by busybox's mktemp

PATCH In review Namhyung Kim 3 participants 7 messages Nov 6, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/3 ftracetest: Use logfile name supported by busybox's mktemp

When I run the ftracetest in a busybox docker container, I saw following error. Make the logfile template to comply with busybox's mktemp. It also keep the logfiles under the logs directory.

  # /linux/tools/testing/selftests/ftrace/ftracetest
  === Ftrace unit tests ===
  mktemp: unrecognized option `--tmpdir=/linux/tools/testing/selftests/ftrace/logs/20141106-003624/'
  BusyBox v1.22.1 (2014-05-22 23:22:11 UTC) multi-call binary.

Usage: mktemp [-dt] [-p DIR] [TEMPLATE]

Create a temporary file with name based on TEMPLATE and print its name. TEMPLATE must end with XXXXXX (e.g. [/dir/]nameXXXXXX). Without TEMPLATE, -t tmp.XXXXXX is assumed.

  	-d	  Make directory, not file
  	-q	  Fail silently on errors
  	-t	  Prepend base directory name to TEMPLATE

-p DIR Use DIR as a base directory (implies -t)
-u Do not create anything; print a name

Base directory is: -p DIR, else $TMPDIR, else /tmp

[1] Basic trace file check/linux/tools/testing/selftests/ftrace/ftracetest: line 244: can't create : nonexistent directory /linux/tools/testing/selftests/ftrace/ftracetest: line 244: can't create : nonexistent directory

						  [FAIL]
---
 tools/testing/selftests/ftrace/ftracetest | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
tools/testing/selftests/ftrace/ftracetest +1 -1
index 8cc01c14262f..93b1bf5eadb5 100755
@@ -218,7 +218,7 @@ trap 'SIG_RESULT=$XFAIL' $SIG_XFAIL
 # Run one test case
 run_test() { # testfile
   local testname=`basename $1`
-  local testlog=`mktemp --tmpdir=$LOG_DIR ${testname}-XXXXXX.log`
+  local testlog=`mktemp $LOG_DIR/${testname}-log.XXXXXX`
   testcase $1
   echo "execute: "$1 > $testlog
   SIG_RESULT=0
Signature · 1 line
2.1.2
#1 lore raw

PATCH 2/3 ftracetest: Clear trace buffer after running kprobe testcases

The kprobe testcases create, use and delete dynamic events during the test but didn't clear the trace buffer so it'll leave the result after it finishes.

  # ./ftracetest
  ...
  # cat trace
  # tracer: nop
  #
  # entries-in-buffer/entries-written: 2/2   #P:12
  #
  #                              _-----=> irqs-off
  #                             / _----=> need-resched
  #                            | / _---=> hardirq/softirq
  #                            || / _--=> preempt-depth
  #                            ||| /     delay
  #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
  #              | |       |   ||||       |         |
        ftracetest-26474 [009] d..1 79417.143782: Unknown type 1099
        ftracetest-26498 [009] d..1 79417.208034: Unknown type 1101
---
 tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc | 1 +
 tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc     | 1 +
 tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc    | 1 +
 tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc | 1 +
 4 files changed, 4 insertions(+)
tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc +1 -0
index 1b8b665ab2b3..a5a426211129 100644
@@ -9,3 +9,4 @@ echo p:myevent do_fork > kprobe_events
 grep myevent kprobe_events
 test -d events/kprobes/myevent
 echo > kprobe_events
+clear_trace
tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc +1 -0
index b55c84003587..d8c7bb6581fe 100644
@@ -11,3 +11,4 @@ echo 1 > events/kprobes/myevent/enable
 echo > kprobe_events && exit 1 # this must fail
 echo 0 > events/kprobes/myevent/enable
 echo > kprobe_events # this must succeed
+clear_trace
tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc +1 -0
index a603d3f8db7b..c45ee2761354 100644
@@ -12,5 +12,6 @@ echo 1 > events/kprobes/testprobe/enable
 ( echo "forked")
 echo 0 > events/kprobes/testprobe/enable
 echo "-:testprobe" >> kprobe_events
+clear_trace
 test -d events/kprobes/testprobe && exit 1 || exit 0
 
tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc +1 -0
index 283c29e7f7c4..31717985acc7 100644
@@ -12,4 +12,5 @@ echo 1 > events/kprobes/testprobe2/enable
 ( echo "forked")
 echo 0 > events/kprobes/testprobe2/enable
 echo '-:testprobe2' >> kprobe_events
+clear_trace
 test -d events/kprobes/testprobe2 && exit 1 || exit 0
Signature · 1 line
2.1.2
Acked-by on v1 2/3
#2 lore raw

Re: [PATCH 2/3] ftracetest: Clear trace buffer after running kprobe testcases

Quoted 22 lines · Namhyung Kim

The kprobe testcases create, use and delete dynamic events during the test but didn't clear the trace buffer so it'll leave the result after it finishes.

  # ./ftracetest
  ...
  # cat trace
  # tracer: nop
  #
  # entries-in-buffer/entries-written: 2/2   #P:12
  #
  #                              _-----=> irqs-off
  #                             / _----=> need-resched
  #                            | / _---=> hardirq/softirq
  #                            || / _--=> preempt-depth
  #                            ||| /     delay
  #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
  #              | |       |   ||||       |         |
        ftracetest-26474 [009] d..1 79417.143782: Unknown type 1099
        ftracetest-26498 [009] d..1 79417.208034: Unknown type 1101
Quoted 1 line

Thank you!

Quoted 47 lines
---
 tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc | 1 +
 tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc     | 1 +
 tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc    | 1 +
 tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc | 1 +
 4 files changed, 4 insertions(+)
tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc +1 -0
index 1b8b665ab2b3..a5a426211129 100644
@@ -9,3 +9,4 @@ echo p:myevent do_fork > kprobe_events
 grep myevent kprobe_events
 test -d events/kprobes/myevent
 echo > kprobe_events
+clear_trace
tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc +1 -0
index b55c84003587..d8c7bb6581fe 100644
@@ -11,3 +11,4 @@ echo 1 > events/kprobes/myevent/enable
 echo > kprobe_events && exit 1 # this must fail
 echo 0 > events/kprobes/myevent/enable
 echo > kprobe_events # this must succeed
+clear_trace
tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc +1 -0
index a603d3f8db7b..c45ee2761354 100644
@@ -12,5 +12,6 @@ echo 1 > events/kprobes/testprobe/enable
 ( echo "forked")
 echo 0 > events/kprobes/testprobe/enable
 echo "-:testprobe" >> kprobe_events
+clear_trace
 test -d events/kprobes/testprobe && exit 1 || exit 0
 
tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc +1 -0
index 283c29e7f7c4..31717985acc7 100644
@@ -12,4 +12,5 @@ echo 1 > events/kprobes/testprobe2/enable
 ( echo "forked")
 echo 0 > events/kprobes/testprobe2/enable
 echo '-:testprobe2' >> kprobe_events
+clear_trace
 test -d events/kprobes/testprobe2 && exit 1 || exit 0
Signature · 4 lines
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Research Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: [email protected]
#3 lore raw

PATCH 3/3 ftracetest: Add basic event tracing test cases

In reply to Namhyung Kim

This patch adds basic event tracing tests like enable/disable with top-level, subsystem-level and individual event files.

  # ./ftracetest
  === Ftrace unit tests ===
  [1] Basic trace file check	[PASS]
  [2] Basic trace clock test	[PASS]
  [3] Basic event tracing check	[PASS]
  [4] Basic test for tracers	[PASS]
  [5] event tracing - enable/disable with top level files	[PASS]
  [6] event tracing - enable/disable with subsystem level files	[PASS]
  [7] event tracing - enable/disable with event level files	[PASS]
  [8] ftrace - function graph filters	[PASS]
  [9] ftrace - function profiler with function tracing	[PASS]
  [10] ftrace - function graph filters with stack tracer	[PASS]
  [11] Kretprobe dynamic event with arguments	[PASS]
  [12] Kprobe dynamic event - busy event check	[PASS]
  [13] Kprobe dynamic event with arguments	[PASS]
  [14] Kprobe dynamic event - adding and removing	[PASS]
  # of passed:  14
  # of failed:  0
  # of unresolved:  0
  # of untested:  0
  # of unsupported:  0
  # of xfailed:  0
  # of undefined(test bug):  0
---
 .../selftests/ftrace/test.d/00basic/basic4.tc      |  5 ++
 .../selftests/ftrace/test.d/event/event-enable.tc  | 53 ++++++++++++++++++++++
 .../ftrace/test.d/event/subsystem-enable.tc        | 53 ++++++++++++++++++++++
 .../ftrace/test.d/event/toplevel-enable.tc         | 47 +++++++++++++++++++
 4 files changed, 158 insertions(+)
 create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/basic4.tc
 create mode 100644 tools/testing/selftests/ftrace/test.d/event/event-enable.tc
 create mode 100644 tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
 create mode 100644 tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc
tools/testing/selftests/ftrace/test.d/00basic/basic4.tc new file +5 -0
new file mode 100644
index 000000000000..fd9c49a13612
@@ -0,0 +1,5 @@
+#!/bin/sh
+# description: Basic event tracing check
+test -f available_events -a -f set_event -a -d events
+# check scheduler events are available
+grep -q sched available_events && exit 0 || exit -1
\ No newline at end of file
tools/testing/selftests/ftrace/test.d/event/event-enable.tc new file +53 -0

53 lines not on this page · raw message

tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc new file +53 -0

53 lines not on this page · raw message

tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc new file +47 -0

47 lines not on this page · raw message

Signature · 1 line
2.1.2
Acked-by on v1 3/3
#4 lore raw

Re: [PATCH 3/3] ftracetest: Add basic event tracing test cases

Quoted 20 lines · Namhyung Kim

This patch adds basic event tracing tests like enable/disable with top-level, subsystem-level and individual event files.

  # ./ftracetest
  === Ftrace unit tests ===
  [1] Basic trace file check	[PASS]
  [2] Basic trace clock test	[PASS]
  [3] Basic event tracing check	[PASS]
  [4] Basic test for tracers	[PASS]
  [5] event tracing - enable/disable with top level files	[PASS]
  [6] event tracing - enable/disable with subsystem level files	[PASS]
  [7] event tracing - enable/disable with event level files	[PASS]
  [8] ftrace - function graph filters	[PASS]
  [9] ftrace - function profiler with function tracing	[PASS]
  [10] ftrace - function graph filters with stack tracer	[PASS]
  [11] Kretprobe dynamic event with arguments	[PASS]
  [12] Kprobe dynamic event - busy event check	[PASS]
  [13] Kprobe dynamic event with arguments	[PASS]
  [14] Kprobe dynamic event - adding and removing	[PASS]
Quoted 7 lines
  # of passed:  14
  # of failed:  0
  # of unresolved:  0
  # of untested:  0
  # of unsupported:  0
  # of xfailed:  0
  # of undefined(test bug):  0

Nice :)

Quoted 2 lines

Thank you,

Quoted 195 lines
---
 .../selftests/ftrace/test.d/00basic/basic4.tc      |  5 ++
 .../selftests/ftrace/test.d/event/event-enable.tc  | 53 ++++++++++++++++++++++
 .../ftrace/test.d/event/subsystem-enable.tc        | 53 ++++++++++++++++++++++
 .../ftrace/test.d/event/toplevel-enable.tc         | 47 +++++++++++++++++++
 4 files changed, 158 insertions(+)
 create mode 100644 tools/testing/selftests/ftrace/test.d/00basic/basic4.tc
 create mode 100644 tools/testing/selftests/ftrace/test.d/event/event-enable.tc
 create mode 100644 tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
 create mode 100644 tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc
tools/testing/selftests/ftrace/test.d/00basic/basic4.tc new file +5 -0
new file mode 100644
index 000000000000..fd9c49a13612
@@ -0,0 +1,5 @@
+#!/bin/sh
+# description: Basic event tracing check
+test -f available_events -a -f set_event -a -d events
+# check scheduler events are available
+grep -q sched available_events && exit 0 || exit -1
\ No newline at end of file
tools/testing/selftests/ftrace/test.d/event/event-enable.tc new file +53 -0
new file mode 100644
index 000000000000..668616d9bb03
@@ -0,0 +1,53 @@
+#!/bin/sh
+# description: event tracing - enable/disable with event level files
+
+do_reset() {
+    echo > set_event
+    clear_trace
+}
+
+fail() { #msg
+    do_reset
+    echo $1
+    exit -1
+}
+
+if [ ! -f set_event -o ! -d events/sched ]; then
+    echo "event tracing is not supported"
+    exit_unsupported
+fi
+
+reset_tracer
+do_reset
+
+echo 'sched:sched_switch' > set_event
+usleep 1
+
+count=`cat trace | grep sched_switch | wc -l`
+if [ $count -eq 0 ]; then
+    fail "sched_switch events are not recorded"
+fi
+
+do_reset
+
+echo 1 > events/sched/sched_switch/enable
+usleep 1
+
+count=`cat trace | grep sched_switch | wc -l`
+if [ $count -eq 0 ]; then
+    fail "sched_switch events are not recorded"
+fi
+
+do_reset
+
+echo 0 > events/sched/sched_switch/enable
+usleep 1
+
+count=`cat trace | grep sched_switch | wc -l`
+if [ $count -ne 0 ]; then
+    fail "sched_switch events should not be recorded"
+fi
+
+do_reset
+
+exit 0
tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc new file +53 -0
new file mode 100644
index 000000000000..655c415b6e7f
@@ -0,0 +1,53 @@
+#!/bin/sh
+# description: event tracing - enable/disable with subsystem level files
+
+do_reset() {
+    echo > set_event
+    clear_trace
+}
+
+fail() { #msg
+    do_reset
+    echo $1
+    exit -1
+}
+
+if [ ! -f set_event -o ! -d events/sched ]; then
+    echo "event tracing is not supported"
+    exit_unsupported
+fi
+
+reset_tracer
+do_reset
+
+echo 'sched:*' > set_event
+usleep 1
+
+count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
+if [ $count -lt 3 ]; then
+    fail "at least fork, exec and exit events should be recorded"
+fi
+
+do_reset
+
+echo 1 > events/sched/enable
+usleep 1
+
+count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
+if [ $count -lt 3 ]; then
+    fail "at least fork, exec and exit events should be recorded"
+fi
+
+do_reset
+
+echo 0 > events/sched/enable
+usleep 1
+
+count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
+if [ $count -ne 0 ]; then
+    fail "any of scheduler events should not be recorded"
+fi
+
+do_reset
+
+exit 0
tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc new file +47 -0
new file mode 100644
index 000000000000..480845774007
@@ -0,0 +1,47 @@
+#!/bin/sh
+# description: event tracing - enable/disable with top level files
+
+do_reset() {
+    echo > set_event
+    clear_trace
+}
+
+fail() { #msg
+    do_reset
+    echo $1
+    exit -1
+}
+
+if [ ! -f available_events -o ! -f set_event -o ! -d events ]; then
+    echo "event tracing is not supported"
+    exit_unsupported
+fi
+
+reset_tracer
+do_reset
+
+echo '*:*' > set_event
+count=`cat trace | grep -v ^# | wc -l`
+if [ $count -eq 0 ]; then
+    fail "none of events are recorded"
+fi
+
+do_reset
+
+echo 1 > events/enable
+count=`cat trace | grep -v ^# | wc -l`
+if [ $count -eq 0 ]; then
+    fail "none of events are recorded"
+fi
+
+do_reset
+
+echo 0 > events/enable
+count=`cat trace | grep -v ^# | wc -l`
+if [ $count -ne 0 ]; then
+    fail "any of events should not be recorded"
+fi
+
+do_reset
+
+exit 0
Signature · 4 lines
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Research Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: [email protected]
Acked-by on v1 1/3
#5 lore raw
In reply to Namhyung Kim
Quoted 15 lines · Namhyung Kim

When I run the ftracetest in a busybox docker container, I saw following error. Make the logfile template to comply with busybox's mktemp. It also keep the logfiles under the logs directory.

  # /linux/tools/testing/selftests/ftrace/ftracetest
  === Ftrace unit tests ===
  mktemp: unrecognized option `--tmpdir=/linux/tools/testing/selftests/ftrace/logs/20141106-003624/'
  BusyBox v1.22.1 (2014-05-22 23:22:11 UTC) multi-call binary.

Usage: mktemp [-dt] [-p DIR] [TEMPLATE]

Create a temporary file with name based on TEMPLATE and print its name. TEMPLATE must end with XXXXXX (e.g. [/dir/]nameXXXXXX). Without TEMPLATE, -t tmp.XXXXXX is assumed.

Quoted 7 lines
  	-d	  Make directory, not file
  	-q	  Fail silently on errors
  	-t	  Prepend base directory name to TEMPLATE

-p DIR Use DIR as a base directory (implies -t)
-u Do not create anything; print a name

Base directory is: -p DIR, else $TMPDIR, else /tmp

Oops! good catch :)

Quoted 6 lines

[1] Basic trace file check/linux/tools/testing/selftests/ftrace/ftracetest: line 244: can't create : nonexistent directory /linux/tools/testing/selftests/ftrace/ftracetest: line 244: can't create : nonexistent directory

						  [FAIL]

Thank you,

Quoted 18 lines
---
 tools/testing/selftests/ftrace/ftracetest | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
tools/testing/selftests/ftrace/ftracetest +1 -1
index 8cc01c14262f..93b1bf5eadb5 100755
@@ -218,7 +218,7 @@ trap 'SIG_RESULT=$XFAIL' $SIG_XFAIL
 # Run one test case
 run_test() { # testfile
   local testname=`basename $1`
-  local testlog=`mktemp --tmpdir=$LOG_DIR ${testname}-XXXXXX.log`
+  local testlog=`mktemp $LOG_DIR/${testname}-log.XXXXXX`
   testcase $1
   echo "execute: "$1 > $testlog
   SIG_RESULT=0
Signature · 4 lines
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Research Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: [email protected]
maintainer
#6 lore raw

On Thu, 06 Nov 2014 12:12:22 +0900

Quoted 8 lines
Quoted 6 lines

[1] Basic trace file check/linux/tools/testing/selftests/ftrace/ftracetest: line 244: can't create : nonexistent directory /linux/tools/testing/selftests/ftrace/ftracetest: line 244: can't create : nonexistent directory

						  [FAIL]

I pulled all three in.

Thanks Namhyung!

-- Steve