mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-20 09:34:44 +08:00
selftest: mptcp: add test for mptcp socket in use
Add the function chk_msk_inuse() to diag.sh, which is used to check the statistics of mptcp socket in use. As mptcp socket in listen state will be closed randomly after 'accept', we need to get the count of listening mptcp socket through 'ss' command. All tests pass. Acked-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Menglong Dong <imagedong@tencent.com> Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4a753ca501
commit
e04a30f788
@ -17,6 +17,11 @@ flush_pids()
|
||||
sleep 1.1
|
||||
|
||||
ip netns pids "${ns}" | xargs --no-run-if-empty kill -SIGUSR1 &>/dev/null
|
||||
|
||||
for _ in $(seq 10); do
|
||||
[ -z "$(ip netns pids "${ns}")" ] && break
|
||||
sleep 0.1
|
||||
done
|
||||
}
|
||||
|
||||
cleanup()
|
||||
@ -37,15 +42,20 @@ if [ $? -ne 0 ];then
|
||||
exit $ksft_skip
|
||||
fi
|
||||
|
||||
get_msk_inuse()
|
||||
{
|
||||
ip netns exec $ns cat /proc/net/protocols | awk '$1~/^MPTCP$/{print $3}'
|
||||
}
|
||||
|
||||
__chk_nr()
|
||||
{
|
||||
local condition="$1"
|
||||
local command="$1"
|
||||
local expected=$2
|
||||
local msg nr
|
||||
|
||||
shift 2
|
||||
msg=$*
|
||||
nr=$(ss -inmHMN $ns | $condition)
|
||||
nr=$(eval $command)
|
||||
|
||||
printf "%-50s" "$msg"
|
||||
if [ $nr != $expected ]; then
|
||||
@ -57,9 +67,17 @@ __chk_nr()
|
||||
test_cnt=$((test_cnt+1))
|
||||
}
|
||||
|
||||
__chk_msk_nr()
|
||||
{
|
||||
local condition=$1
|
||||
shift 1
|
||||
|
||||
__chk_nr "ss -inmHMN $ns | $condition" $*
|
||||
}
|
||||
|
||||
chk_msk_nr()
|
||||
{
|
||||
__chk_nr "grep -c token:" $*
|
||||
__chk_msk_nr "grep -c token:" $*
|
||||
}
|
||||
|
||||
wait_msk_nr()
|
||||
@ -97,12 +115,12 @@ wait_msk_nr()
|
||||
|
||||
chk_msk_fallback_nr()
|
||||
{
|
||||
__chk_nr "grep -c fallback" $*
|
||||
__chk_msk_nr "grep -c fallback" $*
|
||||
}
|
||||
|
||||
chk_msk_remote_key_nr()
|
||||
{
|
||||
__chk_nr "grep -c remote_key" $*
|
||||
__chk_msk_nr "grep -c remote_key" $*
|
||||
}
|
||||
|
||||
__chk_listen()
|
||||
@ -142,6 +160,26 @@ chk_msk_listen()
|
||||
nr=$(ss -Ml $filter | wc -l)
|
||||
}
|
||||
|
||||
chk_msk_inuse()
|
||||
{
|
||||
local expected=$1
|
||||
local listen_nr
|
||||
|
||||
shift 1
|
||||
|
||||
listen_nr=$(ss -N "${ns}" -Ml | grep -c LISTEN)
|
||||
expected=$((expected + listen_nr))
|
||||
|
||||
for _ in $(seq 10); do
|
||||
if [ $(get_msk_inuse) -eq $expected ];then
|
||||
break
|
||||
fi
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
__chk_nr get_msk_inuse $expected $*
|
||||
}
|
||||
|
||||
# $1: ns, $2: port
|
||||
wait_local_port_listen()
|
||||
{
|
||||
@ -195,8 +233,10 @@ wait_connected $ns 10000
|
||||
chk_msk_nr 2 "after MPC handshake "
|
||||
chk_msk_remote_key_nr 2 "....chk remote_key"
|
||||
chk_msk_fallback_nr 0 "....chk no fallback"
|
||||
chk_msk_inuse 2 "....chk 2 msk in use"
|
||||
flush_pids
|
||||
|
||||
chk_msk_inuse 0 "....chk 0 msk in use after flush"
|
||||
|
||||
echo "a" | \
|
||||
timeout ${timeout_test} \
|
||||
@ -211,8 +251,11 @@ echo "b" | \
|
||||
127.0.0.1 >/dev/null &
|
||||
wait_connected $ns 10001
|
||||
chk_msk_fallback_nr 1 "check fallback"
|
||||
chk_msk_inuse 1 "....chk 1 msk in use"
|
||||
flush_pids
|
||||
|
||||
chk_msk_inuse 0 "....chk 0 msk in use after flush"
|
||||
|
||||
NR_CLIENTS=100
|
||||
for I in `seq 1 $NR_CLIENTS`; do
|
||||
echo "a" | \
|
||||
@ -232,6 +275,9 @@ for I in `seq 1 $NR_CLIENTS`; do
|
||||
done
|
||||
|
||||
wait_msk_nr $((NR_CLIENTS*2)) "many msk socket present"
|
||||
chk_msk_inuse $((NR_CLIENTS*2)) "....chk many msk in use"
|
||||
flush_pids
|
||||
|
||||
chk_msk_inuse 0 "....chk 0 msk in use after flush"
|
||||
|
||||
exit $ret
|
||||
|
Loading…
Reference in New Issue
Block a user