Commit bcc3773c authored by Jakub Kicinski's avatar Jakub Kicinski Committed by Paolo Abeni
Browse files

selftests: net: add helper for checking if nettest is available



A few tests check if nettest exists in the $PATH before adding
$PWD to $PATH and re-checking. They don't discard stderr on
the first check (and nettest is built as part of selftests,
so it's pretty normal for it to not be available in system $PATH).
This leads to output noise:

  which: no nettest in (/home/virtme/tools/fs/bin:/home/virtme/tools/fs/sbin:/home/virtme/tools/fs/usr/bin:/home/virtme/tools/fs/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin)

Add a common helper for the check which does silence stderr.

There is another small functional change hiding here, because pmtu.sh
and fib_rule_tests.sh used to return from the test case rather than
completely exit. Building nettest is not hard, there should be no need
to maintain the ability to selectively skip cases in its absence.

Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Reviewed-by: default avatarHangbin Liu <liuhangbin@gmail.com>
Link: https://patch.msgid.link/20240821012227.1398769-1-kuba@kernel.org


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 001b98c9
Loading
Loading
Loading
Loading
+1 −8
Original line number Diff line number Diff line
@@ -4304,14 +4304,7 @@ elif [ "$TESTS" = "ipv6" ]; then
	TESTS="$TESTS_IPV6"
fi

# nettest can be run from PATH or from same directory as this selftest
if ! which nettest >/dev/null; then
	PATH=$PWD:$PATH
	if ! which nettest >/dev/null; then
		echo "'nettest' command not found; skipping tests"
		exit $ksft_skip
	fi
fi
check_gen_prog "nettest"

declare -i nfail=0
declare -i nsuccess=0
+2 −35
Original line number Diff line number Diff line
@@ -51,31 +51,6 @@ log_test()
	fi
}

check_nettest()
{
	if which nettest > /dev/null 2>&1; then
		return 0
	fi

	# Add the selftest directory to PATH if not already done
	if [ "${SELFTEST_PATH}" = "" ]; then
		SELFTEST_PATH="$(dirname $0)"
		PATH="${PATH}:${SELFTEST_PATH}"

		# Now retry with the new path
		if which nettest > /dev/null 2>&1; then
			return 0
		fi

		if [ "${ret}" -eq 0 ]; then
			ret="${ksft_skip}"
		fi
		echo "nettest not found (try 'make -C ${SELFTEST_PATH} nettest')"
	fi

	return 1
}

setup()
{
	set -e
@@ -317,11 +292,6 @@ fib_rule6_connect_test()
	echo
	echo "IPv6 FIB rule connect tests"

	if ! check_nettest; then
		echo "SKIP: Could not run test without nettest tool"
		return
	fi

	setup_peer
	$IP -6 rule add dsfield 0x04 table $RTABLE_PEER

@@ -516,11 +486,6 @@ fib_rule4_connect_test()
	echo
	echo "IPv4 FIB rule connect tests"

	if ! check_nettest; then
		echo "SKIP: Could not run test without nettest tool"
		return
	fi

	setup_peer
	$IP -4 rule add dsfield 0x04 table $RTABLE_PEER

@@ -584,6 +549,8 @@ if [ ! -x "$(command -v ip)" ]; then
	exit $ksft_skip
fi

check_gen_prog "nettest"

# start clean
cleanup &> /dev/null
setup
+15 −0
Original line number Diff line number Diff line
@@ -125,6 +125,21 @@ slowwait_for_counter()
	slowwait "$timeout" until_counter_is ">= $((base + delta))" "$@"
}

# Check for existence of tools which are built as part of selftests
# but may also already exist in $PATH
check_gen_prog()
{
	local prog_name=$1; shift

	if ! which $prog_name >/dev/null 2>/dev/null; then
		PATH=$PWD:$PATH
		if ! which $prog_name >/dev/null; then
			echo "'$prog_name' command not found; skipping tests"
			exit $ksft_skip
		fi
	fi
}

remove_ns_list()
{
	local item=$1
+1 −7
Original line number Diff line number Diff line
@@ -681,13 +681,7 @@ setup_xfrm() {
}

setup_nettest_xfrm() {
	if ! which nettest >/dev/null; then
		PATH=$PWD:$PATH
		if ! which nettest >/dev/null; then
			echo "'nettest' command not found; skipping tests"
			return 1
		fi
	fi
	check_gen_prog "nettest"

	[ ${1} -eq 6 ] && proto="-6" || proto=""
	port=${2}
+1 −8
Original line number Diff line number Diff line
@@ -30,14 +30,7 @@

source lib.sh

# nettest can be run from PATH or from same directory as this selftest
if ! which nettest >/dev/null; then
	PATH=$PWD:$PATH
	if ! which nettest >/dev/null; then
		echo "'nettest' command not found; skipping tests"
		exit $ksft_skip
	fi
fi
check_gen_prog "nettest"

result=0

Loading