mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 01:51:34 +00:00
selftests: netfilter: nft_concat_range.sh: move to lib.sh infra
Use busywait helper instead of unconditional sleep, reduces run time from 6m to 2:30 on my system. The busywait helper calls the function passed to it as argument; disable the shellcheck test for unreachable code, it generates many (false) warnings here. Signed-off-by: Florian Westphal <fw@strlen.de> Link: https://lore.kernel.org/r/20240423130604.7013-2-fw@strlen.de Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
66270920f9
commit
546fb63fe8
@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
#
|
||||
# nft_concat_range.sh - Tests for sets with concatenation of ranged fields
|
||||
@ -7,10 +7,10 @@
|
||||
#
|
||||
# Author: Stefano Brivio <sbrivio@redhat.com>
|
||||
#
|
||||
# shellcheck disable=SC2154,SC2034,SC2016,SC2030,SC2031
|
||||
# shellcheck disable=SC2154,SC2034,SC2016,SC2030,SC2031,SC2317
|
||||
# ^ Configuration and templates sourced with eval, counters reused in subshells
|
||||
|
||||
KSELFTEST_SKIP=4
|
||||
source lib.sh
|
||||
|
||||
# Available test groups:
|
||||
# - reported_issues: check for issues that were reported in the past
|
||||
@ -473,8 +473,6 @@ setup_veth() {
|
||||
B() {
|
||||
ip netns exec B "$@" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
sleep 2
|
||||
}
|
||||
|
||||
# Fill in set template and initialise set
|
||||
@ -679,10 +677,17 @@ setup_send_udp6() {
|
||||
fi
|
||||
}
|
||||
|
||||
listener_ready()
|
||||
{
|
||||
port="$1"
|
||||
ss -lnt -o "sport = :$port" | grep -q "$port"
|
||||
}
|
||||
|
||||
# Set up function to send TCP traffic on IPv4
|
||||
setup_flood_tcp() {
|
||||
if command -v iperf3 >/dev/null; then
|
||||
flood_tcp() {
|
||||
local n_port="${dst_port}"
|
||||
[ -n "${dst_port}" ] && dst_port="-p ${dst_port}"
|
||||
if [ -n "${src_addr4}" ]; then
|
||||
B ip addr add "${src_addr4}/16" dev veth_b
|
||||
@ -699,7 +704,7 @@ setup_flood_tcp() {
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
iperf3 -s -DB "${dst_addr4}" ${dst_port} >/dev/null 2>&1
|
||||
sleep 2
|
||||
busywait "$BUSYWAIT_TIMEOUT" listener_ready "$n_port"
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
B iperf3 -c "${dst_addr4}" ${dst_port} ${src_port} \
|
||||
@ -711,6 +716,7 @@ setup_flood_tcp() {
|
||||
}
|
||||
elif command -v iperf >/dev/null; then
|
||||
flood_tcp() {
|
||||
local n_port="${dst_port}"
|
||||
[ -n "${dst_port}" ] && dst_port="-p ${dst_port}"
|
||||
if [ -n "${src_addr4}" ]; then
|
||||
B ip addr add "${src_addr4}/16" dev veth_b
|
||||
@ -727,7 +733,7 @@ setup_flood_tcp() {
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
iperf -s -DB "${dst_addr4}" ${dst_port} >/dev/null 2>&1
|
||||
sleep 2
|
||||
busywait "$BUSYWAIT_TIMEOUT" listener_ready "$n_port"
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
B iperf -c "${dst_addr4}" ${dst_port} ${src_addr4} \
|
||||
@ -739,6 +745,7 @@ setup_flood_tcp() {
|
||||
}
|
||||
elif command -v netperf >/dev/null; then
|
||||
flood_tcp() {
|
||||
local n_port="${dst_port}"
|
||||
[ -n "${dst_port}" ] && dst_port="-p ${dst_port}"
|
||||
if [ -n "${src_addr4}" ]; then
|
||||
B ip addr add "${src_addr4}/16" dev veth_b
|
||||
@ -755,7 +762,7 @@ setup_flood_tcp() {
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
netserver -4 ${dst_port} -L "${dst_addr4}" \
|
||||
>/dev/null 2>&1
|
||||
sleep 2
|
||||
busywait "$BUSYWAIT_TIMEOUT" listener_ready "${n_port}"
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
B netperf -4 -H "${dst_addr4}" ${dst_port} \
|
||||
@ -774,6 +781,7 @@ setup_flood_tcp() {
|
||||
setup_flood_tcp6() {
|
||||
if command -v iperf3 >/dev/null; then
|
||||
flood_tcp6() {
|
||||
local n_port="${dst_port}"
|
||||
[ -n "${dst_port}" ] && dst_port="-p ${dst_port}"
|
||||
if [ -n "${src_addr6}" ]; then
|
||||
B ip addr add "${src_addr6}" dev veth_b nodad
|
||||
@ -790,7 +798,7 @@ setup_flood_tcp6() {
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
iperf3 -s -DB "${dst_addr6}" ${dst_port} >/dev/null 2>&1
|
||||
sleep 2
|
||||
busywait "$BUSYWAIT_TIMEOUT" listener_ready "${n_port}"
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
B iperf3 -c "${dst_addr6}" ${dst_port} \
|
||||
@ -802,6 +810,7 @@ setup_flood_tcp6() {
|
||||
}
|
||||
elif command -v iperf >/dev/null; then
|
||||
flood_tcp6() {
|
||||
local n_port="${dst_port}"
|
||||
[ -n "${dst_port}" ] && dst_port="-p ${dst_port}"
|
||||
if [ -n "${src_addr6}" ]; then
|
||||
B ip addr add "${src_addr6}" dev veth_b nodad
|
||||
@ -818,7 +827,7 @@ setup_flood_tcp6() {
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
iperf -s -VDB "${dst_addr6}" ${dst_port} >/dev/null 2>&1
|
||||
sleep 2
|
||||
busywait "$BUSYWAIT_TIMEOUT" listener_ready "$n_port"
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
B iperf -c "${dst_addr6}" -V ${dst_port} \
|
||||
@ -830,6 +839,7 @@ setup_flood_tcp6() {
|
||||
}
|
||||
elif command -v netperf >/dev/null; then
|
||||
flood_tcp6() {
|
||||
local n_port="${dst_port}"
|
||||
[ -n "${dst_port}" ] && dst_port="-p ${dst_port}"
|
||||
if [ -n "${src_addr6}" ]; then
|
||||
B ip addr add "${src_addr6}" dev veth_b nodad
|
||||
@ -846,7 +856,7 @@ setup_flood_tcp6() {
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
netserver -6 ${dst_port} -L "${dst_addr6}" \
|
||||
>/dev/null 2>&1
|
||||
sleep 2
|
||||
busywait "$BUSYWAIT_TIMEOUT" listener_ready "$n_port"
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
B netperf -6 -H "${dst_addr6}" ${dst_port} \
|
||||
@ -865,6 +875,7 @@ setup_flood_tcp6() {
|
||||
setup_flood_udp() {
|
||||
if command -v iperf3 >/dev/null; then
|
||||
flood_udp() {
|
||||
local n_port="${dst_port}"
|
||||
[ -n "${dst_port}" ] && dst_port="-p ${dst_port}"
|
||||
if [ -n "${src_addr4}" ]; then
|
||||
B ip addr add "${src_addr4}/16" dev veth_b
|
||||
@ -881,7 +892,7 @@ setup_flood_udp() {
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
iperf3 -s -DB "${dst_addr4}" ${dst_port}
|
||||
sleep 2
|
||||
busywait "$BUSYWAIT_TIMEOUT" listener_ready "$n_port"
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
B iperf3 -u -c "${dst_addr4}" -Z -b 100M -l16 -t1000 \
|
||||
@ -893,6 +904,7 @@ setup_flood_udp() {
|
||||
}
|
||||
elif command -v iperf >/dev/null; then
|
||||
flood_udp() {
|
||||
local n_port="${dst_port}"
|
||||
[ -n "${dst_port}" ] && dst_port="-p ${dst_port}"
|
||||
if [ -n "${src_addr4}" ]; then
|
||||
B ip addr add "${src_addr4}/16" dev veth_b
|
||||
@ -909,7 +921,7 @@ setup_flood_udp() {
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
iperf -u -sDB "${dst_addr4}" ${dst_port} >/dev/null 2>&1
|
||||
sleep 2
|
||||
busywait "$BUSYWAIT_TIMEOUT" listener_ready "$n_port"
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
B iperf -u -c "${dst_addr4}" -b 100M -l1 -t1000 \
|
||||
@ -921,6 +933,7 @@ setup_flood_udp() {
|
||||
}
|
||||
elif command -v netperf >/dev/null; then
|
||||
flood_udp() {
|
||||
local n_port="${dst_port}"
|
||||
[ -n "${dst_port}" ] && dst_port="-p ${dst_port}"
|
||||
if [ -n "${src_addr4}" ]; then
|
||||
B ip addr add "${src_addr4}/16" dev veth_b
|
||||
@ -937,7 +950,7 @@ setup_flood_udp() {
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
netserver -4 ${dst_port} -L "${dst_addr4}" \
|
||||
>/dev/null 2>&1
|
||||
sleep 2
|
||||
busywait "$BUSYWAIT_TIMEOUT" listener_ready "$n_port"
|
||||
|
||||
# shellcheck disable=SC2086 # this needs split options
|
||||
B netperf -4 -H "${dst_addr4}" ${dst_port} \
|
||||
@ -990,14 +1003,13 @@ cleanup() {
|
||||
killall netperf 2>/dev/null
|
||||
killall netserver 2>/dev/null
|
||||
rm -f ${tmp}
|
||||
sleep 2
|
||||
}
|
||||
|
||||
# Entry point for setup functions
|
||||
setup() {
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo " need to run as root"
|
||||
exit ${KSELFTEST_SKIP}
|
||||
exit ${ksft_skip}
|
||||
fi
|
||||
|
||||
cleanup
|
||||
@ -1258,7 +1270,7 @@ send_nomatch() {
|
||||
# - check that packets outside range don't match it
|
||||
# - remove some elements, check that packets don't match anymore
|
||||
test_correctness() {
|
||||
setup veth send_"${proto}" set || return ${KSELFTEST_SKIP}
|
||||
setup veth send_"${proto}" set || return ${ksft_skip}
|
||||
|
||||
range_size=1
|
||||
for i in $(seq "${start}" $((start + count))); do
|
||||
@ -1307,7 +1319,7 @@ test_concurrency() {
|
||||
proto=${flood_proto}
|
||||
tools=${flood_tools}
|
||||
chain_spec=${flood_spec}
|
||||
setup veth flood_"${proto}" set || return ${KSELFTEST_SKIP}
|
||||
setup veth flood_"${proto}" set || return ${ksft_skip}
|
||||
|
||||
range_size=1
|
||||
cstart=${start}
|
||||
@ -1325,7 +1337,7 @@ test_concurrency() {
|
||||
start=$((end + range_size))
|
||||
done
|
||||
|
||||
sleep 10
|
||||
sleep $((RANDOM%10))
|
||||
|
||||
pids=
|
||||
for c in $(seq 1 "$(nproc)"); do (
|
||||
@ -1407,7 +1419,7 @@ test_concurrency() {
|
||||
# - add all the elements with 3s timeout while checking that packets match
|
||||
# - wait 3s after the last insertion, check that packets don't match any entry
|
||||
test_timeout() {
|
||||
setup veth send_"${proto}" set || return ${KSELFTEST_SKIP}
|
||||
setup veth send_"${proto}" set || return ${ksft_skip}
|
||||
|
||||
timeout=3
|
||||
range_size=1
|
||||
@ -1450,7 +1462,7 @@ test_performance() {
|
||||
chain_spec=${perf_spec}
|
||||
dst="${perf_dst}"
|
||||
src="${perf_src}"
|
||||
setup veth perf set || return ${KSELFTEST_SKIP}
|
||||
setup veth perf set || return ${ksft_skip}
|
||||
|
||||
first=${start}
|
||||
range_size=1
|
||||
@ -1523,7 +1535,7 @@ test_bug_flush_remove_add() {
|
||||
elem1='{ 10.0.0.1 . 22-25, 10.0.0.1 . 10-20 }'
|
||||
elem2='{ 10.0.0.1 . 10-20, 10.0.0.1 . 22-25 }'
|
||||
for i in `seq 1 100`; do
|
||||
nft add table t ${set_cmd} || return ${KSELFTEST_SKIP}
|
||||
nft add table t ${set_cmd} || return ${ksft_skip}
|
||||
nft add element t s ${elem1} 2>/dev/null || return 1
|
||||
nft flush set t s 2>/dev/null || return 1
|
||||
nft add element t s ${elem2} 2>/dev/null || return 1
|
||||
@ -1534,7 +1546,7 @@ test_bug_flush_remove_add() {
|
||||
# - add ranged element, check that packets match it
|
||||
# - reload the set, check packets still match
|
||||
test_bug_reload() {
|
||||
setup veth send_"${proto}" set || return ${KSELFTEST_SKIP}
|
||||
setup veth send_"${proto}" set || return ${ksft_skip}
|
||||
rstart=${start}
|
||||
|
||||
range_size=1
|
||||
@ -1635,11 +1647,11 @@ for name in ${TESTS}; do
|
||||
printf "[FAIL]\n"
|
||||
err_flush
|
||||
exit 1
|
||||
elif [ $ret -eq ${KSELFTEST_SKIP} ]; then
|
||||
elif [ $ret -eq ${ksft_skip} ]; then
|
||||
printf "[SKIP]\n"
|
||||
err_flush
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
[ ${passed} -eq 0 ] && exit ${KSELFTEST_SKIP} || exit 0
|
||||
[ ${passed} -eq 0 ] && exit ${ksft_skip} || exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user