2018-03-12 12:46:43

by Sandipan Das

[permalink] [raw]
Subject: [PATCH] perf test: Fix exit code for record+probe_libc_inet_pton.sh

This fixes record+probe_libc_inet_pton.sh from always exiting
with code 0 and making the test pass even if the perf script
output does not match the expected pattern.

The issue can be observed if this test is run with the verbose
flags as shown below:

60: probe libc's inet_pton & backtrace it with ping :
...
ping 19602 [006] 16988.413767: probe_libc:inet_pton: (7fff9a2c42e8)
1842e8 __GI___inet_pton (/usr/lib64/libc-2.26.so)
130db4 getaddrinfo (/usr/lib64/libc-2.26.so)

FAIL: expected backtrace entry 3 ".*\(.*/bin/ping.*\)$" got ""
test child finished with 0
...
probe libc's inet_pton & backtrace it with ping: Ok

Fixes: e07d585e2454 ("perf tests: Switch trace+probe_libc_inet_pton to use record")
Signed-off-by: Sandipan Das <[email protected]>
---
tools/perf/tests/shell/record+probe_libc_inet_pton.sh | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

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 52c3ee701a89..1ecc1f0ff84a 100755
--- a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
+++ b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
@@ -47,7 +47,10 @@ trace_libc_inet_pton_backtrace() {
[ -z "${expected[$idx]}" ] && break
done

- rm -f $file
+ # If any statements are executed from this point onwards,
+ # the exit code of the last among these will be reflected
+ # in err below. If the exit code is 0, the test will pass
+ # even if the perf script output does not match.
}

# Check for IPv6 interface existence
--
2.14.3



2018-03-12 13:07:01

by Jiri Olsa

[permalink] [raw]
Subject: Re: [PATCH] perf test: Fix exit code for record+probe_libc_inet_pton.sh

On Mon, Mar 12, 2018 at 06:14:50PM +0530, Sandipan Das wrote:
> This fixes record+probe_libc_inet_pton.sh from always exiting
> with code 0 and making the test pass even if the perf script
> output does not match the expected pattern.
>
> The issue can be observed if this test is run with the verbose
> flags as shown below:
>
> 60: probe libc's inet_pton & backtrace it with ping :
> ...
> ping 19602 [006] 16988.413767: probe_libc:inet_pton: (7fff9a2c42e8)
> 1842e8 __GI___inet_pton (/usr/lib64/libc-2.26.so)
> 130db4 getaddrinfo (/usr/lib64/libc-2.26.so)
>
> FAIL: expected backtrace entry 3 ".*\(.*/bin/ping.*\)$" got ""
> test child finished with 0
> ...
> probe libc's inet_pton & backtrace it with ping: Ok
>
> Fixes: e07d585e2454 ("perf tests: Switch trace+probe_libc_inet_pton to use record")
> Signed-off-by: Sandipan Das <[email protected]>
> ---
> tools/perf/tests/shell/record+probe_libc_inet_pton.sh | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> 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 52c3ee701a89..1ecc1f0ff84a 100755
> --- a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
> +++ b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
> @@ -47,7 +47,10 @@ trace_libc_inet_pton_backtrace() {
> [ -z "${expected[$idx]}" ] && break
> done
>
> - rm -f $file
> + # If any statements are executed from this point onwards,
> + # the exit code of the last among these will be reflected
> + # in err below. If the exit code is 0, the test will pass
> + # even if the perf script output does not match.

right :-\ but we still need to delete that $file.. I assume it will
get delete by the 'rm -f ${file}' in the script main body?

thanks,
jirka

2018-03-12 16:55:12

by Sandipan Das

[permalink] [raw]
Subject: Re: [PATCH] perf test: Fix exit code for record+probe_libc_inet_pton.sh



On 03/12/2018 06:35 PM, Jiri Olsa wrote:
> On Mon, Mar 12, 2018 at 06:14:50PM +0530, Sandipan Das wrote:
>> This fixes record+probe_libc_inet_pton.sh from always exiting
>> with code 0 and making the test pass even if the perf script
>> output does not match the expected pattern.
>>
>> The issue can be observed if this test is run with the verbose
>> flags as shown below:
>>
>> 60: probe libc's inet_pton & backtrace it with ping :
>> ...
>> ping 19602 [006] 16988.413767: probe_libc:inet_pton: (7fff9a2c42e8)
>> 1842e8 __GI___inet_pton (/usr/lib64/libc-2.26.so)
>> 130db4 getaddrinfo (/usr/lib64/libc-2.26.so)
>>
>> FAIL: expected backtrace entry 3 ".*\(.*/bin/ping.*\)$" got ""
>> test child finished with 0
>> ...
>> probe libc's inet_pton & backtrace it with ping: Ok
>>
>> Fixes: e07d585e2454 ("perf tests: Switch trace+probe_libc_inet_pton to use record")
>> Signed-off-by: Sandipan Das <[email protected]>
>> ---
>> tools/perf/tests/shell/record+probe_libc_inet_pton.sh | 5 ++++-
>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> 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 52c3ee701a89..1ecc1f0ff84a 100755
>> --- a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
>> +++ b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
>> @@ -47,7 +47,10 @@ trace_libc_inet_pton_backtrace() {
>> [ -z "${expected[$idx]}" ] && break
>> done
>>
>> - rm -f $file
>> + # If any statements are executed from this point onwards,
>> + # the exit code of the last among these will be reflected
>> + # in err below. If the exit code is 0, the test will pass
>> + # even if the perf script output does not match.
>
> right :-\ but we still need to delete that $file.. I assume it will
> get delete by the 'rm -f ${file}' in the script main body?
>
> thanks,
> jirka
>
>

Yes, that deletes $file.

--
With Regards,
Sandipan


Subject: [tip:perf/core] perf test: Fix exit code for record+probe_libc_inet_pton.sh

Commit-ID: 10f354a36f9a9aa1b8bffe0abc1cd43822a85bcd
Gitweb: https://git.kernel.org/tip/10f354a36f9a9aa1b8bffe0abc1cd43822a85bcd
Author: Sandipan Das <[email protected]>
AuthorDate: Mon, 12 Mar 2018 18:14:50 +0530
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Fri, 16 Mar 2018 13:56:31 -0300

perf test: Fix exit code for record+probe_libc_inet_pton.sh

This fixes record+probe_libc_inet_pton.sh from always exiting with code
0 and making the test pass even if the perf script output does not match
the expected pattern.

The issue can be observed if this test is run with the verbose flags as
shown below:

60: probe libc's inet_pton & backtrace it with ping :
...
ping 19602 [006] 16988.413767: probe_libc:inet_pton: (7fff9a2c42e8)
1842e8 __GI___inet_pton (/usr/lib64/libc-2.26.so)
130db4 getaddrinfo (/usr/lib64/libc-2.26.so)

FAIL: expected backtrace entry 3 ".*\(.*/bin/ping.*\)$" got ""
test child finished with 0
...
probe libc's inet_pton & backtrace it with ping: Ok

Signed-off-by: Sandipan Das <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Naveen N. Rao <[email protected]>
Fixes: e07d585e2454 ("perf tests: Switch trace+probe_libc_inet_pton to use record")
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/tests/shell/record+probe_libc_inet_pton.sh | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

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 52c3ee701a89..1ecc1f0ff84a 100755
--- a/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
+++ b/tools/perf/tests/shell/record+probe_libc_inet_pton.sh
@@ -47,7 +47,10 @@ trace_libc_inet_pton_backtrace() {
[ -z "${expected[$idx]}" ] && break
done

- rm -f $file
+ # If any statements are executed from this point onwards,
+ # the exit code of the last among these will be reflected
+ # in err below. If the exit code is 0, the test will pass
+ # even if the perf script output does not match.
}

# Check for IPv6 interface existence