Commit c8f4b19d authored by Hangbin Liu's avatar Hangbin Liu Committed by Jakub Kicinski
Browse files

selftests/net/forwarding: add slowwait functions



Add slowwait functions to wait for some operations that may need a long time
to finish. The busywait executes the cmd too fast, which is kind of wasting
cpu in this scenario. At the same time, if shell debugging is enabled with
`set -x`. the busywait will output too much logs.

Reviewed-by: default avatarPrzemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: default avatarHangbin Liu <liuhangbin@gmail.com>
Link: https://lore.kernel.org/r/20240205130048.282087-2-liuhangbin@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent b27696cd
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -37,6 +37,32 @@ fi

source "$net_forwarding_dir/../lib.sh"

# timeout in seconds
slowwait()
{
	local timeout=$1; shift

	local start_time="$(date -u +%s)"
	while true
	do
		local out
		out=$("$@")
		local ret=$?
		if ((!ret)); then
			echo -n "$out"
			return 0
		fi

		local current_time="$(date -u +%s)"
		if ((current_time - start_time > timeout)); then
			echo -n "$out"
			return 1
		fi

		sleep 0.1
	done
}

##############################################################################
# Sanity checks

@@ -478,6 +504,15 @@ busywait_for_counter()
	busywait "$timeout" until_counter_is ">= $((base + delta))" "$@"
}

slowwait_for_counter()
{
	local timeout=$1; shift
	local delta=$1; shift

	local base=$("$@")
	slowwait "$timeout" until_counter_is ">= $((base + delta))" "$@"
}

setup_wait_dev()
{
	local dev=$1; shift