Subject: [PATCH] selftests: pmtu: use -oneline for ip route list cache

Some versions of iproute2 will output more than one line per entry, which
will cause the test to fail, like:

TEST: ipv6: list and flush cached exceptions [FAIL]
can't list cached exceptions

That happens, for example, with iproute2 4.15.0. When using the -oneline
option, this will work just fine:

TEST: ipv6: list and flush cached exceptions [ OK ]

This also works just fine with a more recent version of iproute2, like
5.4.0.

For some reason, two lines are printed for the IPv4 test no matter what
version of iproute2 is used. Use the same -oneline parameter there instead
of counting the lines twice.

Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
---
tools/testing/selftests/net/pmtu.sh | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/net/pmtu.sh b/tools/testing/selftests/net/pmtu.sh
index ab367e75f095..d697815d2785 100755
--- a/tools/testing/selftests/net/pmtu.sh
+++ b/tools/testing/selftests/net/pmtu.sh
@@ -1249,8 +1249,7 @@ test_list_flush_ipv4_exception() {
done
run_cmd ${ns_a} ping -q -M want -i 0.1 -c 2 -s 1800 "${dst2}"

- # Each exception is printed as two lines
- if [ "$(${ns_a} ip route list cache | wc -l)" -ne 202 ]; then
+ if [ "$(${ns_a} ip -oneline route list cache | wc -l)" -ne 101 ]; then
err " can't list cached exceptions"
fail=1
fi
@@ -1300,7 +1299,7 @@ test_list_flush_ipv6_exception() {
run_cmd ${ns_a} ping -q -M want -i 0.1 -w 1 -s 1800 "${dst_prefix1}${i}"
done
run_cmd ${ns_a} ping -q -M want -i 0.1 -w 1 -s 1800 "${dst2}"
- if [ "$(${ns_a} ip -6 route list cache | wc -l)" -ne 101 ]; then
+ if [ "$(${ns_a} ip -oneline -6 route list cache | wc -l)" -ne 101 ]; then
err " can't list cached exceptions"
fail=1
fi
--
2.20.1


2019-11-29 14:41:33

by Stefano Brivio

[permalink] [raw]
Subject: Re: [PATCH] selftests: pmtu: use -oneline for ip route list cache

Hi,

On Thu, 28 Nov 2019 15:58:06 -0300
Thadeu Lima de Souza Cascardo <[email protected]> wrote:

> Some versions of iproute2 will output more than one line per entry, which
> will cause the test to fail, like:
>
> TEST: ipv6: list and flush cached exceptions [FAIL]
> can't list cached exceptions
>
> That happens, for example, with iproute2 4.15.0. When using the -oneline
> option, this will work just fine:
>
> TEST: ipv6: list and flush cached exceptions [ OK ]
>
> This also works just fine with a more recent version of iproute2, like
> 5.4.0.
>
> For some reason, two lines are printed for the IPv4 test no matter what
> version of iproute2 is used. Use the same -oneline parameter there instead
> of counting the lines twice.

Thanks, it looks definitely more robust this way.

Fixes: b964641e9925 ("selftests: pmtu: Make list_flush_ipv6_exception test more demanding")

> Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>

Acked-by: Stefano Brivio <[email protected]>

--
Stefano

2019-11-29 20:43:12

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] selftests: pmtu: use -oneline for ip route list cache

From: Thadeu Lima de Souza Cascardo <[email protected]>
Date: Thu, 28 Nov 2019 15:58:06 -0300

> Some versions of iproute2 will output more than one line per entry, which
> will cause the test to fail, like:
>
> TEST: ipv6: list and flush cached exceptions [FAIL]
> can't list cached exceptions
>
> That happens, for example, with iproute2 4.15.0. When using the -oneline
> option, this will work just fine:
>
> TEST: ipv6: list and flush cached exceptions [ OK ]
>
> This also works just fine with a more recent version of iproute2, like
> 5.4.0.
>
> For some reason, two lines are printed for the IPv4 test no matter what
> version of iproute2 is used. Use the same -oneline parameter there instead
> of counting the lines twice.
>
> Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>

Applied with Fixes: tag added and queued up for -stable.

Thanks.