aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2017-08-14 13:26:09 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2017-08-15 09:54:25 -0400
commit1ad5a182690c60b7effafec3c1c4512c11e5b545 (patch)
tree4f88277354c90dcefe6066e9e98bc27516f7946a
parent06786963020cc42c50f2c95d1ca5cb839460fa0e (diff)
perf test shell: Check if 'perf probe' is available, skip tests if not
Add a library function that checks if 'perf probe' is built into the tool being tested, skipping tests that need it. Testing it on a system after removing the library needed to build 'probe' as a perf subcommand: # perf test ping vfs_getname 59: Use vfs_getname probe to get syscall args filenames : Skip 60: probe libc's inet_pton & backtrace it with ping : Skip 61: Check open filename arg using perf trace + vfs_getname: Skip 62: Add vfs_getname probe to get syscall args filenames : Skip # perf probe perf: 'probe' is not a perf-command. See 'perf --help'. # Now reinstalling elfutils-libelf-devel on this Fedora 26 system to rebuild perf and then retest this: # perf test ping vfs_getname 60: Use vfs_getname probe to get syscall args filenames : Ok 61: probe libc's inet_pton & backtrace it with ping : Ok 62: Check open filename arg using perf trace + vfs_getname: Ok 63: Add vfs_getname probe to get syscall args filenames : Ok # Reported-by: Kim Phillips <kim.phillips@arm.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Michael Petlan <mpetlan@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Thomas Richter <tmricht@linux.vnet.ibm.com> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-ctdck2gzsskqhjzu3ebb62zm@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/perf/tests/shell/lib/probe.sh6
-rw-r--r--tools/perf/tests/shell/lib/probe_vfs_getname.sh2
-rwxr-xr-xtools/perf/tests/shell/probe_vfs_getname.sh4
-rwxr-xr-xtools/perf/tests/shell/record+script_probe_vfs_getname.sh4
-rwxr-xr-xtools/perf/tests/shell/trace+probe_libc_inet_pton.sh3
-rwxr-xr-xtools/perf/tests/shell/trace+probe_vfs_getname.sh4
6 files changed, 22 insertions, 1 deletions
diff --git a/tools/perf/tests/shell/lib/probe.sh b/tools/perf/tests/shell/lib/probe.sh
new file mode 100644
index 000000000000..61da3b2c9bca
--- /dev/null
+++ b/tools/perf/tests/shell/lib/probe.sh
@@ -0,0 +1,6 @@
1# Arnaldo Carvalho de Melo <acme@kernel.org>, 2017
2
3skip_if_no_perf_probe() {
4 perf probe |& grep -q 'is not a perf-command' && return 2
5 return 0
6}
diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
index 3eaddf190a30..46c1bb707600 100644
--- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
+++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
@@ -1,6 +1,6 @@
1# Arnaldo Carvalho de Melo <acme@kernel.org>, 2017 1# Arnaldo Carvalho de Melo <acme@kernel.org>, 2017
2 2
3perf probe -l | grep -q probe:vfs_getname 3perf probe -l |& grep -q probe:vfs_getname
4had_vfs_getname=$? 4had_vfs_getname=$?
5 5
6cleanup_probe_vfs_getname() { 6cleanup_probe_vfs_getname() {
diff --git a/tools/perf/tests/shell/probe_vfs_getname.sh b/tools/perf/tests/shell/probe_vfs_getname.sh
index c8380137beef..9b7635184dc2 100755
--- a/tools/perf/tests/shell/probe_vfs_getname.sh
+++ b/tools/perf/tests/shell/probe_vfs_getname.sh
@@ -2,6 +2,10 @@
2# 2#
3# Arnaldo Carvalho de Melo <acme@kernel.org>, 2017 3# Arnaldo Carvalho de Melo <acme@kernel.org>, 2017
4 4
5. $(dirname $0)/lib/probe.sh
6
7skip_if_no_perf_probe || exit 2
8
5. $(dirname $0)/lib/probe_vfs_getname.sh 9. $(dirname $0)/lib/probe_vfs_getname.sh
6 10
7add_probe_vfs_getname || skip_if_no_debuginfo 11add_probe_vfs_getname || skip_if_no_debuginfo
diff --git a/tools/perf/tests/shell/record+script_probe_vfs_getname.sh b/tools/perf/tests/shell/record+script_probe_vfs_getname.sh
index 2725c5db699a..ba29535b8580 100755
--- a/tools/perf/tests/shell/record+script_probe_vfs_getname.sh
+++ b/tools/perf/tests/shell/record+script_probe_vfs_getname.sh
@@ -7,6 +7,10 @@
7 7
8# Arnaldo Carvalho de Melo <acme@kernel.org>, 2017 8# Arnaldo Carvalho de Melo <acme@kernel.org>, 2017
9 9
10. $(dirname $0)/lib/probe.sh
11
12skip_if_no_perf_probe || exit 2
13
10. $(dirname $0)/lib/probe_vfs_getname.sh 14. $(dirname $0)/lib/probe_vfs_getname.sh
11 15
12perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX) 16perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
diff --git a/tools/perf/tests/shell/trace+probe_libc_inet_pton.sh b/tools/perf/tests/shell/trace+probe_libc_inet_pton.sh
index 1b9a276e2ace..99dafad61954 100755
--- a/tools/perf/tests/shell/trace+probe_libc_inet_pton.sh
+++ b/tools/perf/tests/shell/trace+probe_libc_inet_pton.sh
@@ -8,6 +8,8 @@
8 8
9# Arnaldo Carvalho de Melo <acme@kernel.org>, 2017 9# Arnaldo Carvalho de Melo <acme@kernel.org>, 2017
10 10
11. $(dirname $0)/lib/probe.sh
12
11trace_libc_inet_pton_backtrace() { 13trace_libc_inet_pton_backtrace() {
12 idx=0 14 idx=0
13 expected[0]="PING.*bytes" 15 expected[0]="PING.*bytes"
@@ -32,6 +34,7 @@ trace_libc_inet_pton_backtrace() {
32 done 34 done
33} 35}
34 36
37skip_if_no_perf_probe && \
35perf probe -q /lib64/libc-*.so inet_pton && \ 38perf probe -q /lib64/libc-*.so inet_pton && \
36trace_libc_inet_pton_backtrace 39trace_libc_inet_pton_backtrace
37err=$? 40err=$?
diff --git a/tools/perf/tests/shell/trace+probe_vfs_getname.sh b/tools/perf/tests/shell/trace+probe_vfs_getname.sh
index d0fba0c5e354..2e68c5f120da 100755
--- a/tools/perf/tests/shell/trace+probe_vfs_getname.sh
+++ b/tools/perf/tests/shell/trace+probe_vfs_getname.sh
@@ -8,6 +8,10 @@
8 8
9# Arnaldo Carvalho de Melo <acme@kernel.org>, 2017 9# Arnaldo Carvalho de Melo <acme@kernel.org>, 2017
10 10
11. $(dirname $0)/lib/probe.sh
12
13skip_if_no_perf_probe || exit 2
14
11. $(dirname $0)/lib/probe_vfs_getname.sh 15. $(dirname $0)/lib/probe_vfs_getname.sh
12 16
13file=$(mktemp /tmp/temporary_file.XXXXX) 17file=$(mktemp /tmp/temporary_file.XXXXX)