]> www.infradead.org Git - users/hch/configfs.git/commitdiff
selftests: udpgro: report error when receive failed
authorHangbin Liu <liuhangbin@gmail.com>
Thu, 15 Aug 2024 07:59:50 +0000 (15:59 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 19 Aug 2024 08:54:24 +0000 (09:54 +0100)
Currently, we only check the latest senders's exit code. If the receiver
report failed, it is not recoreded. Fix it by checking the exit code
of all the involved processes.

Before:
  bad GRO lookup       ok
  multiple GRO socks   ./udpgso_bench_rx: recv: bad packet len, got 1452, expected 14520

 ./udpgso_bench_rx: recv: bad packet len, got 1452, expected 14520

 failed
 $ echo $?
 0

After:
  bad GRO lookup       ok
  multiple GRO socks   ./udpgso_bench_rx: recv: bad packet len, got 1452, expected 14520

 ./udpgso_bench_rx: recv: bad packet len, got 1452, expected 14520

 failed
 $ echo $?
 1

Fixes: 3327a9c46352 ("selftests: add functionals test for UDP GRO")
Suggested-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/udpgro.sh

index 11a1ebda564fd5d70c424bd20ec4c412fafbbc08..4659cf01e4384cd4316371ce46809ad9fa4e9e2f 100755 (executable)
@@ -46,17 +46,19 @@ run_one() {
        local -r all="$@"
        local -r tx_args=${all%rx*}
        local -r rx_args=${all#*rx}
+       local ret=0
 
        cfg_veth
 
-       ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${rx_args} && \
-               echo "ok" || \
-               echo "failed" &
+       ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${rx_args} &
+       local PID1=$!
 
        wait_local_port_listen ${PEER_NS} 8000 udp
        ./udpgso_bench_tx ${tx_args}
-       ret=$?
-       wait $(jobs -p)
+       check_err $?
+       wait ${PID1}
+       check_err $?
+       [ "$ret" -eq 0 ] && echo "ok" || echo "failed"
        return $ret
 }
 
@@ -73,6 +75,7 @@ run_one_nat() {
        local -r all="$@"
        local -r tx_args=${all%rx*}
        local -r rx_args=${all#*rx}
+       local ret=0
 
        if [[ ${tx_args} = *-4* ]]; then
                ipt_cmd=iptables
@@ -93,16 +96,17 @@ run_one_nat() {
        # ... so that GRO will match the UDP_GRO enabled socket, but packets
        # will land on the 'plain' one
        ip netns exec "${PEER_NS}" ./udpgso_bench_rx -G ${family} -b ${addr1} -n 0 &
-       pid=$!
-       ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${family} -b ${addr2%/*} ${rx_args} && \
-               echo "ok" || \
-               echo "failed"&
+       local PID1=$!
+       ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${family} -b ${addr2%/*} ${rx_args} &
+       local PID2=$!
 
        wait_local_port_listen "${PEER_NS}" 8000 udp
        ./udpgso_bench_tx ${tx_args}
-       ret=$?
-       kill -INT $pid
-       wait $(jobs -p)
+       check_err $?
+       kill -INT ${PID1}
+       wait ${PID2}
+       check_err $?
+       [ "$ret" -eq 0 ] && echo "ok" || echo "failed"
        return $ret
 }
 
@@ -111,20 +115,26 @@ run_one_2sock() {
        local -r all="$@"
        local -r tx_args=${all%rx*}
        local -r rx_args=${all#*rx}
+       local ret=0
 
        cfg_veth
 
        ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 1000 -R 10 ${rx_args} -p 12345 &
-       ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 2000 -R 10 ${rx_args} && \
-               echo "ok" || \
-               echo "failed" &
+       local PID1=$!
+       ip netns exec "${PEER_NS}" ./udpgso_bench_rx -C 2000 -R 10 ${rx_args} &
+       local PID2=$!
 
        wait_local_port_listen "${PEER_NS}" 12345 udp
        ./udpgso_bench_tx ${tx_args} -p 12345
+       check_err $?
        wait_local_port_listen "${PEER_NS}" 8000 udp
        ./udpgso_bench_tx ${tx_args}
-       ret=$?
-       wait $(jobs -p)
+       check_err $?
+       wait ${PID1}
+       check_err $?
+       wait ${PID2}
+       check_err $?
+       [ "$ret" -eq 0 ] && echo "ok" || echo "failed"
        return $ret
 }