Skip to content

Commit 4369c19

Browse files
geliangtangkuba-moo
authored andcommitted
selftests: mptcp: test userspace pm out of transfer
This patch moves userspace pm tests out of do_transfer(). Move add address test into a new function userspace_pm_add_addr(), and remove address test into userspace_pm_rm_sf_addr_ns1(). Move add subflow test into userspace_pm_add_sf() and remove subflow into userspace_pm_rm_sf_addr_ns2(). Reviewed-by: Matthieu Baerts <[email protected]> Signed-off-by: Geliang Tang <[email protected]> Signed-off-by: Mat Martineau <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent c4015bb commit 4369c19

File tree

1 file changed

+99
-46
lines changed

1 file changed

+99
-46
lines changed

tools/testing/selftests/net/mptcp/mptcp_join.sh

Lines changed: 99 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,26 @@ wait_rm_addr()
589589
done
590590
}
591591

592+
rm_sf_count()
593+
{
594+
get_counter "${1}" "MPTcpExtRmSubflow"
595+
}
596+
597+
# $1: ns, $2: old rm_sf counter in $ns
598+
wait_rm_sf()
599+
{
600+
local ns="${1}"
601+
local old_cnt="${2}"
602+
local cnt
603+
604+
local i
605+
for i in $(seq 10); do
606+
cnt=$(rm_sf_count ${ns})
607+
[ "$cnt" = "${old_cnt}" ] || break
608+
sleep 0.1
609+
done
610+
}
611+
592612
wait_mpj()
593613
{
594614
local ns="${1}"
@@ -813,7 +833,6 @@ do_transfer()
813833

814834
local port=$((10000 + TEST_COUNT - 1))
815835
local cappid
816-
local userspace_pm=0
817836

818837
:> "$cout"
819838
:> "$sout"
@@ -850,11 +869,6 @@ do_transfer()
850869
extra_args="-r ${speed:6}"
851870
fi
852871

853-
if [[ "${addr_nr_ns1}" = "userspace_"* ]]; then
854-
userspace_pm=1
855-
addr_nr_ns1=${addr_nr_ns1:10}
856-
fi
857-
858872
local flags="subflow"
859873
local extra_cl_args=""
860874
local extra_srv_args=""
@@ -882,9 +896,6 @@ do_transfer()
882896
return 1
883897
fi
884898
addr_nr_ns2=0
885-
elif [[ "${addr_nr_ns2}" = "userspace_"* ]]; then
886-
userspace_pm=1
887-
addr_nr_ns2=${addr_nr_ns2:10}
888899
elif [[ "${addr_nr_ns2}" = "fullmesh_"* ]]; then
889900
flags="${flags},fullmesh"
890901
addr_nr_ns2=${addr_nr_ns2:9}
@@ -938,32 +949,14 @@ do_transfer()
938949
local counter=2
939950
local add_nr_ns1=${addr_nr_ns1}
940951
local id=10
941-
local tk
942952
while [ $add_nr_ns1 -gt 0 ]; do
943953
local addr
944954
if is_v6 "${connect_addr}"; then
945955
addr="dead:beef:$counter::1"
946956
else
947957
addr="10.0.$counter.1"
948958
fi
949-
if [ $userspace_pm -eq 0 ]; then
950-
pm_nl_add_endpoint $ns1 $addr flags signal
951-
else
952-
tk=$(grep "type:1," "$evts_ns1" |
953-
sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q')
954-
ip netns exec ${listener_ns} ./pm_nl_ctl ann $addr token $tk id $id
955-
sleep 1
956-
sp=$(grep "type:10" "$evts_ns1" |
957-
sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
958-
da=$(grep "type:10" "$evts_ns1" |
959-
sed -n 's/.*\(daddr6:\)\([0-9a-f:.]*\).*$/\2/p;q')
960-
dp=$(grep "type:10" "$evts_ns1" |
961-
sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q')
962-
ip netns exec ${listener_ns} ./pm_nl_ctl rem token $tk id $id
963-
ip netns exec ${listener_ns} ./pm_nl_ctl dsf lip "::ffff:$addr" \
964-
lport $sp rip $da rport $dp token $tk
965-
fi
966-
959+
pm_nl_add_endpoint $ns1 $addr flags signal
967960
counter=$((counter + 1))
968961
add_nr_ns1=$((add_nr_ns1 - 1))
969962
id=$((id + 1))
@@ -1008,29 +1001,14 @@ do_transfer()
10081001
local add_nr_ns2=${addr_nr_ns2}
10091002
local counter=3
10101003
local id=20
1011-
local tk da dp sp
10121004
while [ $add_nr_ns2 -gt 0 ]; do
10131005
local addr
10141006
if is_v6 "${connect_addr}"; then
10151007
addr="dead:beef:$counter::2"
10161008
else
10171009
addr="10.0.$counter.2"
10181010
fi
1019-
if [ $userspace_pm -eq 0 ]; then
1020-
pm_nl_add_endpoint $ns2 $addr flags $flags
1021-
else
1022-
tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
1023-
da=$(sed -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evts_ns2")
1024-
dp=$(sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
1025-
ip netns exec ${connector_ns} ./pm_nl_ctl csf lip $addr lid $id \
1026-
rip $da rport $dp token $tk
1027-
sleep 1
1028-
sp=$(grep "type:10" "$evts_ns2" |
1029-
sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
1030-
ip netns exec ${connector_ns} ./pm_nl_ctl rem token $tk id $id
1031-
ip netns exec ${connector_ns} ./pm_nl_ctl dsf lip $addr lport $sp \
1032-
rip $da rport $dp token $tk
1033-
fi
1011+
pm_nl_add_endpoint $ns2 $addr flags $flags
10341012
counter=$((counter + 1))
10351013
add_nr_ns2=$((add_nr_ns2 - 1))
10361014
id=$((id + 1))
@@ -3205,6 +3183,71 @@ fail_tests()
32053183
fi
32063184
}
32073185

3186+
userspace_pm_add_addr()
3187+
{
3188+
local addr=$1
3189+
local id=$2
3190+
local tk
3191+
3192+
tk=$(grep "type:1," "$evts_ns1" |
3193+
sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q')
3194+
ip netns exec $ns1 ./pm_nl_ctl ann $addr token $tk id $id
3195+
sleep 1
3196+
}
3197+
3198+
userspace_pm_rm_sf_addr_ns1()
3199+
{
3200+
local addr=$1
3201+
local id=$2
3202+
local tk sp da dp
3203+
3204+
tk=$(grep "type:1," "$evts_ns1" |
3205+
sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q')
3206+
sp=$(grep "type:10" "$evts_ns1" |
3207+
sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
3208+
da=$(grep "type:10" "$evts_ns1" |
3209+
sed -n 's/.*\(daddr6:\)\([0-9a-f:.]*\).*$/\2/p;q')
3210+
dp=$(grep "type:10" "$evts_ns1" |
3211+
sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q')
3212+
ip netns exec $ns1 ./pm_nl_ctl rem token $tk id $id
3213+
ip netns exec $ns1 ./pm_nl_ctl dsf lip "::ffff:$addr" \
3214+
lport $sp rip $da rport $dp token $tk
3215+
wait_rm_addr $ns1 1
3216+
wait_rm_sf $ns1 1
3217+
}
3218+
3219+
userspace_pm_add_sf()
3220+
{
3221+
local addr=$1
3222+
local id=$2
3223+
local tk da dp
3224+
3225+
tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
3226+
da=$(sed -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evts_ns2")
3227+
dp=$(sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
3228+
ip netns exec $ns2 ./pm_nl_ctl csf lip $addr lid $id \
3229+
rip $da rport $dp token $tk
3230+
sleep 1
3231+
}
3232+
3233+
userspace_pm_rm_sf_addr_ns2()
3234+
{
3235+
local addr=$1
3236+
local id=$2
3237+
local tk da dp sp
3238+
3239+
tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
3240+
da=$(sed -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evts_ns2")
3241+
dp=$(sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
3242+
sp=$(grep "type:10" "$evts_ns2" |
3243+
sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
3244+
ip netns exec $ns2 ./pm_nl_ctl rem token $tk id $id
3245+
ip netns exec $ns2 ./pm_nl_ctl dsf lip $addr lport $sp \
3246+
rip $da rport $dp token $tk
3247+
wait_rm_addr $ns2 1
3248+
wait_rm_sf $ns2 1
3249+
}
3250+
32083251
userspace_tests()
32093252
{
32103253
# userspace pm type prevents add_addr
@@ -3283,22 +3326,32 @@ userspace_tests()
32833326
continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then
32843327
set_userspace_pm $ns1
32853328
pm_nl_set_limits $ns2 1 1
3286-
run_tests $ns1 $ns2 10.0.1.1 0 userspace_1 0 slow
3329+
run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10 &
3330+
local tests_pid=$!
3331+
wait_mpj $ns1
3332+
userspace_pm_add_addr 10.0.2.1 10
32873333
chk_join_nr 1 1 1
32883334
chk_add_nr 1 1
3335+
userspace_pm_rm_sf_addr_ns1 10.0.2.1 10
32893336
chk_rm_nr 1 1 invert
32903337
kill_events_pids
3338+
wait $tests_pid
32913339
fi
32923340

32933341
# userspace pm create destroy subflow
32943342
if reset_with_events "userspace pm create destroy subflow" &&
32953343
continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then
32963344
set_userspace_pm $ns2
32973345
pm_nl_set_limits $ns1 0 1
3298-
run_tests $ns1 $ns2 10.0.1.1 0 0 userspace_1 slow
3346+
run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10 &
3347+
local tests_pid=$!
3348+
wait_mpj $ns2
3349+
userspace_pm_add_sf 10.0.3.2 20
32993350
chk_join_nr 1 1 1
3351+
userspace_pm_rm_sf_addr_ns2 10.0.3.2 20
33003352
chk_rm_nr 1 1
33013353
kill_events_pids
3354+
wait $tests_pid
33023355
fi
33033356
}
33043357

0 commit comments

Comments
 (0)