selftests/ftrace: Support ":README" suffix for requires

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>
This commit is contained in:
Masami Hiramatsu 2020-06-03 11:41:09 +09:00 коммит произвёл Shuah Khan
Родитель 305c8388fd
Коммит 1b8eec510b
16 изменённых файлов: 25 добавлений и 50 удалений

Просмотреть файл

@ -269,7 +269,8 @@ testcase() { # testfile
checkreq() { # testfile checkreq() { # testfile
requires=`grep "^#[ \t]*requires:" $1 | cut -f2- -d:` 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 test_on_instance() { # testfile

Просмотреть файл

@ -1,10 +1,7 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: Generic dynamic event - add/remove kprobe events # description: Generic dynamic event - add/remove kprobe events
# requires: dynamic_events # requires: dynamic_events "place: [<module>:]<symbol>":README "place (kretprobe): [<module>:]<symbol>":README
grep -q "place: \[<module>:\]<symbol>" README || exit_unsupported
grep -q "place (kretprobe): \[<module>:\]<symbol>" README || exit_unsupported
echo 0 > events/enable echo 0 > events/enable
echo > dynamic_events echo > dynamic_events

Просмотреть файл

@ -1,9 +1,7 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: Generic dynamic event - add/remove synthetic events # description: Generic dynamic event - add/remove synthetic events
# requires: dynamic_events # requires: dynamic_events "s:[synthetic/]":README
grep -q "s:\[synthetic/\]" README || exit_unsupported
echo 0 > events/enable echo 0 > events/enable
echo > dynamic_events echo > dynamic_events

Просмотреть файл

@ -1,12 +1,7 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: Generic dynamic event - selective clear (compatibility) # description: Generic dynamic event - selective clear (compatibility)
# requires: dynamic_events kprobe_events synthetic_events # requires: dynamic_events kprobe_events synthetic_events "place: [<module>:]<symbol>":README "place (kretprobe): [<module>:]<symbol>":README "s:[synthetic/]":README
grep -q "place: \[<module>:\]<symbol>" README || exit_unsupported
grep -q "place (kretprobe): \[<module>:\]<symbol>" README || exit_unsupported
grep -q "s:\[synthetic/\]" README || exit_unsupported
echo 0 > events/enable echo 0 > events/enable
echo > dynamic_events echo > dynamic_events

Просмотреть файл

@ -1,12 +1,7 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: Generic dynamic event - generic clear event # description: Generic dynamic event - generic clear event
# requires: dynamic_events # requires: dynamic_events "place: [<module>:]<symbol>":README "place (kretprobe): [<module>:]<symbol>":README "s:[synthetic/]":README
grep -q "place: \[<module>:\]<symbol>" README || exit_unsupported
grep -q "place (kretprobe): \[<module>:\]<symbol>" README || exit_unsupported
grep -q "s:\[synthetic/\]" README || exit_unsupported
echo 0 > events/enable echo 0 > events/enable
echo > dynamic_events echo > dynamic_events

Просмотреть файл

@ -107,13 +107,19 @@ initialize_ftrace() { # Reset ftrace to initial-state
} }
check_requires() { # Check required files and tracers check_requires() { # Check required files and tracers
for i in $* ; do for i in "$@" ; do
r=${i%:README}
t=${i%:tracer} t=${i%:tracer}
if [ $t != $i ]; then if [ $t != $i ]; then
if ! grep -wq $t available_tracers ; then if ! grep -wq $t available_tracers ; then
echo "Required tracer $t is not configured." echo "Required tracer $t is not configured."
exit_unsupported exit_unsupported
fi 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 elif [ ! -e $i ]; then
echo "Required feature interface $i doesn't exist." echo "Required feature interface $i doesn't exist."
exit_unsupported exit_unsupported

Просмотреть файл

@ -1,9 +1,7 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: Kprobe event argument syntax # description: Kprobe event argument syntax
# requires: kprobe_events # requires: kprobe_events "x8/16/32/64":README
grep "x8/16/32/64" README > /dev/null || exit_unsupported # version issue
PROBEFUNC="vfs_read" PROBEFUNC="vfs_read"
GOODREG= GOODREG=

Просмотреть файл

@ -1,9 +1,7 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: Kprobes event arguments with types # description: Kprobes event arguments with types
# requires: kprobe_events # requires: kprobe_events "x8/16/32/64":README
grep "x8/16/32/64" README > /dev/null || exit_unsupported # version issue
gen_event() { # Bitsize gen_event() { # Bitsize
echo "p:testprobe _do_fork \$stack0:s$1 \$stack0:u$1 \$stack0:x$1 \$stack0:b4@4/$1" echo "p:testprobe _do_fork \$stack0:s$1 \$stack0:u$1 \$stack0:x$1 \$stack0:b4@4/$1"

Просмотреть файл

@ -1,9 +1,8 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: Kprobe event user-memory access # 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 'ustring' || exit_unsupported
grep -A10 "fetcharg:" README | grep -q '\[u\]<offset>' || exit_unsupported grep -A10 "fetcharg:" README | grep -q '\[u\]<offset>' || exit_unsupported

Просмотреть файл

@ -1,9 +1,7 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: Create/delete multiprobe on kprobe event # description: Create/delete multiprobe on kprobe event
# requires: kprobe_events # requires: kprobe_events "Create/append/":README
grep -q "Create/append/" README || exit_unsupported
# Choose 2 symbols for target # Choose 2 symbols for target
SYM1=_do_fork SYM1=_do_fork

Просмотреть файл

@ -1,9 +1,7 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: Kretprobe dynamic event with maxactive # description: Kretprobe dynamic event with maxactive
# requires: kprobe_events # requires: kprobe_events 'r[maxactive]':README
grep -q 'r\[maxactive\]' README || exit_unsupported # this is older version
# Test if we successfully reject unknown messages # Test if we successfully reject unknown messages
if echo 'a:myprobeaccept inet_csk_accept' > kprobe_events; then false; else true; fi if echo 'a:myprobeaccept inet_csk_accept' > kprobe_events; then false; else true; fi

Просмотреть файл

@ -1,8 +1,10 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: %HERE DESCRIBE WHAT THIS DOES% # 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 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 # you have to add ".tc" extention for your testcase file
# Note that all tests are run with "errexit" option. # Note that all tests are run with "errexit" option.

Просмотреть файл

@ -1,15 +1,13 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: event trigger - test inter-event histogram trigger expected fail actions # description: event trigger - test inter-event histogram trigger expected fail actions
# requires: set_event snapshot # requires: set_event snapshot "snapshot()":README
fail() { #msg fail() { #msg
echo $1 echo $1
exit_fail exit_fail
} }
grep -q "snapshot()" README || exit_unsupported # version issue
echo "Test expected snapshot action failure" echo "Test expected snapshot action failure"
echo 'hist:keys=comm:onmatch(sched.sched_wakeup).snapshot()' >> events/sched/sched_waking/trigger && exit_fail echo 'hist:keys=comm:onmatch(sched.sched_wakeup).snapshot()' >> events/sched/sched_waking/trigger && exit_fail

Просмотреть файл

@ -1,15 +1,13 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: event trigger - test inter-event histogram trigger onchange action # description: event trigger - test inter-event histogram trigger onchange action
# requires: set_event # requires: set_event "onchange(var)":README
fail() { #msg fail() { #msg
echo $1 echo $1
exit_fail exit_fail
} }
grep -q "onchange(var)" README || exit_unsupported # version issue
echo "Test onchange action" echo "Test onchange action"
echo 'hist:keys=comm:newprio=prio:onchange($newprio).save(comm,prio) if comm=="ping"' >> events/sched/sched_waking/trigger echo 'hist:keys=comm:newprio=prio:onchange($newprio).save(comm,prio) if comm=="ping"' >> events/sched/sched_waking/trigger

Просмотреть файл

@ -1,17 +1,13 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: event trigger - test inter-event histogram trigger snapshot action # 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 fail() { #msg
echo $1 echo $1
exit_fail exit_fail
} }
grep -q "onchange(var)" README || exit_unsupported # version issue
grep -q "snapshot()" README || exit_unsupported # version issue
echo "Test snapshot action" echo "Test snapshot action"
echo 1 > events/sched/enable echo 1 > events/sched/enable

Просмотреть файл

@ -1,15 +1,13 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# description: event trigger - test inter-event histogram trigger trace action # 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 fail() { #msg
echo $1 echo $1
exit_fail exit_fail
} }
grep -q "trace(<synthetic_event>" README || exit_unsupported # version issue
echo "Test create synthetic event" echo "Test create synthetic event"
echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events