Commit 97040cf9 authored by Geliang Tang's avatar Geliang Tang Committed by David S. Miller

selftests: mptcp: userspace pm address tests

This patch adds userspace pm tests support for mptcp_join.sh script. Add
userspace pm add_addr and rm_addr test cases in userspace_tests().
Reviewed-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: default avatarGeliang Tang <geliang.tang@suse.com>
Signed-off-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d0d9c8f2
...@@ -455,6 +455,12 @@ wait_mpj() ...@@ -455,6 +455,12 @@ wait_mpj()
done done
} }
kill_wait()
{
kill $1 > /dev/null 2>&1
wait $1 2>/dev/null
}
pm_nl_set_limits() pm_nl_set_limits()
{ {
local ns=$1 local ns=$1
...@@ -654,6 +660,9 @@ do_transfer() ...@@ -654,6 +660,9 @@ do_transfer()
local port=$((10000 + TEST_COUNT - 1)) local port=$((10000 + TEST_COUNT - 1))
local cappid local cappid
local userspace_pm=0
local evts_ns1
local evts_ns1_pid
:> "$cout" :> "$cout"
:> "$sout" :> "$sout"
...@@ -690,12 +699,24 @@ do_transfer() ...@@ -690,12 +699,24 @@ do_transfer()
extra_args="-r ${speed:6}" extra_args="-r ${speed:6}"
fi fi
if [[ "${addr_nr_ns1}" = "userspace_"* ]]; then
userspace_pm=1
addr_nr_ns1=${addr_nr_ns1:10}
fi
if [[ "${addr_nr_ns2}" = "fastclose_"* ]]; then if [[ "${addr_nr_ns2}" = "fastclose_"* ]]; then
# disconnect # disconnect
extra_args="$extra_args -I ${addr_nr_ns2:10}" extra_args="$extra_args -I ${addr_nr_ns2:10}"
addr_nr_ns2=0 addr_nr_ns2=0
fi fi
if [ $userspace_pm -eq 1 ]; then
evts_ns1=$(mktemp)
:> "$evts_ns1"
ip netns exec ${listener_ns} ./pm_nl_ctl events >> "$evts_ns1" 2>&1 &
evts_ns1_pid=$!
fi
local local_addr local local_addr
if is_v6 "${connect_addr}"; then if is_v6 "${connect_addr}"; then
local_addr="::" local_addr="::"
...@@ -748,6 +769,8 @@ do_transfer() ...@@ -748,6 +769,8 @@ do_transfer()
if [ $addr_nr_ns1 -gt 0 ]; then if [ $addr_nr_ns1 -gt 0 ]; then
local counter=2 local counter=2
local add_nr_ns1=${addr_nr_ns1} local add_nr_ns1=${addr_nr_ns1}
local id=10
local tk
while [ $add_nr_ns1 -gt 0 ]; do while [ $add_nr_ns1 -gt 0 ]; do
local addr local addr
if is_v6 "${connect_addr}"; then if is_v6 "${connect_addr}"; then
...@@ -755,9 +778,18 @@ do_transfer() ...@@ -755,9 +778,18 @@ do_transfer()
else else
addr="10.0.$counter.1" addr="10.0.$counter.1"
fi fi
if [ $userspace_pm -eq 0 ]; then
pm_nl_add_endpoint $ns1 $addr flags signal pm_nl_add_endpoint $ns1 $addr flags signal
else
tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns1")
ip netns exec ${listener_ns} ./pm_nl_ctl ann $addr token $tk id $id
sleep 1
ip netns exec ${listener_ns} ./pm_nl_ctl rem token $tk id $id
fi
counter=$((counter + 1)) counter=$((counter + 1))
add_nr_ns1=$((add_nr_ns1 - 1)) add_nr_ns1=$((add_nr_ns1 - 1))
id=$((id + 1))
done done
elif [ $addr_nr_ns1 -lt 0 ]; then elif [ $addr_nr_ns1 -lt 0 ]; then
local rm_nr_ns1=$((-addr_nr_ns1)) local rm_nr_ns1=$((-addr_nr_ns1))
...@@ -890,6 +922,11 @@ do_transfer() ...@@ -890,6 +922,11 @@ do_transfer()
kill $cappid kill $cappid
fi fi
if [ $userspace_pm -eq 1 ]; then
kill_wait $evts_ns1_pid
rm -rf $evts_ns1
fi
NSTAT_HISTORY=/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \ NSTAT_HISTORY=/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \
nstat | grep Tcp > /tmp/${listener_ns}.out nstat | grep Tcp > /tmp/${listener_ns}.out
NSTAT_HISTORY=/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \ NSTAT_HISTORY=/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \
...@@ -2810,6 +2847,16 @@ userspace_tests() ...@@ -2810,6 +2847,16 @@ userspace_tests()
chk_join_nr 0 0 0 chk_join_nr 0 0 0
chk_rm_nr 0 0 chk_rm_nr 0 0
fi fi
# userspace pm add & remove address
if reset "userspace pm add & remove address"; then
set_userspace_pm $ns1
pm_nl_set_limits $ns2 1 1
run_tests $ns1 $ns2 10.0.1.1 0 userspace_1 0 slow
chk_join_nr 1 1 1
chk_add_nr 1 1
chk_rm_nr 1 1 invert
fi
} }
endpoint_tests() endpoint_tests()
......
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