Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60c1afbf authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Steven Rostedt
Browse files

selftests: ftrace: Add a testcase for function filter glob match

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: default avatarMasami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 62197529
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
#!/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