All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Kim Phillips <kim.phillips@arm.com>
Cc: linux-kernel@vger.kernel.org,
	"Peter Zijlstra" <peterz@infradead.org>,
	"Ingo Molnar" <mingo@redhat.com>,
	"Alexander Shishkin" <alexander.shishkin@linux.intel.com>,
	"Jiri Olsa" <jolsa@redhat.com>,
	"Namhyung Kim" <namhyung@kernel.org>,
	"Thomas Richter" <tmricht@linux.vnet.ibm.com>,
	"Michael Petlan" <mpetlan@redhat.com>,
	"Hendrik Brückner" <brueckner@linux.vnet.ibm.com>,
	"Sandipan Das" <sandipan@linux.vnet.ibm.com>
Subject: Re: [PATCH 2/2] perf test shell: make perf inet_pton test more portable
Date: Fri, 29 Jun 2018 12:21:55 -0300	[thread overview]
Message-ID: <20180629152155.GB3593@kernel.org> (raw)
In-Reply-To: <20180621153250.e29e7fbfbfe14b98341b68f0@arm.com>

Em Thu, Jun 21, 2018 at 03:32:50PM -0500, Kim Phillips escreveu:
> On Thu, 21 Jun 2018 12:18:00 -0300
> Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> 
> > Would be good if we had some utility that given a two files, one with
> > regexps, could tell if, line by line, those expressions matched, better,
> > one that is present in all these OSes...
> 
> I didn't find any, but given the two-file notion might be acceptable,
> hopefully you might find the following more readable/acceptable?:

Looks better, you build the expected lines in a separate file, then read
both it and the output, then do the matching, cleaner. And I assume it
works with dash, right?

- Arnaldo
 
> diff --git a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
> index 263057039693..94e513e62b34 100755
> --- a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
> +++ b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
> @@ -14,35 +14,40 @@ libc=$(grep -w libc /proc/self/maps | head -1 | sed -r 's/.*[[:space:]](\/.*)/\1
>  nm -Dg $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\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$"
> +
> +	expected=`mktemp -u /tmp/expected.XXX`
> +
> +	echo "ping[][0-9 \.:]+probe_libc:inet_pton: \([[:xdigit:]]+\)" > $expected
> +	echo ".*inet_pton\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$" >> $expected
>  	case "$(uname -m)" in
>  	s390x)
>  		eventattr='call-graph=dwarf,max-stack=4'
> -		expected[2]="gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$"
> -		expected[3]="(__GI_)?getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$"
> -		expected[4]="main\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$"
> +		echo "gaih_inet.*\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$" >> $expected
> +		echo "(__GI_)?getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc|inlined\)$" >> $expected
> +		echo "main\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$" >> $expected
>  		;;
>  	*)
>  		eventattr='max-stack=3'
> -		expected[2]="getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc\)$"
> -		expected[3]=".*\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$"
> +		echo "getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\($libc\)$" >> $expected
> +		echo ".*\+0x[[:xdigit:]]+[[:space:]]\(.*/bin/ping.*\)$" >> $expected
>  		;;
>  	esac
>  
> -	file=`mktemp -u /tmp/perf.data.XXX`
> +	perf_data=`mktemp -u /tmp/perf.data.XXX`
> +	perf_script=`mktemp -u /tmp/perf.script.XXX`
> +	perf record -e probe_libc:inet_pton/$eventattr/ -o $perf_data ping -6 -c 1 ::1 > /dev/null 2>&1
> +	perf script -i $perf_data > $perf_script
>  
> -	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
> +	exec 3<$perf_script
> +	exec 4<$expected
> +	while read line <&3 && read -r pattern <&4; do
> +		[ -z "$pattern" ] && break
>  		echo $line
> -		echo "$line" | egrep -q "${expected[$idx]}"
> +		echo "$line" | egrep -q "$pattern"
>  		if [ $? -ne 0 ] ; then
> -			printf "FAIL: expected backtrace entry %d \"%s\" got \"%s\"\n" $idx "${expected[$idx]}" "$line"
> +			printf "FAIL: expected backtrace entry \"%s\" got \"%s\"\n" "$pattern" "$line"
>  			exit 1
>  		fi
> -		let idx+=1
> -		[ -z "${expected[$idx]}" ] && break
>  	done
>  
>  	# If any statements are executed from this point onwards,
> @@ -58,6 +63,6 @@ skip_if_no_perf_probe && \
>  perf probe -q $libc inet_pton && \
>  trace_libc_inet_pton_backtrace
>  err=$?
> -rm -f ${file}
> +rm -f ${perf_data} ${perf_script} ${expected}
>  perf probe -q -d probe_libc:inet_pton
>  exit $err
> 
> Thanks,
> 
> Kim

  reply	other threads:[~2018-06-29 15:22 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-19 23:49 [PATCH 2/2] perf test shell: make perf inet_pton test more portable Kim Phillips
2018-06-20  6:59 ` Thomas-Mich Richter
2018-06-20 13:46 ` Arnaldo Carvalho de Melo
2018-06-21  0:45   ` Kim Phillips
2018-06-21 14:19     ` Arnaldo Carvalho de Melo
2018-06-21 15:18       ` Arnaldo Carvalho de Melo
2018-06-21 20:32         ` Kim Phillips
2018-06-29 15:21           ` Arnaldo Carvalho de Melo [this message]
2018-06-29 16:11             ` Kim Phillips
2018-06-28 20:36         ` Michael Petlan
2018-06-29 16:21           ` Kim Phillips

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180629152155.GB3593@kernel.org \
    --to=acme@kernel.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=brueckner@linux.vnet.ibm.com \
    --cc=jolsa@redhat.com \
    --cc=kim.phillips@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=mpetlan@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=sandipan@linux.vnet.ibm.com \
    --cc=tmricht@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.