Commit e16a8d20 authored by Petr Machata's avatar Petr Machata Committed by Jakub Kicinski

selftests: forwarding: Support for performance sensitive tests

Several tests in the suite use large amounts of traffic to e.g. cause
congestion and evaluate RED or shaper performance. These tests will not run
well on a slow machine, be it one with heavy debug kernel, or a VM, or e.g.
a single-board computer. Allow users to specify an environment variable,
KSFT_MACHINE_SLOW=yes, to indicate that the tests are being run on one such
machine.

Performance sensitive tests can then use a new helper, xfail_on_slow(), to
mark parts of the test that are sensitive to low-performance machines.
The helper can be used to just mark the whole suite, like so:

	xfail_on_slow tests_run

... or, on the other side of the granularity spectrum, to override
individual checks:

	xfail_on_slow check_err $? "Expected much, got little."
Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
Link: https://lore.kernel.org/r/99a376a2d2ffdaeee7752b1910cb0c3ea5d80fbe.1711464583.git.petrm@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent a923af1c
...@@ -79,6 +79,11 @@ declare -A NETIFS=( ...@@ -79,6 +79,11 @@ declare -A NETIFS=(
# Flags for TC filters. # Flags for TC filters.
: "${TC_FLAG:=skip_hw}" : "${TC_FLAG:=skip_hw}"
# Whether the machine is "slow" -- i.e. might be incapable of running tests
# involving heavy traffic. This might be the case on a debug kernel, a VM, or
# e.g. a low-power board.
: "${KSFT_MACHINE_SLOW:=no}"
net_forwarding_dir=$(dirname "$(readlink -e "${BASH_SOURCE[0]}")") net_forwarding_dir=$(dirname "$(readlink -e "${BASH_SOURCE[0]}")")
if [[ -f $net_forwarding_dir/forwarding.config ]]; then if [[ -f $net_forwarding_dir/forwarding.config ]]; then
...@@ -407,13 +412,20 @@ ret_set_ksft_status() ...@@ -407,13 +412,20 @@ ret_set_ksft_status()
fi fi
} }
# Whether FAILs should be interpreted as XFAILs. Internal.
FAIL_TO_XFAIL=
check_err() check_err()
{ {
local err=$1 local err=$1
local msg=$2 local msg=$2
if ((err)); then if ((err)); then
ret_set_ksft_status $ksft_fail "$msg" if [[ $FAIL_TO_XFAIL = yes ]]; then
ret_set_ksft_status $ksft_xfail "$msg"
else
ret_set_ksft_status $ksft_fail "$msg"
fi
fi fi
} }
...@@ -438,6 +450,15 @@ check_err_fail() ...@@ -438,6 +450,15 @@ check_err_fail()
fi fi
} }
xfail_on_slow()
{
if [[ $KSFT_MACHINE_SLOW = yes ]]; then
FAIL_TO_XFAIL=yes "$@"
else
"$@"
fi
}
log_test_result() log_test_result()
{ {
local test_name=$1; shift local test_name=$1; shift
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment