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: Przemek Kitszel <przemyslaw.kitszel@intel.com> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> Link: https://lore.kernel.org/r/20240205130048.282087-2-liuhangbin@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
b27696cd8f
commit
c8f4b19d64
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user