Skip to content

Commit

Permalink
selftests: forwarding: router_mpath_nh_lib: Don't skip, xfail on veth
Browse files Browse the repository at this point in the history
When the NH group stats tests are currently run on a veth topology, the
HW-stats leg of each test is SKIP'ped. But kernel networking CI interprets
skips as a sign that tooling is missing, and prompts maintainer
investigation. Lack of capability to pass a test should be expressed as
XFAIL.

Selftests that require HW should normally be put in drivers/net/hw, but
doing so for the NH counter selftests would just lead to a lot of
duplicity.

So instead, introduce a helper, xfail_on_veth(), which can be used to mark
selftests that should XFAIL instead of FAILing when run on a veth topology.
On non-veth topology, they don't do anything.

Use the helper in the HW-stats part of router_mpath_nh_lib selftest.

Signed-off-by: Petr Machata <[email protected]>
Link: https://lore.kernel.org/r/15f0ab9637aa0497f164ec30e83c1c8f53d53719.1711464583.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <[email protected]>
  • Loading branch information
pmachata authored and kuba-moo committed Mar 29, 2024
1 parent e103910 commit 6db870b
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 11 deletions.
14 changes: 14 additions & 0 deletions tools/testing/selftests/net/forwarding/lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,20 @@ xfail_on_slow()
fi
}

xfail_on_veth()
{
local dev=$1; shift
local kind

kind=$(ip -j -d link show dev $dev |
jq -r '.[].linkinfo.info_kind')
if [[ $kind = veth ]]; then
FAIL_TO_XFAIL=yes "$@"
else
"$@"
fi
}

log_test_result()
{
local test_name=$1; shift
Expand Down
12 changes: 1 addition & 11 deletions tools/testing/selftests/net/forwarding/router_mpath_nh_lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -56,21 +56,12 @@ nh_stats_test_dispatch_swhw()
local group_id=$1; shift
local mz="$@"

local used

nh_stats_do_test "$what" "$nh1_id" "$nh2_id" "$group_id" \
nh_stats_get "${mz[@]}"

used=$(ip -s -j -d nexthop show id $group_id |
jq '.[].hw_stats.used')
kind=$(ip -j -d link show dev $rp11 |
jq -r '.[].linkinfo.info_kind')
if [[ $used == true ]]; then
xfail_on_veth $rp11 \
nh_stats_do_test "HW $what" "$nh1_id" "$nh2_id" "$group_id" \
nh_stats_get_hw "${mz[@]}"
elif [[ $kind == veth ]]; then
log_test_xfail "HW stats not offloaded on veth topology"
fi
}

nh_stats_test_dispatch()
Expand All @@ -83,7 +74,6 @@ nh_stats_test_dispatch()
local mz="$@"

local enabled
local kind

if ! ip nexthop help 2>&1 | grep -q hw_stats; then
log_test_skip "NH stats test: ip doesn't support HW stats"
Expand Down

0 comments on commit 6db870b

Please sign in to comment.