selftests: mptcp: add mptcp_info tests
authorGeliang Tang <geliang.tang@suse.com>
Mon, 27 Mar 2023 10:22:24 +0000 (12:22 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 29 Mar 2023 08:01:28 +0000 (09:01 +0100)
This patch adds the mptcp_info fields tests in endpoint_tests(). Add a
new function chk_mptcp_info() to check the given number of the given
mptcp_info field.

Link: https://github.com/multipath-tcp/mptcp_net-next/issues/330
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/mptcp/mptcp_join.sh

index 42e3bd1..fafd19e 100755 (executable)
@@ -1719,6 +1719,46 @@ chk_subflow_nr()
        fi
 }
 
+chk_mptcp_info()
+{
+       local nr_info=$1
+       local info
+       local cnt1
+       local cnt2
+       local dump_stats
+
+       if [[ $nr_info = "subflows_"* ]]; then
+               info="subflows"
+               nr_info=${nr_info:9}
+       else
+               echo "[fail] unsupported argument: $nr_info"
+               fail_test
+               return 1
+       fi
+
+       printf "%-${nr_blank}s %-30s" " " "mptcp_info $info=$nr_info"
+
+       cnt1=$(ss -N $ns1 -inmHM | grep "$info:" |
+               sed -n 's/.*\('"$info"':\)\([[:digit:]]*\).*$/\2/p;q')
+       [ -z "$cnt1" ] && cnt1=0
+       cnt2=$(ss -N $ns2 -inmHM | grep "$info:" |
+               sed -n 's/.*\('"$info"':\)\([[:digit:]]*\).*$/\2/p;q')
+       [ -z "$cnt2" ] && cnt2=0
+       if [ "$cnt1" != "$nr_info" ] || [ "$cnt2" != "$nr_info" ]; then
+               echo "[fail] got $cnt1:$cnt2 $info expected $nr_info"
+               fail_test
+               dump_stats=1
+       else
+               echo "[ ok ]"
+       fi
+
+       if [ "$dump_stats" = 1 ]; then
+               ss -N $ns1 -inmHM
+               ss -N $ns2 -inmHM
+               dump_stats
+       fi
+}
+
 chk_link_usage()
 {
        local ns=$1
@@ -3118,13 +3158,18 @@ endpoint_tests()
                run_tests $ns1 $ns2 10.0.1.1 4 0 0 speed_20 2>/dev/null &
 
                wait_mpj $ns2
+               chk_subflow_nr needtitle "before delete" 2
+               chk_mptcp_info subflows_1
+
                pm_nl_del_endpoint $ns2 2 10.0.2.2
                sleep 0.5
-               chk_subflow_nr needtitle "after delete" 1
+               chk_subflow_nr "" "after delete" 1
+               chk_mptcp_info subflows_0
 
                pm_nl_add_endpoint $ns2 10.0.2.2 dev ns2eth2 flags subflow
                wait_mpj $ns2
                chk_subflow_nr "" "after re-add" 2
+               chk_mptcp_info subflows_1
                kill_tests_wait
        fi
 }