From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
Ingo Molnar <mingo@redhat.com>,
Shuah Khan <shuahkh@osg.samsung.com>,
Namhyung Kim <namhyung@kernel.org>,
Tom Zanussi <tom.zanussi@linux.intel.com>
Subject: [for-next][PATCH 27/30] kselftests/ftrace: Add hist trigger testcases
Date: Wed, 20 Apr 2016 15:30:05 -0400 [thread overview]
Message-ID: <20160420193030.670409786@goodmis.org> (raw)
In-Reply-To: <20160420192938.515326341@goodmis.org>
[-- Attachment #1: 0027-kselftests-ftrace-Add-hist-trigger-testcases.patch --]
[-- Type: text/plain, Size: 9250 bytes --]
From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Add the hist trigger testcases for ftracetest.
This checks the basic histogram trigger behaviors like as;
- Histogram trigger itself
- Histogram with string key
- Histogram with compound keys
- Histogram with sort key
- Histogram trigger modifiers (execname, hex, syscall)
- Multiple histograms on an event
- Named histogram
- Named histogram on multi events
Here is the test result.
----
# ./ftracetest test.d/trigger/*hist*.tc
=== Ftrace unit tests ===
[1] event trigger - test histogram modifiers [PASS]
[2] event trigger - test histogram trigger [PASS]
[3] event trigger - test multiple histogram triggers [PASS]
# of passed: 3
# of failed: 0
# of unresolved: 0
# of untested: 0
# of unsupported: 0
# of xfailed: 0
# of undefined(test bug): 0
----
Link: http://lkml.kernel.org/r/17cb3a3d9eeadc3282645147905455a298e7fbeb.1457029949.git.tom.zanussi@linux.intel.com
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Shuah Khan <shuahkh@osg.samsung.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
[Tom Zanussi: Change multihist test from truncate ('>') to append ('>>')]
Reviewed-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
.../ftrace/test.d/trigger/trigger-hist-mod.tc | 65 +++++++++++++++++
.../ftrace/test.d/trigger/trigger-hist.tc | 83 ++++++++++++++++++++++
.../ftrace/test.d/trigger/trigger-multihist.tc | 73 +++++++++++++++++++
3 files changed, 221 insertions(+)
create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc
create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc
create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc
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
new file mode 100644
index 000000000000..57e350a0bcca
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc
@@ -0,0 +1,65 @@
+#!/bin/sh
+# description: event trigger - test histogram modifiers
+
+do_reset() {
+ reset_trigger
+ echo > set_event
+ clear_trace
+}
+
+fail() { #msg
+ do_reset
+ echo $1
+ exit $FAIL
+}
+
+if [ ! -f set_event -o ! -d events/sched ]; then
+ echo "event tracing is not supported"
+ exit_unsupported
+fi
+
+if [ ! -f events/sched/sched_process_fork/trigger ]; then
+ echo "event trigger is not supported"
+ exit_unsupported
+fi
+
+reset_tracer
+do_reset
+
+FEATURE=`grep hist events/sched/sched_process_fork/trigger`
+if [ -z "$FEATURE" ]; then
+ echo "hist trigger is not supported"
+ exit_unsupported
+fi
+
+echo "Test histogram with execname modifier"
+
+echo 'hist:keys=common_pid.execname' > events/sched/sched_process_fork/trigger
+for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
+COMM=`cat /proc/$$/comm`
+grep "common_pid: $COMM" events/sched/sched_process_fork/hist > /dev/null || \
+ fail "execname modifier on sched_process_fork did not work"
+
+reset_trigger
+
+echo "Test histogram with hex modifier"
+
+echo 'hist:keys=parent_pid.hex' > events/sched/sched_process_fork/trigger
+for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
+# Note that $$ is the parent pid. $PID is current PID.
+HEX=`printf %x $PID`
+grep "parent_pid: $HEX" events/sched/sched_process_fork/hist > /dev/null || \
+ fail "hex modifier on sched_process_fork did not work"
+
+reset_trigger
+
+echo "Test histogram with syscall modifier"
+
+echo 'hist:keys=id.syscall' > events/raw_syscalls/sys_exit/trigger
+for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
+grep "id: sys_" events/raw_syscalls/sys_exit/hist > /dev/null || \
+ fail "syscall modifier on raw_syscalls/sys_exit 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
new file mode 100644
index 000000000000..b2902d42a537
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc
@@ -0,0 +1,83 @@
+#!/bin/sh
+# description: event trigger - test histogram trigger
+
+do_reset() {
+ reset_trigger
+ echo > set_event
+ clear_trace
+}
+
+fail() { #msg
+ do_reset
+ echo $1
+ exit $FAIL
+}
+
+if [ ! -f set_event -o ! -d events/sched ]; then
+ echo "event tracing is not supported"
+ exit_unsupported
+fi
+
+if [ ! -f events/sched/sched_process_fork/trigger ]; then
+ echo "event trigger is not supported"
+ exit_unsupported
+fi
+
+reset_tracer
+do_reset
+
+FEATURE=`grep hist events/sched/sched_process_fork/trigger`
+if [ -z "$FEATURE" ]; then
+ echo "hist trigger is not supported"
+ exit_unsupported
+fi
+
+echo "Test histogram basic tigger"
+
+echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger
+for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
+grep parent_pid events/sched/sched_process_fork/hist > /dev/null || \
+ fail "hist trigger on sched_process_fork did not work"
+grep child events/sched/sched_process_fork/hist > /dev/null || \
+ fail "hist trigger on sched_process_fork did not work"
+
+reset_trigger
+
+echo "Test histogram with compound keys"
+
+echo 'hist:keys=parent_pid,child_pid' > events/sched/sched_process_fork/trigger
+for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
+grep '^{ parent_pid:.*, child_pid:.*}' events/sched/sched_process_fork/hist > /dev/null || \
+ fail "compound keys on sched_process_fork did not work"
+
+reset_trigger
+
+echo "Test histogram with string key"
+
+echo 'hist:keys=parent_comm' > events/sched/sched_process_fork/trigger
+for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
+COMM=`cat /proc/$$/comm`
+grep "parent_comm: $COMM" events/sched/sched_process_fork/hist > /dev/null || \
+ fail "string key on sched_process_fork did not work"
+
+reset_trigger
+
+echo "Test histogram with sort key"
+
+echo 'hist:keys=parent_pid,child_pid:sort=child_pid.ascending' > events/sched/sched_process_fork/trigger
+for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
+
+check_inc() {
+ while [ $# -gt 1 ]; do
+ [ $1 -gt $2 ] && return 1
+ shift 1
+ done
+ return 0
+}
+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
new file mode 100644
index 000000000000..03c4a46561fc
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc
@@ -0,0 +1,73 @@
+#!/bin/sh
+# description: event trigger - test multiple histogram triggers
+
+do_reset() {
+ reset_trigger
+ echo > set_event
+ clear_trace
+}
+
+fail() { #msg
+ do_reset
+ echo $1
+ exit $FAIL
+}
+
+if [ ! -f set_event -o ! -d events/sched ]; then
+ echo "event tracing is not supported"
+ exit_unsupported
+fi
+
+if [ ! -f events/sched/sched_process_fork/trigger ]; then
+ echo "event trigger is not supported"
+ exit_unsupported
+fi
+
+reset_tracer
+do_reset
+
+FEATURE=`grep hist events/sched/sched_process_fork/trigger`
+if [ -z "$FEATURE" ]; then
+ echo "hist trigger is not supported"
+ exit_unsupported
+fi
+
+reset_trigger
+
+echo "Test histogram multiple tiggers"
+
+echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger
+echo 'hist:keys=parent_comm:vals=child_pid' >> events/sched/sched_process_fork/trigger
+for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
+grep parent_pid events/sched/sched_process_fork/hist > /dev/null || \
+ fail "hist trigger on sched_process_fork did not work"
+grep child events/sched/sched_process_fork/hist > /dev/null || \
+ fail "hist trigger on sched_process_fork did not work"
+COMM=`cat /proc/$$/comm`
+grep "parent_comm: $COMM" events/sched/sched_process_fork/hist > /dev/null || \
+ fail "string key on sched_process_fork did not work"
+
+reset_trigger
+
+echo "Test histogram with its name"
+
+echo 'hist:name=test_hist:keys=common_pid' > events/sched/sched_process_fork/trigger
+for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
+grep test_hist events/sched/sched_process_fork/hist > /dev/null || \
+ fail "named event on sched_process_fork did not work"
+
+echo "Test same named histogram on different events"
+
+echo 'hist:name=test_hist:keys=common_pid' > events/sched/sched_process_exit/trigger
+for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
+grep test_hist events/sched/sched_process_exit/hist > /dev/null || \
+ fail "named event on sched_process_fork did not work"
+
+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
--
2.8.0.rc3
next prev parent reply other threads:[~2016-04-20 19:33 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-20 19:29 [for-next][PATCH 00/30] tracing: Add features for event-fork and histograms Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 01/30] tracing: Rename check_ignore_pid() to ignore_this_task() Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 02/30] tracing: Use pid bitmap instead of a pid array for set_event_pid Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 03/30] tracing: Add infrastructure to allow set_event_pid to follow children Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 04/30] tracing: Update the documentation to describe "event-fork" option Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 05/30] tracing: Add lock-free tracing_map Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 06/30] tracing: Fix TRACING_MAP Kconfig Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 07/30] tracing: Update some tracing_map constants and comments Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 08/30] tracing: Add hist event trigger command Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 09/30] tracing: Add hist trigger support for multiple values (vals= param) Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 10/30] tracing: Add hist trigger support for compound keys Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 11/30] tracing: Add hist trigger support for user-defined sorting (sort= param) Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 12/30] tracing: Add hist trigger support for pausing and continuing a trace Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 13/30] tracing: Add hist trigger support for clearing " Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 14/30] tracing: Add hist trigger hex modifier for displaying numeric fields Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 15/30] tracing: Add hist trigger sym and sym-offset modifiers Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 16/30] tracing: Add hist trigger execname modifier Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 17/30] tracing: Add hist trigger syscall modifier Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 18/30] tracing: Add hist trigger support for stacktraces as keys Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 19/30] tracing: Support string type key properly Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 20/30] tracing: Remove restriction on string position in hist trigger keys Steven Rostedt
2016-04-20 19:29 ` [for-next][PATCH 21/30] tracing: Add enable_hist/disable_hist triggers Steven Rostedt
2016-04-20 19:30 ` [for-next][PATCH 22/30] tracing: Add hist trigger Documentation Steven Rostedt
2016-04-20 19:30 ` [for-next][PATCH 23/30] tracing: Add support for multiple hist triggers per event Steven Rostedt
2016-04-20 19:30 ` [for-next][PATCH 24/30] tracing: Add support for named triggers Steven Rostedt
2016-04-20 19:30 ` [for-next][PATCH 25/30] tracing: Add support for named hist triggers Steven Rostedt
2016-04-20 19:30 ` [for-next][PATCH 26/30] kselftests/ftrace : Add event trigger testcases Steven Rostedt
2016-04-20 19:30 ` Steven Rostedt [this message]
2016-04-20 19:30 ` [for-next][PATCH 28/30] tracing: Add hist trigger log2 modifier Steven Rostedt
2016-04-20 19:30 ` [for-next][PATCH 29/30] kselftests/ftrace: Add a test for log2 modifier of hist trigger Steven Rostedt
2016-04-20 19:30 ` [for-next][PATCH 30/30] tracing: Fix unsigned comparison to zero in hist trigger code Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160420193030.670409786@goodmis.org \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=shuahkh@osg.samsung.com \
--cc=tom.zanussi@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome