selftests: traceroute: Return correct value on failure

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>
This commit is contained in:
Ido Schimmel
2025-09-08 10:32:34 +03:00
committed by Paolo Abeni
parent 4a8c416602
commit c068ba9d3d

View File

@@ -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}"