]> www.infradead.org Git - users/hch/misc.git/commitdiff
selftests: traceroute: Return correct value on failure
authorIdo Schimmel <idosch@nvidia.com>
Mon, 8 Sep 2025 07:32:34 +0000 (10:32 +0300)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 11 Sep 2025 10:22:38 +0000 (12:22 +0200)
The test always returns success even if some tests were modified to
fail. Fix by converting the test to use the appropriate library
functions instead of using its own functions.

Before:

 # ./traceroute.sh
 TEST: IPV6 traceroute                                               [FAIL]
 TEST: IPV4 traceroute                                               [ OK ]

 Tests passed:   1
 Tests failed:   1
 $ echo $?
 0

After:

 # ./traceroute.sh
 TEST: IPv6 traceroute                                               [FAIL]
         traceroute6 did not return 2000:102::2
 TEST: IPv4 traceroute                                               [ OK ]
 $ echo $?
 1

Reviewed-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20250908073238.119240-5-idosch@nvidia.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
tools/testing/selftests/net/traceroute.sh

index 282f14760940dd7acd56513ae3686ca6c4bfa932..46cb37e124cefda89618b115cae736c9aea2479d 100755 (executable)
@@ -10,28 +10,6 @@ PAUSE_ON_FAIL=no
 
 ################################################################################
 #
-log_test()
-{
-       local rc=$1
-       local expected=$2
-       local msg="$3"
-
-       if [ ${rc} -eq ${expected} ]; then
-               printf "TEST: %-60s  [ OK ]\n" "${msg}"
-               nsuccess=$((nsuccess+1))
-       else
-               ret=1
-               nfail=$((nfail+1))
-               printf "TEST: %-60s  [FAIL]\n" "${msg}"
-               if [ "${PAUSE_ON_FAIL}" = "yes" ]; then
-                       echo
-                       echo "hit enter to continue, 'q' to quit"
-                       read a
-                       [ "$a" = "q" ] && exit 1
-               fi
-       fi
-}
-
 run_cmd()
 {
        local ns
@@ -210,9 +188,12 @@ run_traceroute6()
 
        setup_traceroute6
 
+       RET=0
+
        # traceroute6 host-2 from host-1 (expects 2000:102::2)
        run_cmd $h1 "traceroute6 2000:103::4 | grep -q 2000:102::2"
-       log_test $? 0 "IPV6 traceroute"
+       check_err $? "traceroute6 did not return 2000:102::2"
+       log_test "IPv6 traceroute"
 
        cleanup_traceroute6
 }
@@ -275,9 +256,12 @@ run_traceroute()
 
        setup_traceroute
 
+       RET=0
+
        # traceroute host-2 from host-1 (expects 1.0.1.1). Takes a while.
        run_cmd $h1 "traceroute 1.0.2.4 | grep -q 1.0.1.1"
-       log_test $? 0 "IPV4 traceroute"
+       check_err $? "traceroute did not return 1.0.1.1"
+       log_test "IPv4 traceroute"
 
        cleanup_traceroute
 }
@@ -294,9 +278,6 @@ run_tests()
 ################################################################################
 # main
 
-declare -i nfail=0
-declare -i nsuccess=0
-
 while getopts :pv o
 do
        case $o in
@@ -308,5 +289,4 @@ done
 
 run_tests
 
-printf "\nTests passed: %3d\n" ${nsuccess}
-printf "Tests failed: %3d\n"   ${nfail}
+exit "${EXIT_STATUS}"