selftests: mptcp: add fastclose testcase
authorGeliang Tang <geliang.tang@suse.com>
Fri, 4 Mar 2022 19:36:33 +0000 (11:36 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 5 Mar 2022 05:54:31 +0000 (21:54 -0800)
This patch added the self test for MP_FASTCLOSE. Reused the argument
addr_nr_ns2 of do_transfer() to pass the extra arguments '-I 2' to
mptcp_connect commands. Then mptcp_connect disconnected the
connections to trigger the MP_FASTCLOSE sending and receiving. Used
chk_fclose_nr to check the MP_FASTCLOSE mibs and used chk_rst_nr to
check the MP_RST mibs. This test used the test_linkfail value to make
1024KB test files.

The output looks like this:

Created /tmp/tmp.XB8sfv1hJ0 (size 1024 KB) containing data sent by client
Created /tmp/tmp.RtTDbzqrXI (size 1024 KB) containing data sent by server
001 fastclose test                syn[ ok ] - synack[ ok ] - ack[ ok ]
                                  ctx[ ok ] - fclzrx[ ok ]
                                  rtx[ ok ] - rstrx [ ok ]   invert

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/mptcp/mptcp_join.sh

index 1fda29d..4604dd1 100755 (executable)
@@ -452,6 +452,12 @@ do_transfer()
                extra_args="-r ${speed:6}"
        fi
 
+       if [[ "${addr_nr_ns2}" = "fastclose_"* ]]; then
+               # disconnect
+               extra_args="$extra_args -I ${addr_nr_ns2:10}"
+               addr_nr_ns2=0
+       fi
+
        local local_addr
        if is_v6 "${connect_addr}"; then
                local_addr="::"
@@ -2196,6 +2202,15 @@ fullmesh_tests()
        chk_rm_nr 0 1
 }
 
+fastclose_tests()
+{
+       reset
+       run_tests $ns1 $ns2 10.0.1.1 1024 0 fastclose_2
+       chk_join_nr "fastclose test" 0 0 0
+       chk_fclose_nr 1 1
+       chk_rst_nr 1 1 invert
+}
+
 all_tests()
 {
        subflows_tests
@@ -2213,6 +2228,7 @@ all_tests()
        checksum_tests
        deny_join_id0_tests
        fullmesh_tests
+       fastclose_tests
 }
 
 # [$1: error message]
@@ -2239,6 +2255,7 @@ usage()
        echo "  -S checksum_tests"
        echo "  -d deny_join_id0_tests"
        echo "  -m fullmesh_tests"
+       echo "  -z fastclose_tests"
        echo "  -c capture pcap files"
        echo "  -C enable data checksum"
        echo "  -i use ip mptcp"
@@ -2270,7 +2287,7 @@ if [ $do_all_tests -eq 1 ]; then
        exit $ret
 fi
 
-while getopts 'fesltra64bpkdmchCSi' opt; do
+while getopts 'fesltra64bpkdmchzCSi' opt; do
        case $opt in
                f)
                        subflows_tests
@@ -2317,6 +2334,9 @@ while getopts 'fesltra64bpkdmchCSi' opt; do
                m)
                        fullmesh_tests
                        ;;
+               z)
+                       fastclose_tests
+                       ;;
                c)
                        ;;
                C)