mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
selftests/net: synchronize udpgro tests' tx and rx connection
The sockets used by udpgso_bench_tx aren't always ready when udpgso_bench_tx transmits packets. This issue is more prevalent in -rt kernels, but can occur in both. Replace the hacky sleep calls with a function that checks whether the ports in the namespace are ready for use. Suggested-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Lucas Karpinski <lkarpins@redhat.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e47ef9eb5b
commit
3bdd9fd29c
22
tools/testing/selftests/net/net_helper.sh
Executable file
22
tools/testing/selftests/net/net_helper.sh
Executable file
@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
#
|
||||
# Helper functions
|
||||
|
||||
wait_local_port_listen()
|
||||
{
|
||||
local listener_ns="${1}"
|
||||
local port="${2}"
|
||||
local protocol="${3}"
|
||||
local port_hex
|
||||
local i
|
||||
|
||||
port_hex="$(printf "%04X" "${port}")"
|
||||
for i in $(seq 10); do
|
||||
if ip netns exec "${listener_ns}" cat /proc/net/"${protocol}"* | \
|
||||
grep -q "${port_hex}"; then
|
||||
break
|
||||
fi
|
||||
sleep 0.1
|
||||
done
|
||||
}
|
@ -3,6 +3,8 @@
|
||||
#
|
||||
# Run a series of udpgro functional tests.
|
||||
|
||||
source net_helper.sh
|
||||
|
||||
readonly PEER_NS="ns-peer-$(mktemp -u XXXXXX)"
|
||||
|
||||
BPF_FILE="../bpf/xdp_dummy.bpf.o"
|
||||
@ -51,8 +53,7 @@ run_one() {
|
||||
echo "ok" || \
|
||||
echo "failed" &
|
||||
|
||||
# Hack: let bg programs complete the startup
|
||||
sleep 0.2
|
||||
wait_local_port_listen ${PEER_NS} 8000 udp
|
||||
./udpgso_bench_tx ${tx_args}
|
||||
ret=$?
|
||||
wait $(jobs -p)
|
||||
@ -97,7 +98,7 @@ run_one_nat() {
|
||||
echo "ok" || \
|
||||
echo "failed"&
|
||||
|
||||
sleep 0.1
|
||||
wait_local_port_listen "${PEER_NS}" 8000 udp
|
||||
./udpgso_bench_tx ${tx_args}
|
||||
ret=$?
|
||||
kill -INT $pid
|
||||
@ -118,11 +119,9 @@ run_one_2sock() {
|
||||
echo "ok" || \
|
||||
echo "failed" &
|
||||
|
||||
# Hack: let bg programs complete the startup
|
||||
sleep 0.2
|
||||
wait_local_port_listen "${PEER_NS}" 12345 udp
|
||||
./udpgso_bench_tx ${tx_args} -p 12345
|
||||
sleep 0.1
|
||||
# first UDP GSO socket should be closed at this point
|
||||
wait_local_port_listen "${PEER_NS}" 8000 udp
|
||||
./udpgso_bench_tx ${tx_args}
|
||||
ret=$?
|
||||
wait $(jobs -p)
|
||||
|
@ -3,6 +3,8 @@
|
||||
#
|
||||
# Run a series of udpgro benchmarks
|
||||
|
||||
source net_helper.sh
|
||||
|
||||
readonly PEER_NS="ns-peer-$(mktemp -u XXXXXX)"
|
||||
|
||||
BPF_FILE="../bpf/xdp_dummy.bpf.o"
|
||||
@ -40,8 +42,7 @@ run_one() {
|
||||
ip netns exec "${PEER_NS}" ./udpgso_bench_rx ${rx_args} -r &
|
||||
ip netns exec "${PEER_NS}" ./udpgso_bench_rx -t ${rx_args} -r &
|
||||
|
||||
# Hack: let bg programs complete the startup
|
||||
sleep 0.2
|
||||
wait_local_port_listen "${PEER_NS}" 8000 udp
|
||||
./udpgso_bench_tx ${tx_args}
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,8 @@
|
||||
#
|
||||
# Run a series of udpgro benchmarks
|
||||
|
||||
source net_helper.sh
|
||||
|
||||
readonly PEER_NS="ns-peer-$(mktemp -u XXXXXX)"
|
||||
|
||||
BPF_FILE="../bpf/xdp_dummy.bpf.o"
|
||||
@ -45,8 +47,7 @@ run_one() {
|
||||
echo ${rx_args}
|
||||
ip netns exec "${PEER_NS}" ./udpgso_bench_rx ${rx_args} -r &
|
||||
|
||||
# Hack: let bg programs complete the startup
|
||||
sleep 0.2
|
||||
wait_local_port_listen "${PEER_NS}" 8000 udp
|
||||
./udpgso_bench_tx ${tx_args}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user