From: Jiri Pirko <j...@mellanox.com>

Push the jq return value workaround code into a separate helper so it
could be used by the rest of the code.

Signed-off-by: Jiri Pirko <j...@mellanox.com>
---
v2->v3:
-remove -e jq option and rather check for empty output and return error
v1->v2:
-new patch
---
 tools/testing/selftests/net/forwarding/lib.sh | 19 +++++++++++++++++++
 .../selftests/net/forwarding/tc_common.sh     | 17 ++++-------------
 2 files changed, 23 insertions(+), 13 deletions(-)

diff --git a/tools/testing/selftests/net/forwarding/lib.sh 
b/tools/testing/selftests/net/forwarding/lib.sh
index 9385dc971269..85c587a03c8a 100644
--- a/tools/testing/selftests/net/forwarding/lib.sh
+++ b/tools/testing/selftests/net/forwarding/lib.sh
@@ -250,6 +250,25 @@ setup_wait()
        sleep $WAIT_TIME
 }
 
+cmd_jq()
+{
+       local cmd=$1
+       local jq_exp=$2
+       local ret
+       local output
+
+       output="$($cmd)"
+       # it the command fails, return error right away
+       ret=$?
+       if [[ $ret -ne 0 ]]; then
+               return $ret
+       fi
+       output=$(echo $output | jq -r "$jq_exp")
+       echo $output
+       # return success only in case of non-empty output
+       [ ! -z "$output" ]
+}
+
 lldpad_app_wait_set()
 {
        local dev=$1; shift
diff --git a/tools/testing/selftests/net/forwarding/tc_common.sh 
b/tools/testing/selftests/net/forwarding/tc_common.sh
index 9d3b64a2a264..315e934358d4 100644
--- a/tools/testing/selftests/net/forwarding/tc_common.sh
+++ b/tools/testing/selftests/net/forwarding/tc_common.sh
@@ -8,18 +8,9 @@ tc_check_packets()
        local id=$1
        local handle=$2
        local count=$3
-       local ret
 
-       output="$(tc -j -s filter show $id)"
-       # workaround the jq bug which causes jq to return 0 in case input is ""
-       ret=$?
-       if [[ $ret -ne 0 ]]; then
-               return $ret
-       fi
-       echo $output | \
-               jq -e ".[] \
-               | select(.options.handle == $handle) \
-               | select(.options.actions[0].stats.packets == $count)" \
-               &> /dev/null
-       return $?
+       cmd_jq "tc -j -s filter show $id" \
+              ".[] | select(.options.handle == $handle) | \
+                     select(.options.actions[0].stats.packets == $count)" \
+              &> /dev/null
 }
-- 
2.21.0

Reply via email to