Skip to content

Commit 0a82c37

Browse files
committed
Merge branch 'mptcp-selftests'
Mat Martineau says: ==================== mptcp: Selftest enhancement and fixes This is a collection of selftest updates from the MPTCP tree. Patch 1 uses additional 'ss' command line parameters and 'nstat' to improve output when certain MPTCP tests fail. Patches 2 & 3 fix a copy/paste error and some output formatting. Patch 4 makes sure tests still pass if certain connection-related packets are retransmitted. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents c3ff3b0 + 5f88117 commit 0a82c37

File tree

1 file changed

+66
-28
lines changed

1 file changed

+66
-28
lines changed

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

Lines changed: 66 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ cleanup()
128128
local netns
129129
for netns in "$ns1" "$ns2" "$ns3" "$ns4";do
130130
ip netns del $netns
131+
rm -f /tmp/$netns.{nstat,out}
131132
done
132133
}
133134

@@ -333,6 +334,21 @@ do_ping()
333334
return 0
334335
}
335336

337+
# $1: ns, $2: MIB counter
338+
get_mib_counter()
339+
{
340+
local listener_ns="${1}"
341+
local mib="${2}"
342+
343+
# strip the header
344+
ip netns exec "${listener_ns}" \
345+
nstat -z -a "${mib}" | \
346+
tail -n+2 | \
347+
while read a count c rest; do
348+
echo $count
349+
done
350+
}
351+
336352
# $1: ns, $2: port
337353
wait_local_port_listen()
338354
{
@@ -409,10 +425,10 @@ do_transfer()
409425
sleep 1
410426
fi
411427

412-
local stat_synrx_last_l=$(ip netns exec ${listener_ns} nstat -z -a MPTcpExtMPCapableSYNRX | while read a count c rest ;do echo $count;done)
413-
local stat_ackrx_last_l=$(ip netns exec ${listener_ns} nstat -z -a MPTcpExtMPCapableACKRX | while read a count c rest ;do echo $count;done)
414-
local stat_cookietx_last=$(ip netns exec ${listener_ns} nstat -z -a TcpExtSyncookiesSent | while read a count c rest ;do echo $count;done)
415-
local stat_cookierx_last=$(ip netns exec ${listener_ns} nstat -z -a TcpExtSyncookiesRecv | while read a count c rest ;do echo $count;done)
428+
local stat_synrx_last_l=$(get_mib_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX")
429+
local stat_ackrx_last_l=$(get_mib_counter "${listener_ns}" "MPTcpExtMPCapableACKRX")
430+
local stat_cookietx_last=$(get_mib_counter "${listener_ns}" "TcpExtSyncookiesSent")
431+
local stat_cookierx_last=$(get_mib_counter "${listener_ns}" "TcpExtSyncookiesRecv")
416432

417433
ip netns exec ${listener_ns} ./mptcp_connect -t $timeout -l -p $port -s ${srv_proto} $extra_args $local_addr < "$sin" > "$sout" &
418434
local spid=$!
@@ -438,16 +454,26 @@ do_transfer()
438454
kill ${cappid_connector}
439455
fi
440456

457+
NSTAT_HISTORY=/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \
458+
nstat | grep Tcp > /tmp/${listener_ns}.out
459+
if [ ${listener_ns} != ${connector_ns} ]; then
460+
NSTAT_HISTORY=/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \
461+
nstat | grep Tcp > /tmp/${connector_ns}.out
462+
fi
463+
441464
local duration
442465
duration=$((stop-start))
443-
duration=$(printf "(duration %05sms)" $duration)
466+
printf "(duration %05sms) " "${duration}"
444467
if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then
445-
echo "$duration [ FAIL ] client exit code $retc, server $rets" 1>&2
468+
echo "[ FAIL ] client exit code $retc, server $rets" 1>&2
446469
echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2
447-
ip netns exec ${listener_ns} ss -nita 1>&2 -o "sport = :$port"
470+
ip netns exec ${listener_ns} ss -Menita 1>&2 -o "sport = :$port"
471+
cat /tmp/${listener_ns}.out
448472
echo -e "\nnetns ${connector_ns} socket stat for ${port}:" 1>&2
449-
ip netns exec ${connector_ns} ss -nita 1>&2 -o "dport = :$port"
473+
ip netns exec ${connector_ns} ss -Menita 1>&2 -o "dport = :$port"
474+
[ ${listener_ns} != ${connector_ns} ] && cat /tmp/${connector_ns}.out
450475

476+
echo
451477
cat "$capout"
452478
return 1
453479
fi
@@ -457,11 +483,10 @@ do_transfer()
457483
check_transfer $cin $sout "file received by server"
458484
rets=$?
459485

460-
local stat_synrx_now_l=$(ip netns exec ${listener_ns} nstat -z -a MPTcpExtMPCapableSYNRX | while read a count c rest ;do echo $count;done)
461-
local stat_ackrx_now_l=$(ip netns exec ${listener_ns} nstat -z -a MPTcpExtMPCapableACKRX | while read a count c rest ;do echo $count;done)
462-
463-
local stat_cookietx_now=$(ip netns exec ${listener_ns} nstat -z -a TcpExtSyncookiesSent | while read a count c rest ;do echo $count;done)
464-
local stat_cookierx_now=$(ip netns exec ${listener_ns} nstat -z -a TcpExtSyncookiesRecv | while read a count c rest ;do echo $count;done)
486+
local stat_synrx_now_l=$(get_mib_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX")
487+
local stat_ackrx_now_l=$(get_mib_counter "${listener_ns}" "MPTcpExtMPCapableACKRX")
488+
local stat_cookietx_now=$(get_mib_counter "${listener_ns}" "TcpExtSyncookiesSent")
489+
local stat_cookierx_now=$(get_mib_counter "${listener_ns}" "TcpExtSyncookiesRecv")
465490

466491
expect_synrx=$((stat_synrx_last_l))
467492
expect_ackrx=$((stat_ackrx_last_l))
@@ -473,37 +498,50 @@ do_transfer()
473498
expect_synrx=$((stat_synrx_last_l+1))
474499
expect_ackrx=$((stat_ackrx_last_l+1))
475500
fi
501+
502+
if [ ${stat_synrx_now_l} -lt ${expect_synrx} ]; then
503+
printf "[ FAIL ] lower MPC SYN rx (%d) than expected (%d)\n" \
504+
"${stat_synrx_now_l}" "${expect_synrx}" 1>&2
505+
retc=1
506+
fi
507+
if [ ${stat_ackrx_now_l} -lt ${expect_ackrx} ]; then
508+
printf "[ FAIL ] lower MPC ACK rx (%d) than expected (%d)\n" \
509+
"${stat_ackrx_now_l}" "${expect_ackrx}" 1>&2
510+
rets=1
511+
fi
512+
513+
if [ $retc -eq 0 ] && [ $rets -eq 0 ]; then
514+
printf "[ OK ]"
515+
fi
516+
476517
if [ $cookies -eq 2 ];then
477518
if [ $stat_cookietx_last -ge $stat_cookietx_now ] ;then
478-
echo "${listener_ns} CookieSent: ${cl_proto} -> ${srv_proto}: did not advance"
519+
printf " WARN: CookieSent: did not advance"
479520
fi
480521
if [ $stat_cookierx_last -ge $stat_cookierx_now ] ;then
481-
echo "${listener_ns} CookieRecv: ${cl_proto} -> ${srv_proto}: did not advance"
522+
printf " WARN: CookieRecv: did not advance"
482523
fi
483524
else
484525
if [ $stat_cookietx_last -ne $stat_cookietx_now ] ;then
485-
echo "${listener_ns} CookieSent: ${cl_proto} -> ${srv_proto}: changed"
526+
printf " WARN: CookieSent: changed"
486527
fi
487528
if [ $stat_cookierx_last -ne $stat_cookierx_now ] ;then
488-
echo "${listener_ns} CookieRecv: ${cl_proto} -> ${srv_proto}: changed"
529+
printf " WARN: CookieRecv: changed"
489530
fi
490531
fi
491532

492-
if [ $expect_synrx -ne $stat_synrx_now_l ] ;then
493-
echo "${listener_ns} SYNRX: ${cl_proto} -> ${srv_proto}: expect ${expect_synrx}, got ${stat_synrx_now_l}"
533+
if [ ${stat_synrx_now_l} -gt ${expect_synrx} ]; then
534+
printf " WARN: SYNRX: expect %d, got %d (probably retransmissions)" \
535+
"${expect_synrx}" "${stat_synrx_now_l}"
494536
fi
495-
if [ $expect_ackrx -ne $stat_ackrx_now_l ] ;then
496-
echo "${listener_ns} ACKRX: ${cl_proto} -> ${srv_proto}: expect ${expect_synrx}, got ${stat_synrx_now_l}"
497-
fi
498-
499-
if [ $retc -eq 0 ] && [ $rets -eq 0 ];then
500-
echo "$duration [ OK ]"
501-
cat "$capout"
502-
return 0
537+
if [ ${stat_ackrx_now_l} -gt ${expect_ackrx} ]; then
538+
printf " WARN: ACKRX: expect %d, got %d (probably retransmissions)" \
539+
"${expect_ackrx}" "${stat_ackrx_now_l}"
503540
fi
504541

542+
echo
505543
cat "$capout"
506-
return 1
544+
[ $retc -eq 0 ] && [ $rets -eq 0 ]
507545
}
508546

509547
make_file()

0 commit comments

Comments
 (0)