diff mbox series

[bpf,v2] selftests/bpf: remove bash feature in test_xdp_redirect.sh

Message ID 20210206092654.155239-1-bjorn.topel@gmail.com
State New
Headers show
Series [bpf,v2] selftests/bpf: remove bash feature in test_xdp_redirect.sh | expand

Commit Message

Björn Töpel Feb. 6, 2021, 9:26 a.m. UTC
From: Björn Töpel <bjorn.topel@intel.com>

The test_xdp_redirect.sh script uses a bash redirect feature,
'&>/dev/null'. Use '>/dev/null 2>&1' instead.

Also remove the 'set -e' since the script actually relies on that the
return value can be used to determine pass/fail of the test.

Acked-by: William Tu <u9012063@gmail.com>
Fixes: 996139e801fd ("selftests: bpf: add a test for XDP redirect")
Signed-off-by: Björn Töpel <bjorn.topel@intel.com>
---
William, I kept your Acked-by.

v2: Kept /bin/sh and removed bashisms. (Randy)
---
 tools/testing/selftests/bpf/test_xdp_redirect.sh | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)


base-commit: 6183f4d3a0a2ad230511987c6c362ca43ec0055f

Comments

Andrii Nakryiko Feb. 9, 2021, 5:52 a.m. UTC | #1
On Sat, Feb 6, 2021 at 1:29 AM Björn Töpel <bjorn.topel@gmail.com> wrote:
>

> From: Björn Töpel <bjorn.topel@intel.com>

>

> The test_xdp_redirect.sh script uses a bash redirect feature,

> '&>/dev/null'. Use '>/dev/null 2>&1' instead.


We have plenty of explicit bash uses in selftest scripts, I'm not sure
it's a good idea to make scripts more verbose.

>

> Also remove the 'set -e' since the script actually relies on that the

> return value can be used to determine pass/fail of the test.


This sounds like a dubious decision. The script checks return results
only of last two commands, for which it's better to write and if
[<first command>] && [<second command>] check and leave set -e intact.

>

> Acked-by: William Tu <u9012063@gmail.com>

> Fixes: 996139e801fd ("selftests: bpf: add a test for XDP redirect")

> Signed-off-by: Björn Töpel <bjorn.topel@intel.com>

> ---

> William, I kept your Acked-by.

>

> v2: Kept /bin/sh and removed bashisms. (Randy)

> ---

>  tools/testing/selftests/bpf/test_xdp_redirect.sh | 15 +++++++--------

>  1 file changed, 7 insertions(+), 8 deletions(-)

>

> diff --git a/tools/testing/selftests/bpf/test_xdp_redirect.sh b/tools/testing/selftests/bpf/test_xdp_redirect.sh

> index dd80f0c84afb..4d4887da175c 100755

> --- a/tools/testing/selftests/bpf/test_xdp_redirect.sh

> +++ b/tools/testing/selftests/bpf/test_xdp_redirect.sh

> @@ -46,20 +46,20 @@ test_xdp_redirect()

>

>         setup

>

> -       ip link set dev veth1 $xdpmode off &> /dev/null

> +       ip link set dev veth1 $xdpmode off >/dev/null 2>&1

>         if [ $? -ne 0 ];then

>                 echo "selftests: test_xdp_redirect $xdpmode [SKIP]"

>                 return 0

>         fi

>

> -       ip -n ns1 link set veth11 $xdpmode obj xdp_dummy.o sec xdp_dummy &> /dev/null

> -       ip -n ns2 link set veth22 $xdpmode obj xdp_dummy.o sec xdp_dummy &> /dev/null

> -       ip link set dev veth1 $xdpmode obj test_xdp_redirect.o sec redirect_to_222 &> /dev/null

> -       ip link set dev veth2 $xdpmode obj test_xdp_redirect.o sec redirect_to_111 &> /dev/null

> +       ip -n ns1 link set veth11 $xdpmode obj xdp_dummy.o sec xdp_dummy >/dev/null 2>&1

> +       ip -n ns2 link set veth22 $xdpmode obj xdp_dummy.o sec xdp_dummy >/dev/null 2>&1

> +       ip link set dev veth1 $xdpmode obj test_xdp_redirect.o sec redirect_to_222 >/dev/null 2>&1

> +       ip link set dev veth2 $xdpmode obj test_xdp_redirect.o sec redirect_to_111 >/dev/null 2>&1

>

> -       ip netns exec ns1 ping -c 1 10.1.1.22 &> /dev/null

> +       ip netns exec ns1 ping -c 1 10.1.1.22 >/dev/null 2>&1

>         local ret1=$?

> -       ip netns exec ns2 ping -c 1 10.1.1.11 &> /dev/null

> +       ip netns exec ns2 ping -c 1 10.1.1.11 >/dev/null 2>&1

>         local ret2=$?

>

>         if [ $ret1 -eq 0 -a $ret2 -eq 0 ]; then

> @@ -72,7 +72,6 @@ test_xdp_redirect()

>         cleanup

>  }

>

> -set -e

>  trap cleanup 2 3 6 9

>

>  test_xdp_redirect xdpgeneric

>

> base-commit: 6183f4d3a0a2ad230511987c6c362ca43ec0055f

> --

> 2.27.0

>
Björn Töpel Feb. 9, 2021, 6:41 a.m. UTC | #2
On 2021-02-09 06:52, Andrii Nakryiko wrote:
> On Sat, Feb 6, 2021 at 1:29 AM Björn Töpel <bjorn.topel@gmail.com> wrote:

>>

>> From: Björn Töpel <bjorn.topel@intel.com>

>>

>> The test_xdp_redirect.sh script uses a bash redirect feature,

>> '&>/dev/null'. Use '>/dev/null 2>&1' instead.

> 

> We have plenty of explicit bash uses in selftest scripts, I'm not sure

> it's a good idea to make scripts more verbose.

>


$ cd tools/testing/selftests
$ git grep '\#!/bin/bash'|wc -l
282
$ git grep '\#!/bin/sh'|wc -l
164

Andrii/Randy, I'm fine with whatever. I just want to be able to run the
test on Debian-derived systems. ;-)


>>

>> Also remove the 'set -e' since the script actually relies on that the

>> return value can be used to determine pass/fail of the test.

> 

> This sounds like a dubious decision. The script checks return results

> only of last two commands, for which it's better to write and if

> [<first command>] && [<second command>] check and leave set -e intact.

>


Ok!

Please decide on the shell flavor, and I'll respin a v3.


Björn
Randy Dunlap Feb. 9, 2021, 6:54 a.m. UTC | #3
On 2/8/21 10:41 PM, Björn Töpel wrote:
> On 2021-02-09 06:52, Andrii Nakryiko wrote:

>> On Sat, Feb 6, 2021 at 1:29 AM Björn Töpel <bjorn.topel@gmail.com> wrote:

>>>

>>> From: Björn Töpel <bjorn.topel@intel.com>

>>>

>>> The test_xdp_redirect.sh script uses a bash redirect feature,

>>> '&>/dev/null'. Use '>/dev/null 2>&1' instead.

>>

>> We have plenty of explicit bash uses in selftest scripts, I'm not sure

>> it's a good idea to make scripts more verbose.

>>

> 

> $ cd tools/testing/selftests

> $ git grep '\#!/bin/bash'|wc -l

> 282

> $ git grep '\#!/bin/sh'|wc -l

> 164

> 

> Andrii/Randy, I'm fine with whatever. I just want to be able to run the

> test on Debian-derived systems. ;-)

> 

> 

>>>

>>> Also remove the 'set -e' since the script actually relies on that the

>>> return value can be used to determine pass/fail of the test.

>>

>> This sounds like a dubious decision. The script checks return results

>> only of last two commands, for which it's better to write and if

>> [<first command>] && [<second command>] check and leave set -e intact.

>>

> 

> Ok!

> 

> Please decide on the shell flavor, and I'll respin a v3.


In general shell scripts in the kernel try not to use bash (we have taken
several patches to convert from /bin/bash to /bin/sh scripts).
OTOH, perf and bpf seem to be large exceptions to this trend,
so it is apparently OK to use bash. :)
Sorry to sidetrack you.

-- 
~Randy
diff mbox series

Patch

diff --git a/tools/testing/selftests/bpf/test_xdp_redirect.sh b/tools/testing/selftests/bpf/test_xdp_redirect.sh
index dd80f0c84afb..4d4887da175c 100755
--- a/tools/testing/selftests/bpf/test_xdp_redirect.sh
+++ b/tools/testing/selftests/bpf/test_xdp_redirect.sh
@@ -46,20 +46,20 @@  test_xdp_redirect()
 
 	setup
 
-	ip link set dev veth1 $xdpmode off &> /dev/null
+	ip link set dev veth1 $xdpmode off >/dev/null 2>&1
 	if [ $? -ne 0 ];then
 		echo "selftests: test_xdp_redirect $xdpmode [SKIP]"
 		return 0
 	fi
 
-	ip -n ns1 link set veth11 $xdpmode obj xdp_dummy.o sec xdp_dummy &> /dev/null
-	ip -n ns2 link set veth22 $xdpmode obj xdp_dummy.o sec xdp_dummy &> /dev/null
-	ip link set dev veth1 $xdpmode obj test_xdp_redirect.o sec redirect_to_222 &> /dev/null
-	ip link set dev veth2 $xdpmode obj test_xdp_redirect.o sec redirect_to_111 &> /dev/null
+	ip -n ns1 link set veth11 $xdpmode obj xdp_dummy.o sec xdp_dummy >/dev/null 2>&1
+	ip -n ns2 link set veth22 $xdpmode obj xdp_dummy.o sec xdp_dummy >/dev/null 2>&1
+	ip link set dev veth1 $xdpmode obj test_xdp_redirect.o sec redirect_to_222 >/dev/null 2>&1
+	ip link set dev veth2 $xdpmode obj test_xdp_redirect.o sec redirect_to_111 >/dev/null 2>&1
 
-	ip netns exec ns1 ping -c 1 10.1.1.22 &> /dev/null
+	ip netns exec ns1 ping -c 1 10.1.1.22 >/dev/null 2>&1
 	local ret1=$?
-	ip netns exec ns2 ping -c 1 10.1.1.11 &> /dev/null
+	ip netns exec ns2 ping -c 1 10.1.1.11 >/dev/null 2>&1
 	local ret2=$?
 
 	if [ $ret1 -eq 0 -a $ret2 -eq 0 ]; then
@@ -72,7 +72,6 @@  test_xdp_redirect()
 	cleanup
 }
 
-set -e
 trap cleanup 2 3 6 9
 
 test_xdp_redirect xdpgeneric