mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 18:13:04 +00:00
selftests: mptcp: explicitly trigger the listener diag code-path
The mptcp diag interface already experienced a few locking bugs that lockdep and appropriate coverage have detected in advance. Let's add a test-case triggering the relevant code path, to prevent similar issues in the future. Be careful to cope with very slow environments. Note that we don't need an explicit timeout on the mptcp_connect subprocess to cope with eventual bug/hang-up as the final cleanup terminating the child processes will take care of that. Signed-off-by: Paolo Abeni <pabeni@redhat.com> Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://lore.kernel.org/r/20240223-upstream-net-20240223-misc-fixes-v1-10-162e87e48497@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
d6a9608af9
commit
b4b51d36bb
@ -20,7 +20,7 @@ flush_pids()
|
||||
|
||||
ip netns pids "${ns}" | xargs --no-run-if-empty kill -SIGUSR1 &>/dev/null
|
||||
|
||||
for _ in $(seq 10); do
|
||||
for _ in $(seq $((timeout_poll * 10))); do
|
||||
[ -z "$(ip netns pids "${ns}")" ] && break
|
||||
sleep 0.1
|
||||
done
|
||||
@ -91,6 +91,15 @@ chk_msk_nr()
|
||||
__chk_msk_nr "grep -c token:" "$@"
|
||||
}
|
||||
|
||||
chk_listener_nr()
|
||||
{
|
||||
local expected=$1
|
||||
local msg="$2"
|
||||
|
||||
__chk_nr "ss -inmlHMON $ns | wc -l" "$expected" "$msg - mptcp" 0
|
||||
__chk_nr "ss -inmlHtON $ns | wc -l" "$expected" "$msg - subflows"
|
||||
}
|
||||
|
||||
wait_msk_nr()
|
||||
{
|
||||
local condition="grep -c token:"
|
||||
@ -289,5 +298,24 @@ flush_pids
|
||||
chk_msk_inuse 0 "many->0"
|
||||
chk_msk_cestab 0 "many->0"
|
||||
|
||||
chk_listener_nr 0 "no listener sockets"
|
||||
NR_SERVERS=100
|
||||
for I in $(seq 1 $NR_SERVERS); do
|
||||
ip netns exec $ns ./mptcp_connect -p $((I + 20001)) \
|
||||
-t ${timeout_poll} -l 0.0.0.0 >/dev/null 2>&1 &
|
||||
done
|
||||
|
||||
for I in $(seq 1 $NR_SERVERS); do
|
||||
mptcp_lib_wait_local_port_listen $ns $((I + 20001))
|
||||
done
|
||||
|
||||
chk_listener_nr $NR_SERVERS "many listener sockets"
|
||||
|
||||
# graceful termination
|
||||
for I in $(seq 1 $NR_SERVERS); do
|
||||
echo a | ip netns exec $ns ./mptcp_connect -p $((I + 20001)) 127.0.0.1 >/dev/null 2>&1 &
|
||||
done
|
||||
flush_pids
|
||||
|
||||
mptcp_lib_result_print_all_tap
|
||||
exit $ret
|
||||
|
Loading…
Reference in New Issue
Block a user