selftests: mptcp: join: check CURRESTAB counters
authorGeliang Tang <geliang.tang@linux.dev>
Fri, 22 Dec 2023 12:47:24 +0000 (13:47 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 2 Jan 2024 13:33:33 +0000 (13:33 +0000)
This patch adds a new helper chk_cestab_nr() to check the current
established connections counter MIB_CURRESTAB. Set the newly added
variables cestab_ns1 and cestab_ns2 to indicate how many connections
are expected in ns1 or ns2.

Invoke check_cestab() to check the counter during the connection in
do_transfer() and invoke chk_cestab_nr() to re-check it when the
connection closed. These checks are embedded in add_tests().

Signed-off-by: Geliang Tang <geliang.tang@linux.dev>
Acked-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Matthieu Baerts <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts <matttbe@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/mptcp/mptcp_join.sh

index 87590a43b50dfdd4fb5aa1ef79b276576339ce21..3a5b630261910b1cfdd001e05c97c07335b61827 100755 (executable)
@@ -56,6 +56,8 @@ unset FAILING_LINKS
 unset test_linkfail
 unset addr_nr_ns1
 unset addr_nr_ns2
+unset cestab_ns1
+unset cestab_ns2
 unset sflags
 unset fastclose
 unset fullmesh
@@ -976,6 +978,34 @@ pm_nl_set_endpoint()
        fi
 }
 
+chk_cestab_nr()
+{
+       local ns=$1
+       local cestab=$2
+       local count
+
+       print_check "cestab $cestab"
+       count=$(mptcp_lib_get_counter ${ns} "MPTcpExtMPCurrEstab")
+       if [ -z "$count" ]; then
+               print_skip
+       elif [ "$count" != "$cestab" ]; then
+               fail_test "got $count current establish[s] expected $cestab"
+       else
+               print_ok
+       fi
+}
+
+# $1 namespace 1, $2 namespace 2
+check_cestab()
+{
+       if [ -n "${cestab_ns1}" ]; then
+               chk_cestab_nr ${1} ${cestab_ns1}
+       fi
+       if [ -n "${cestab_ns2}" ]; then
+               chk_cestab_nr ${2} ${cestab_ns2}
+       fi
+}
+
 do_transfer()
 {
        local listener_ns="$1"
@@ -1089,6 +1119,7 @@ do_transfer()
        local cpid=$!
 
        pm_nl_set_endpoint $listener_ns $connector_ns $connect_addr
+       check_cestab $listener_ns $connector_ns
 
        wait $cpid
        local retc=$?
@@ -2477,47 +2508,52 @@ add_tests()
        if reset "add single subflow"; then
                pm_nl_set_limits $ns1 0 1
                pm_nl_set_limits $ns2 0 1
-               addr_nr_ns2=1 speed=slow \
+               addr_nr_ns2=1 speed=slow cestab_ns2=1 \
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 1 1 1
+               chk_cestab_nr $ns2 0
        fi
 
        # add signal address
        if reset "add signal address"; then
                pm_nl_set_limits $ns1 0 1
                pm_nl_set_limits $ns2 1 1
-               addr_nr_ns1=1 speed=slow \
+               addr_nr_ns1=1 speed=slow cestab_ns1=1 \
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 1 1 1
                chk_add_nr 1 1
+               chk_cestab_nr $ns1 0
        fi
 
        # add multiple subflows
        if reset "add multiple subflows"; then
                pm_nl_set_limits $ns1 0 2
                pm_nl_set_limits $ns2 0 2
-               addr_nr_ns2=2 speed=slow \
+               addr_nr_ns2=2 speed=slow cestab_ns2=1 \
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 2 2 2
+               chk_cestab_nr $ns2 0
        fi
 
        # add multiple subflows IPv6
        if reset "add multiple subflows IPv6"; then
                pm_nl_set_limits $ns1 0 2
                pm_nl_set_limits $ns2 0 2
-               addr_nr_ns2=2 speed=slow \
+               addr_nr_ns2=2 speed=slow cestab_ns2=1 \
                        run_tests $ns1 $ns2 dead:beef:1::1
                chk_join_nr 2 2 2
+               chk_cestab_nr $ns2 0
        fi
 
        # add multiple addresses IPv6
        if reset "add multiple addresses IPv6"; then
                pm_nl_set_limits $ns1 0 2
                pm_nl_set_limits $ns2 2 2
-               addr_nr_ns1=2 speed=slow \
+               addr_nr_ns1=2 speed=slow cestab_ns1=1 \
                        run_tests $ns1 $ns2 dead:beef:1::1
                chk_join_nr 2 2 2
                chk_add_nr 2 2
+               chk_cestab_nr $ns1 0
        fi
 }