]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests/net/forwarding: add slowwait functions
authorHangbin Liu <liuhangbin@gmail.com>
Mon, 5 Feb 2024 13:00:45 +0000 (21:00 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 8 Feb 2024 02:26:20 +0000 (18:26 -0800)
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>
tools/testing/selftests/net/forwarding/lib.sh

index a7ecfc8cae985b5c8fabe317ac32f7f1e8b725e4..db3688f52888f32b05b1b3d04dab2f48d06e7e80 100644 (file)
@@ -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