selftests: forwarding: tc_common: Convert to use busywait
authorPetr Machata <petrm@mellanox.com>
Mon, 2 Mar 2020 17:56:04 +0000 (19:56 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 4 Mar 2020 01:03:52 +0000 (17:03 -0800)
A function busywait() was recently added based on the logic in
__tc_check_packets(). Convert the code in tc_common to use the new
function.

Signed-off-by: Petr Machata <petrm@mellanox.com>
Reviewed-by: Amit Cohen <amitc@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/forwarding/tc_common.sh

index 64f65263358598f1109e34fbbc566a8f4a850c41..0e18e8be6e2a90f06a73cfe04883ebefab386645 100644 (file)
@@ -6,39 +6,14 @@ CHECK_TC="yes"
 # Can be overridden by the configuration file. See lib.sh
 TC_HIT_TIMEOUT=${TC_HIT_TIMEOUT:=1000} # ms
 
-__tc_check_packets()
-{
-       local id=$1
-       local handle=$2
-       local count=$3
-       local operator=$4
-
-       start_time="$(date -u +%s%3N)"
-       while true
-       do
-               cmd_jq "tc -j -s filter show $id" \
-                      ".[] | select(.options.handle == $handle) | \
-                           select(.options.actions[0].stats.packets $operator $count)" \
-                   &> /dev/null
-               ret=$?
-               if [[ $ret -eq 0 ]]; then
-                       return $ret
-               fi
-               current_time="$(date -u +%s%3N)"
-               diff=$(expr $current_time - $start_time)
-               if [ "$diff" -gt "$TC_HIT_TIMEOUT" ]; then
-                       return 1
-               fi
-       done
-}
-
 tc_check_packets()
 {
        local id=$1
        local handle=$2
        local count=$3
 
-       __tc_check_packets "$id" "$handle" "$count" "=="
+       busywait "$TC_HIT_TIMEOUT" until_counter_is "== $count" \
+                tc_rule_handle_stats_get "$id" "$handle" > /dev/null
 }
 
 tc_check_packets_hitting()
@@ -46,5 +21,6 @@ tc_check_packets_hitting()
        local id=$1
        local handle=$2
 
-       __tc_check_packets "$id" "$handle" 0 ">"
+       busywait "$TC_HIT_TIMEOUT" until_counter_is "> 0" \
+                tc_rule_handle_stats_get "$id" "$handle" > /dev/null
 }