selftests: mptcp: fail if not enough SYN/3rd ACK
authorMatthieu Baerts <matthieu.baerts@tessares.net>
Fri, 12 Feb 2021 23:20:30 +0000 (15:20 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 13 Feb 2021 00:20:34 +0000 (16:20 -0800)
If we receive less MPCapable SYN or 3rd ACK than expected, we now mark
the test as failed.

On the other hand, if we receive more, we keep the warning but we add a
hint that it is probably due to retransmissions and that's why we don't
mark the test as failed.

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/148
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/mptcp/mptcp_connect.sh

index 362e891f89cfef2a81b686705e1e8d35b36964fb..10a030b53b23e7b69955ba8da0ee821d24013845 100755 (executable)
@@ -483,10 +483,6 @@ do_transfer()
        check_transfer $cin $sout "file received by server"
        rets=$?
 
-       if [ $retc -eq 0 ] && [ $rets -eq 0 ]; then
-               printf "[ OK ]"
-       fi
-
        local stat_synrx_now_l=$(get_mib_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX")
        local stat_ackrx_now_l=$(get_mib_counter "${listener_ns}" "MPTcpExtMPCapableACKRX")
        local stat_cookietx_now=$(get_mib_counter "${listener_ns}" "TcpExtSyncookiesSent")
@@ -502,6 +498,22 @@ do_transfer()
                expect_synrx=$((stat_synrx_last_l+1))
                expect_ackrx=$((stat_ackrx_last_l+1))
        fi
+
+       if [ ${stat_synrx_now_l} -lt ${expect_synrx} ]; then
+               printf "[ FAIL ] lower MPC SYN rx (%d) than expected (%d)\n" \
+                       "${stat_synrx_now_l}" "${expect_synrx}" 1>&2
+               retc=1
+       fi
+       if [ ${stat_ackrx_now_l} -lt ${expect_ackrx} ]; then
+               printf "[ FAIL ] lower MPC ACK rx (%d) than expected (%d)\n" \
+                       "${stat_ackrx_now_l}" "${expect_ackrx}" 1>&2
+               rets=1
+       fi
+
+       if [ $retc -eq 0 ] && [ $rets -eq 0 ]; then
+               printf "[ OK ]"
+       fi
+
        if [ $cookies -eq 2 ];then
                if [ $stat_cookietx_last -ge $stat_cookietx_now ] ;then
                        printf " WARN: CookieSent: did not advance"
@@ -518,12 +530,12 @@ do_transfer()
                fi
        fi
 
-       if [ $expect_synrx -ne $stat_synrx_now_l ] ;then
-               printf " WARN: SYNRX: expect %d, got %d" \
+       if [ ${stat_synrx_now_l} -gt ${expect_synrx} ]; then
+               printf " WARN: SYNRX: expect %d, got %d (probably retransmissions)" \
                        "${expect_synrx}" "${stat_synrx_now_l}"
        fi
-       if [ $expect_ackrx -ne $stat_ackrx_now_l ] ;then
-               printf " WARN: ACKRX: expect %d, got %d" \
+       if [ ${stat_ackrx_now_l} -gt ${expect_ackrx} ]; then
+               printf " WARN: ACKRX: expect %d, got %d (probably retransmissions)" \
                        "${expect_ackrx}" "${stat_ackrx_now_l}"
        fi