From 4f67336870f641daa485ea504777486e24a9aece Mon Sep 17 00:00:00 2001 From: Jiri Olsa Date: Thu, 1 Mar 2018 17:52:15 +0100 Subject: perf tests: Rename trace+probe_libc_inet_pton to record+probe_libc_inet_pton Because the test is no longer using perf trace but perf record instead. Signed-off-by: Jiri Olsa Tested-by: Arnaldo Carvalho de Melo Cc: Alexander Shishkin Cc: David Ahern Cc: Namhyung Kim Cc: Peter Zijlstra Link: http://lkml.kernel.org/r/20180301165215.6780-2-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- .../tests/shell/record+probe_libc_inet_pton.sh | 62 ++++++++++++++++++++++ .../perf/tests/shell/trace+probe_libc_inet_pton.sh | 62 ---------------------- 2 files changed, 62 insertions(+), 62 deletions(-) create mode 100755 tools/perf/tests/shell/record+probe_libc_inet_pton.sh delete mode 100755 tools/perf/tests/shell/trace+probe_libc_inet_pton.sh (limited to 'tools') diff --git a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh new file mode 100755 index 000000000000..52c3ee701a89 --- /dev/null +++ b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh @@ -0,0 +1,62 @@ +# probe libc's inet_pton & backtrace it with ping + +# Installs a probe on libc's inet_pton function, that will use uprobes, +# then use 'perf trace' on a ping to localhost asking for just one packet +# with the a backtrace 3 levels deep, check that it is what we expect. +# This needs no debuginfo package, all is done using the libc ELF symtab +# and the CFI info in the binaries. + +# Arnaldo Carvalho de Melo , 2017 + +. $(dirname $0)/lib/probe.sh + +libc=$(grep -w libc /proc/self/maps | head -1 | sed -r 's/.*[[:space:]](\/.*)/\1/g') +nm -g $libc 2>/dev/null | fgrep -q inet_pton || exit 254 + +trace_libc_inet_pton_backtrace() { + idx=0 + expected[0]="ping[][0-9 \.:]+probe_libc:inet_pton: \([[:xdigit:]]+\)" + expected[1]=".*inet_pton[[:space:]]\($libc\)$" + case "$(uname -m)" in + s390x) + eventattr='call-graph=dwarf' + expected[2]="gaih_inet.*[[:space:]]\($libc|inlined\)$" + expected[3]="__GI_getaddrinfo[[:space:]]\($libc|inlined\)$" + expected[4]="main[[:space:]]\(.*/bin/ping.*\)$" + expected[5]="__libc_start_main[[:space:]]\($libc\)$" + expected[6]="_start[[:space:]]\(.*/bin/ping.*\)$" + ;; + *) + eventattr='max-stack=3' + expected[2]="getaddrinfo[[:space:]]\($libc\)$" + expected[3]=".*\(.*/bin/ping.*\)$" + ;; + esac + + file=`mktemp -u /tmp/perf.data.XXX` + + perf record -e probe_libc:inet_pton/$eventattr/ -o $file ping -6 -c 1 ::1 > /dev/null 2>&1 + perf script -i $file | while read line ; do + echo $line + echo "$line" | egrep -q "${expected[$idx]}" + if [ $? -ne 0 ] ; then + printf "FAIL: expected backtrace entry %d \"%s\" got \"%s\"\n" $idx "${expected[$idx]}" "$line" + exit 1 + fi + let idx+=1 + [ -z "${expected[$idx]}" ] && break + done + + rm -f $file +} + +# Check for IPv6 interface existence +ip a sh lo | fgrep -q inet6 || exit 2 + +skip_if_no_perf_probe && \ +perf probe -q $libc inet_pton && \ +trace_libc_inet_pton_backtrace +err=$? +rm -f ${file} +perf probe -q -d probe_libc:inet_pton +exit $err diff --git a/tools/perf/tests/shell/trace+probe_libc_inet_pton.sh b/tools/perf/tests/shell/trace+probe_libc_inet_pton.sh deleted file mode 100755 index 52c3ee701a89..000000000000 --- a/tools/perf/tests/shell/trace+probe_libc_inet_pton.sh +++ /dev/null @@ -1,62 +0,0 @@ -# probe libc's inet_pton & backtrace it with ping - -# Installs a probe on libc's inet_pton function, that will use uprobes, -# then use 'perf trace' on a ping to localhost asking for just one packet -# with the a backtrace 3 levels deep, check that it is what we expect. -# This needs no debuginfo package, all is done using the libc ELF symtab -# and the CFI info in the binaries. - -# Arnaldo Carvalho de Melo , 2017 - -. $(dirname $0)/lib/probe.sh - -libc=$(grep -w libc /proc/self/maps | head -1 | sed -r 's/.*[[:space:]](\/.*)/\1/g') -nm -g $libc 2>/dev/null | fgrep -q inet_pton || exit 254 - -trace_libc_inet_pton_backtrace() { - idx=0 - expected[0]="ping[][0-9 \.:]+probe_libc:inet_pton: \([[:xdigit:]]+\)" - expected[1]=".*inet_pton[[:space:]]\($libc\)$" - case "$(uname -m)" in - s390x) - eventattr='call-graph=dwarf' - expected[2]="gaih_inet.*[[:space:]]\($libc|inlined\)$" - expected[3]="__GI_getaddrinfo[[:space:]]\($libc|inlined\)$" - expected[4]="main[[:space:]]\(.*/bin/ping.*\)$" - expected[5]="__libc_start_main[[:space:]]\($libc\)$" - expected[6]="_start[[:space:]]\(.*/bin/ping.*\)$" - ;; - *) - eventattr='max-stack=3' - expected[2]="getaddrinfo[[:space:]]\($libc\)$" - expected[3]=".*\(.*/bin/ping.*\)$" - ;; - esac - - file=`mktemp -u /tmp/perf.data.XXX` - - perf record -e probe_libc:inet_pton/$eventattr/ -o $file ping -6 -c 1 ::1 > /dev/null 2>&1 - perf script -i $file | while read line ; do - echo $line - echo "$line" | egrep -q "${expected[$idx]}" - if [ $? -ne 0 ] ; then - printf "FAIL: expected backtrace entry %d \"%s\" got \"%s\"\n" $idx "${expected[$idx]}" "$line" - exit 1 - fi - let idx+=1 - [ -z "${expected[$idx]}" ] && break - done - - rm -f $file -} - -# Check for IPv6 interface existence -ip a sh lo | fgrep -q inet6 || exit 2 - -skip_if_no_perf_probe && \ -perf probe -q $libc inet_pton && \ -trace_libc_inet_pton_backtrace -err=$? -rm -f ${file} -perf probe -q -d probe_libc:inet_pton -exit $err -- cgit