Skip to content

Commit

Permalink
selftests/ftrace: Support ":README" suffix for requires
Browse files Browse the repository at this point in the history
Add ":README" suffix support for the requires list, so that
the testcase can list up the required string for README file
to the requires list.

Note that the required string is treated as a fixed string,
instead of regular expression. Also, the testcase can specify
a string containing spaces with quotes. E.g.

# requires: "place: [<module>:]<symbol>":README

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Reviewed-by: Tom Zanussi <zanussi@kernel.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
  • Loading branch information
mhiramat authored and shuahkh committed Jun 16, 2020
1 parent 305c838 commit 1b8eec5
Show file tree
Hide file tree
Showing 16 changed files with 25 additions and 50 deletions.
3 changes: 2 additions & 1 deletion tools/testing/selftests/ftrace/ftracetest
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,8 @@ testcase() { # testfile

checkreq() { # testfile
requires=`grep "^#[ \t]*requires:" $1 | cut -f2- -d:`
check_requires $requires
# Use eval to pass quoted-patterns correctly.
eval check_requires "$requires"
}

test_on_instance() { # testfile
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Generic dynamic event - add/remove kprobe events
# requires: dynamic_events

grep -q "place: \[<module>:\]<symbol>" README || exit_unsupported
grep -q "place (kretprobe): \[<module>:\]<symbol>" README || exit_unsupported
# requires: dynamic_events "place: [<module>:]<symbol>":README "place (kretprobe): [<module>:]<symbol>":README

echo 0 > events/enable
echo > dynamic_events
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Generic dynamic event - add/remove synthetic events
# requires: dynamic_events

grep -q "s:\[synthetic/\]" README || exit_unsupported
# requires: dynamic_events "s:[synthetic/]":README

echo 0 > events/enable
echo > dynamic_events
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Generic dynamic event - selective clear (compatibility)
# requires: dynamic_events kprobe_events synthetic_events

grep -q "place: \[<module>:\]<symbol>" README || exit_unsupported
grep -q "place (kretprobe): \[<module>:\]<symbol>" README || exit_unsupported

grep -q "s:\[synthetic/\]" README || exit_unsupported
# requires: dynamic_events kprobe_events synthetic_events "place: [<module>:]<symbol>":README "place (kretprobe): [<module>:]<symbol>":README "s:[synthetic/]":README

echo 0 > events/enable
echo > dynamic_events
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Generic dynamic event - generic clear event
# requires: dynamic_events

grep -q "place: \[<module>:\]<symbol>" README || exit_unsupported
grep -q "place (kretprobe): \[<module>:\]<symbol>" README || exit_unsupported

grep -q "s:\[synthetic/\]" README || exit_unsupported
# requires: dynamic_events "place: [<module>:]<symbol>":README "place (kretprobe): [<module>:]<symbol>":README "s:[synthetic/]":README

echo 0 > events/enable
echo > dynamic_events
Expand Down
8 changes: 7 additions & 1 deletion tools/testing/selftests/ftrace/test.d/functions
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,19 @@ initialize_ftrace() { # Reset ftrace to initial-state
}

check_requires() { # Check required files and tracers
for i in $* ; do
for i in "$@" ; do
r=${i%:README}
t=${i%:tracer}
if [ $t != $i ]; then
if ! grep -wq $t available_tracers ; then
echo "Required tracer $t is not configured."
exit_unsupported
fi
elif [ $r != $i ]; then
if ! grep -Fq "$r" README ; then
echo "Required feature pattern \"$r\" is not in README."
exit_unsupported
fi
elif [ ! -e $i ]; then
echo "Required feature interface $i doesn't exist."
exit_unsupported
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Kprobe event argument syntax
# requires: kprobe_events

grep "x8/16/32/64" README > /dev/null || exit_unsupported # version issue
# requires: kprobe_events "x8/16/32/64":README

PROBEFUNC="vfs_read"
GOODREG=
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Kprobes event arguments with types
# requires: kprobe_events

grep "x8/16/32/64" README > /dev/null || exit_unsupported # version issue
# requires: kprobe_events "x8/16/32/64":README

gen_event() { # Bitsize
echo "p:testprobe _do_fork \$stack0:s$1 \$stack0:u$1 \$stack0:x$1 \$stack0:b4@4/$1"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Kprobe event user-memory access
# requires: kprobe_events
# requires: kprobe_events '$arg<N>':README

grep -q '\$arg<N>' README || exit_unsupported # depends on arch
grep -A10 "fetcharg:" README | grep -q 'ustring' || exit_unsupported
grep -A10 "fetcharg:" README | grep -q '\[u\]<offset>' || exit_unsupported

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Create/delete multiprobe on kprobe event
# requires: kprobe_events

grep -q "Create/append/" README || exit_unsupported
# requires: kprobe_events "Create/append/":README

# Choose 2 symbols for target
SYM1=_do_fork
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: Kretprobe dynamic event with maxactive
# requires: kprobe_events

grep -q 'r\[maxactive\]' README || exit_unsupported # this is older version
# requires: kprobe_events 'r[maxactive]':README

# Test if we successfully reject unknown messages
if echo 'a:myprobeaccept inet_csk_accept' > kprobe_events; then false; else true; fi
Expand Down
4 changes: 3 additions & 1 deletion tools/testing/selftests/ftrace/test.d/template
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: %HERE DESCRIBE WHAT THIS DOES%
# requires: %HERE LIST THE REQUIRED FILES OR TRACERS%
# requires: %HERE LIST THE REQUIRED FILES, TRACERS OR README-STRINGS%
# The required tracer needs :tracer suffix, e.g. function:tracer
# The required README string needs :README suffix, e.g. "x8/16/32/64":README
# and the README string is treated as a fixed-string instead of regexp pattern.
# you have to add ".tc" extention for your testcase file
# Note that all tests are run with "errexit" option.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: event trigger - test inter-event histogram trigger expected fail actions
# requires: set_event snapshot
# requires: set_event snapshot "snapshot()":README

fail() { #msg
echo $1
exit_fail
}

grep -q "snapshot()" README || exit_unsupported # version issue

echo "Test expected snapshot action failure"

echo 'hist:keys=comm:onmatch(sched.sched_wakeup).snapshot()' >> events/sched/sched_waking/trigger && exit_fail
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: event trigger - test inter-event histogram trigger onchange action
# requires: set_event
# requires: set_event "onchange(var)":README

fail() { #msg
echo $1
exit_fail
}

grep -q "onchange(var)" README || exit_unsupported # version issue

echo "Test onchange action"

echo 'hist:keys=comm:newprio=prio:onchange($newprio).save(comm,prio) if comm=="ping"' >> events/sched/sched_waking/trigger
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: event trigger - test inter-event histogram trigger snapshot action
# requires: set_event snapshot events/sched/sched_process_fork/hist
# requires: set_event snapshot events/sched/sched_process_fork/hist "onchange(var)":README "snapshot()":README

fail() { #msg
echo $1
exit_fail
}

grep -q "onchange(var)" README || exit_unsupported # version issue

grep -q "snapshot()" README || exit_unsupported # version issue

echo "Test snapshot action"

echo 1 > events/sched/enable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: event trigger - test inter-event histogram trigger trace action
# requires: set_event synthetic_events events/sched/sched_process_fork/hist
# requires: set_event synthetic_events events/sched/sched_process_fork/hist "trace(<synthetic_event>":README

fail() { #msg
echo $1
exit_fail
}

grep -q "trace(<synthetic_event>" README || exit_unsupported # version issue

echo "Test create synthetic event"

echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events
Expand Down

0 comments on commit 1b8eec5

Please sign in to comment.