diff mbox series

[v2,1/1] ipneigh : Use new API

Message ID 20180514114930.9350-1-asmorodskyi@suse.com
State Superseded
Delegated to: Petr Vorel
Headers show
Series [v2,1/1] ipneigh : Use new API | expand

Commit Message

Anton Smorodskyi May 14, 2018, 11:49 a.m. UTC
Besides all obvious changes for moving to new API,
also was done :
1. more generic variable names
2. add check for del command failure
---
 testcases/network/tcp_cmds/ipneigh/ipneigh01.sh | 65 ++++++++++++-------------
 1 file changed, 32 insertions(+), 33 deletions(-)

Comments

Petr Vorel May 16, 2018, 9:09 a.m. UTC | #1
Hi Anton,

> Besides all obvious changes for moving to new API,
> also was done :
> 1. more generic variable names
> 2. add check for del command failure
> ---
>  testcases/network/tcp_cmds/ipneigh/ipneigh01.sh | 65 ++++++++++++-------------
>  1 file changed, 32 insertions(+), 33 deletions(-)

I'm sorry to NACK your patch, there needs to be some changes to done.

Some change I'd like to have is to pass this script command (-c [ arp | ip ]) and run test
only once, i.e. TST_CNT=1 (then it does not need to be included).
Then in runtest files it'd be:

diff --git runtest/net.ipv6 runtest/net.ipv6
-ipneigh601 ipneigh01.sh -6
+ipneigh6_ip ipneigh01.sh -6 -c ip
diff --git runtest/net.tcp_cmds runtest/net.tcp_cmds
-ipneigh01 ipneigh01.sh
+ipneigh01_arp ipneigh01.sh -c arp
+ipneigh01_ip ipneigh01.sh -c ip

By this test is 1) cleaner 2) we get rid of TCONF for IPv6.

> diff --git a/testcases/network/tcp_cmds/ipneigh/ipneigh01.sh b/testcases/network/tcp_cmds/ipneigh/ipneigh01.sh
...

>  TCID=ipneigh01
In new API you don't use TCID.

>  NUMLOOPS=${NUMLOOPS:-50}
It'd be better to use some variable from tst_net.sh, but not sure which one (NS_TIMES? Or
create new one for TCP tests?), so feel free to ignore it.

> -TST_TOTAL=2
> -TST_USE_LEGACY_API=1
> +TST_TESTFUNC=do_test
> +TST_CNT=2
>  . tst_net.sh

>  do_setup()
> @@ -30,55 +31,53 @@ do_setup()

>  do_test()
>  {
> -	local arp_show_cmd="$1"
> -	local arp_del_cmd="$2"
> +	local rhost=$(tst_ipaddr rhost)
> +	case $1 in
> +	1)
> +		local show_cmd="ip neigh show"
> +		local del_cmd="ip neigh del $rhost dev $(tst_iface)"
> +	;;
> +	2)
> +		if [ -n "$TST_IPV6" ] then
                             ^ Missing semicolon
		if [ -n "$TST_IPV6" ]; then
Test don't run without that. I'd fix that before commit, but there are other issues.

> +			tst_res TCONF "'arp cmd doesn't support IPv6, skipping test-case"
You still do TCONF.

> +			return 1
> +		fi
> +		local show_cmd="arp -a"
> +		local del_cmd="arp -d $rhost"
> +	;;
> +	esac

>  	local entry_name
>  	[ "$TST_IPV6" ] && entry_name="NDISC" || entry_name="ARP"

> -	tst_resm TINFO "Stress auto-creation of $entry_name cache entry"
> -	tst_resm TINFO "by pinging '$rhost' and deleting entry again"
> -	tst_resm TINFO "with '$arp_del_cmd'"
> +	tst_res TINFO "Stress auto-creation of $entry_name cache entry"
> +	tst_res TINFO "by pinging '$rhost' and deleting entry again"
> +	tst_res TINFO "with '$del_cmd'"
Maybe you could specify number of times: $NUMLOOPS.
	tst_res TINFO "with '$del_cmd' $NUMLOOPS times"

>  	for i in $(seq 1 $NUMLOOPS); do

>  		ping$TST_IPV6 -q -c1 $rhost > /dev/null
It looks to me better using tst_ping() from tst_net.sh (API function, other tests use it).
Then we could get rid of checking in do_setup:
tst_check_cmds arp grep ping$TST_IPV6

>  		local k
> -		local ret=1
> -		# wait for arp entry at least 3 seconds
>  		for k in $(seq 1 30); do
> -			$arp_show_cmd | grep -q $rhost
> -			if [ $? -eq 0 ]; then
> -				ret=0
> -				break;
> +			$show_cmd | grep -q $rhost
> +			if [ $? -ne 0 ]; then
> +				tst_brk TFAIL "$entry_name entry '$rhost' not listed"
>  			fi
You test to run much longer by removing break. By running it 30times until it fails. IMHO
that's not needed, the "stress" of the test is done by upper loop.
>  			tst_sleep 100ms
>  		done
...


Kind regards,
Petr
Anton Smorodskyi May 16, 2018, 1:05 p.m. UTC | #2
Hi Petr,

Thanks for review !


> I'm sorry to NACK your patch, there needs to be some changes to done.
>
> Some change I'd like to have is to pass this script command (-c [ arp | ip ]) and run test
> only once, i.e. TST_CNT=1 (then it does not need to be included).
> Then in runtest files it'd be:
>
> diff --git runtest/net.ipv6 runtest/net.ipv6
> -ipneigh601 ipneigh01.sh -6
> +ipneigh6_ip ipneigh01.sh -6 -c ip
> diff --git runtest/net.tcp_cmds runtest/net.tcp_cmds
> -ipneigh01 ipneigh01.sh
> +ipneigh01_arp ipneigh01.sh -c arp
> +ipneigh01_ip ipneigh01.sh -c ip
>
> By this test is 1) cleaner 2) we get rid of TCONF for IPv6.

ok , make sense .

>> +			tst_res TCONF "'arp cmd doesn't support IPv6, skipping test-case"
> You still do TCONF.
Yes and it make perfect sense now because I am doing exit just after 
this message , so it is ok
>
>>   		ping$TST_IPV6 -q -c1 $rhost > /dev/null
> It looks to me better using tst_ping() from tst_net.sh (API function, other tests use it).
> Then we could get rid of checking in do_setup:
> tst_check_cmds arp grep ping$TST_IPV6
ok , was not aware about that , will change this
Petr Vorel May 16, 2018, 2 p.m. UTC | #3
Hi Anton,

...
> > Some change I'd like to have is to pass this script command (-c [ arp | ip ]) and run test
> > only once, i.e. TST_CNT=1 (then it does not need to be included).
> > Then in runtest files it'd be:

> > diff --git runtest/net.ipv6 runtest/net.ipv6
> > -ipneigh601 ipneigh01.sh -6
> > +ipneigh6_ip ipneigh01.sh -6 -c ip
> > diff --git runtest/net.tcp_cmds runtest/net.tcp_cmds
> > -ipneigh01 ipneigh01.sh
> > +ipneigh01_arp ipneigh01.sh -c arp
> > +ipneigh01_ip ipneigh01.sh -c ip

> > By this test is 1) cleaner 2) we get rid of TCONF for IPv6.

> ok , make sense .

> > > +			tst_res TCONF "'arp cmd doesn't support IPv6, skipping test-case"
                               ^ left quote, which was in previous version, please remove it.
> > You still do TCONF.
> Yes and it make perfect sense now because I am doing exit just after this
> message , so it is ok
OK, it make sense to check for it. But if you pass 1 command in the test, you can have it as:
tst_res TCONF "arp doesn't support IPv6"

Kind regards,
Petr
diff mbox series

Patch

diff --git a/testcases/network/tcp_cmds/ipneigh/ipneigh01.sh b/testcases/network/tcp_cmds/ipneigh/ipneigh01.sh
index 9af3aa31e..621863454 100755
--- a/testcases/network/tcp_cmds/ipneigh/ipneigh01.sh
+++ b/testcases/network/tcp_cmds/ipneigh/ipneigh01.sh
@@ -1,4 +1,5 @@ 
 #!/bin/sh
+# Copyright (c) 2018 SUSE Linux GmbH
 # Copyright (c) 2016 Oracle and/or its affiliates. All Rights Reserved.
 # Copyright (c) International Business Machines  Corp., 2000
 # This program is free software; you can redistribute it and/or
@@ -18,8 +19,8 @@ 
 
 TCID=ipneigh01
 NUMLOOPS=${NUMLOOPS:-50}
-TST_TOTAL=2
-TST_USE_LEGACY_API=1
+TST_TESTFUNC=do_test
+TST_CNT=2
 . tst_net.sh
 
 do_setup()
@@ -30,55 +31,53 @@  do_setup()
 
 do_test()
 {
-	local arp_show_cmd="$1"
-	local arp_del_cmd="$2"
+	local rhost=$(tst_ipaddr rhost)
+	case $1 in
+	1)
+		local show_cmd="ip neigh show"
+		local del_cmd="ip neigh del $rhost dev $(tst_iface)"
+	;;
+	2)
+		if [ -n "$TST_IPV6" ] then
+			tst_res TCONF "'arp cmd doesn't support IPv6, skipping test-case"
+			return 1
+		fi
+		local show_cmd="arp -a"
+		local del_cmd="arp -d $rhost"
+	;;
+	esac
 
 	local entry_name
 	[ "$TST_IPV6" ] && entry_name="NDISC" || entry_name="ARP"
 
-	tst_resm TINFO "Stress auto-creation of $entry_name cache entry"
-	tst_resm TINFO "by pinging '$rhost' and deleting entry again"
-	tst_resm TINFO "with '$arp_del_cmd'"
+	tst_res TINFO "Stress auto-creation of $entry_name cache entry"
+	tst_res TINFO "by pinging '$rhost' and deleting entry again"
+	tst_res TINFO "with '$del_cmd'"
 
 	for i in $(seq 1 $NUMLOOPS); do
 
 		ping$TST_IPV6 -q -c1 $rhost > /dev/null
 
 		local k
-		local ret=1
-		# wait for arp entry at least 3 seconds
 		for k in $(seq 1 30); do
-			$arp_show_cmd | grep -q $rhost
-			if [ $? -eq 0 ]; then
-				ret=0
-				break;
+			$show_cmd | grep -q $rhost
+			if [ $? -ne 0 ]; then
+				tst_brk TFAIL "$entry_name entry '$rhost' not listed"
 			fi
 			tst_sleep 100ms
 		done
 
-		[ "$ret" -ne 0 ] && \
-			tst_brkm TFAIL "$entry_name entry '$rhost' not listed"
+		$del_cmd
+		if [ $? -ne 0 ]; then
+			tst_brk TFAIL "fail to delete entry"
+		fi
 
-		$arp_del_cmd
-
-		$arp_show_cmd | grep -q "${rhost}.*$(tst_hwaddr rhost)" && \
-			tst_brkm TFAIL "'$arp_del_cmd' failed, entry has " \
+		$show_cmd | grep -q "${rhost}.*$(tst_hwaddr rhost)" && \
+			tst_brk TFAIL "'$del_cmd' failed, entry has " \
 				       "$(tst_hwaddr rhost)' $i/$NUMLOOPS"
 	done
 
-	tst_resm TPASS "verified adding/removing of $entry_name cache entry"
+	tst_res TPASS "verified adding/removing of $entry_name cache entry"
 }
 
-do_setup
-
-rhost=$(tst_ipaddr rhost)
-
-if [ -z "$TST_IPV6" ]; then
-	do_test "arp -a" "arp -d $rhost"
-else
-	tst_resm TCONF "'arp cmd doesn't support IPv6, skipping test-case"
-fi
-
-do_test "ip neigh show" "ip neigh del $rhost dev $(tst_iface)"
-
-tst_exit
+tst_run
\ No newline at end of file