Skip to content

Commit

Permalink
selftests: ftrace: Add a testcase for function filter glob match
Browse files Browse the repository at this point in the history
Add function filter glob matching test case.
This checks whether the kernel supports glob matching
(front match, end match, middle match, side match,
character class and '?').

Here is the test result.
  -----
  ./ftracetest test.d/ftrace/func-filter-glob.tc
  === Ftrace unit tests ===
  [1] ftrace - function glob filters	[PASS]

  # of passed:  1
  # 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/147928407589.22982.16364174511117104303.stgit@devbox

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
  • Loading branch information
Masami Hiramatsu authored and Steven Rostedt committed Nov 22, 2016
1 parent 6219752 commit 60c1afb
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions tools/testing/selftests/ftrace/test.d/ftrace/func-filter-glob.tc
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/bin/sh
# description: ftrace - function glob filters

# Make sure that function glob matching filter works.

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

disable_tracing
clear_trace

# filter by ?, schedule is always good
if ! echo "sch?dule" > set_ftrace_filter; then
# test for powerpc 64
if ! echo ".sch?dule" > set_ftrace_filter; then
fail "can not enable schedule filter"
fi
cat set_ftrace_filter | grep '^.schedule$'
else
cat set_ftrace_filter | grep '^schedule$'
fi

ftrace_filter_check() { # glob grep
echo "$1" > set_ftrace_filter
cut -f1 -d" " set_ftrace_filter > $TMPDIR/actual
cut -f1 -d" " available_filter_functions | grep "$2" > $TMPDIR/expected
DIFF=`diff $TMPDIR/actual $TMPDIR/expected`
test -z "$DIFF"
}

# filter by *, front match
ftrace_filter_check '*schedule' '^.*schedule$'

# filter by *, middle match
ftrace_filter_check '*schedule*' '^.*schedule.*$'

# filter by *, end match
ftrace_filter_check 'schedule*' '^schedule.*$'

# filter by *, both side match
ftrace_filter_check 'sch*ule' '^sch.*ule$'

# filter by char class.
ftrace_filter_check '[Ss]y[Ss]_*' '^[Ss]y[Ss]_.*$'

echo > set_ftrace_filter
enable_tracing

0 comments on commit 60c1afb

Please sign in to comment.