Subject: Re: [PATCH bpf] tools/bpf: fix test_sock and test_sock_addr.sh failure

From: Andrey Ignatov <[email-masked]>
Date: Wed, 18 Apr 2018 11:10:38 -0700

The patch looks good to me.

Acked-by: Andrey Ignatov <[email-masked]>

Thanks for improving the tests, Yonghong!

Yonghong Song <[email-masked]> [Wed, 2018-04-18 10:49 -0700]:
> The bpf selftests test_sock and test_sock_addr.sh failed
> in my test machine. The failure looks like:
>     $ ./test_sock
>     Test case: bind4 load with invalid access: src_ip6 .. [PASS]
>     Test case: bind4 load with invalid access: mark .. [PASS]
>     Test case: bind6 load with invalid access: src_ip4 .. [PASS]
>     Test case: sock_create load with invalid access: src_port .. [PASS]
>     Test case: sock_create load w/o expected_attach_type (compat mode) .. [FAIL]
>     Test case: sock_create load w/ expected_attach_type .. [FAIL]
>     Test case: attach type mismatch bind4 vs bind6 .. [FAIL]
>     ...
>     Summary: 4 PASSED, 12 FAILED
>     $ ./test_sock_addr.sh
>     Wait for testing IPv4/IPv6 to become available .....
>     ERROR: Timeout waiting for test IP to become available.
> 
> In test_sock, bpf program loads failed due to hitting memlock limits.
> In test_sock_addr.sh, my test machine is a ipv6 only test box and using
> "ping" without specifying address family for an ipv6 address does not work.
> 
> This patch fixed the issue by including header bpf_rlimit.h in test_sock.c
> and test_sock_addr.c, and specifying address family for ping command.
> 
> Cc: Andrey Ignatov <[email-masked]>
> Signed-off-by: Yonghong Song <[email-masked]>
> ---
>  tools/testing/selftests/bpf/test_sock.c       | 1 +
>  tools/testing/selftests/bpf/test_sock_addr.c  | 1 +
>  tools/testing/selftests/bpf/test_sock_addr.sh | 4 ++--
>  3 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/test_sock.c b/tools/testing/selftests/bpf/test_sock.c
> index 73bb20c..f4d99fa 100644
> --- a/tools/testing/selftests/bpf/test_sock.c
> +++ b/tools/testing/selftests/bpf/test_sock.c
> @@ -13,6 +13,7 @@
>  #include <bpf/bpf.h>
>  
>  #include "cgroup_helpers.h"
> +#include "bpf_rlimit.h"
>  
>  #ifndef ARRAY_SIZE
>  # define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
> diff --git a/tools/testing/selftests/bpf/test_sock_addr.c b/tools/testing/selftests/bpf/test_sock_addr.c
> index d488f20..2950f80 100644
> --- a/tools/testing/selftests/bpf/test_sock_addr.c
> +++ b/tools/testing/selftests/bpf/test_sock_addr.c
> @@ -15,6 +15,7 @@
>  #include <bpf/libbpf.h>
>  
>  #include "cgroup_helpers.h"
> +#include "bpf_rlimit.h"
>  
>  #define CG_PATH	"/foo"
>  #define CONNECT4_PROG_PATH	"./connect4_prog.o"
> diff --git a/tools/testing/selftests/bpf/test_sock_addr.sh b/tools/testing/selftests/bpf/test_sock_addr.sh
> index c6e1dcf..9832a87 100755
> --- a/tools/testing/selftests/bpf/test_sock_addr.sh
> +++ b/tools/testing/selftests/bpf/test_sock_addr.sh
> @@ -4,7 +4,7 @@ set -eu
>  
>  ping_once()
>  {
> -	ping -q -c 1 -W 1 ${1%%/*} >/dev/null 2>&1
> +	ping -${1} -q -c 1 -W 1 ${2%%/*} >/dev/null 2>&1
>  }
>  
>  wait_for_ip()
> @@ -13,7 +13,7 @@ wait_for_ip()
>  	echo -n "Wait for testing IPv4/IPv6 to become available "
>  	for _i in $(seq ${MAX_PING_TRIES}); do
>  		echo -n "."
> -		if ping_once ${TEST_IPv4} && ping_once ${TEST_IPv6}; then
> +		if ping_once 4 ${TEST_IPv4} && ping_once 6 ${TEST_IPv6}; then
>  			echo " OK"
>  			return
>  		fi
> -- 
> 2.9.5
> 

-- 
Andrey Ignatov