selftests: mptcp: check subflow and addr infos
authorGeliang Tang <geliang.tang@suse.com>
Fri, 23 Jun 2023 17:34:08 +0000 (10:34 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sat, 24 Jun 2023 22:37:57 +0000 (15:37 -0700)
New MPTCP info are being checked in multiple places to improve the code
coverage when using the userspace PM.

This patch makes chk_mptcp_info() more generic to be able to check
subflows, add_addr_signal and add_addr_accepted info (and even more
later). New arguments are now required to get different infos from the
two namespaces because some counters are specific to the client or the
server.

Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
Signed-off-by: Mat Martineau <martineau@kernel.org>
Link: https://lore.kernel.org/r/20230623-send-net-next-20230623-v1-2-a883213c8ba9@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/mptcp/mptcp_join.sh

index 3baa6ac..95a5638 100755 (executable)
@@ -1832,31 +1832,26 @@ chk_subflow_nr()
 
 chk_mptcp_info()
 {
-       local nr_info=$1
-       local info
+       local info1=$1
+       local exp1=$2
+       local info2=$3
+       local exp2=$4
        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"
+       printf "%-${nr_blank}s %-30s" " " "mptcp_info $info1:$info2=$exp1:$exp2"
 
-       cnt1=$(ss -N $ns1 -inmHM | grep "$info:" |
-               sed -n 's/.*\('"$info"':\)\([[:digit:]]*\).*$/\2/p;q')
+       cnt1=$(ss -N $ns1 -inmHM | grep "$info1:" |
+              sed -n 's/.*\('"$info1"':\)\([[:digit:]]*\).*$/\2/p;q')
+       cnt2=$(ss -N $ns2 -inmHM | grep "$info2:" |
+              sed -n 's/.*\('"$info2"':\)\([[:digit:]]*\).*$/\2/p;q')
+       # 'ss' only display active connections and counters that are not 0.
        [ -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"
+
+       if [ "$cnt1" != "$exp1" ] || [ "$cnt2" != "$exp2" ]; then
+               echo "[fail] got $cnt1:$cnt2 $info1:$info2 expected $exp1:$exp2"
                fail_test
                dump_stats=1
        else
@@ -3332,8 +3327,11 @@ userspace_tests()
                userspace_pm_add_addr 10.0.2.1 10
                chk_join_nr 1 1 1
                chk_add_nr 1 1
+               chk_mptcp_info subflows 1 subflows 1
+               chk_mptcp_info add_addr_signal 1 add_addr_accepted 1
                userspace_pm_rm_sf_addr_ns1 10.0.2.1 10
                chk_rm_nr 1 1 invert
+               chk_mptcp_info subflows 0 subflows 0
                kill_events_pids
                wait $tests_pid
        fi
@@ -3348,8 +3346,10 @@ userspace_tests()
                wait_mpj $ns2
                userspace_pm_add_sf 10.0.3.2 20
                chk_join_nr 1 1 1
+               chk_mptcp_info subflows 1 subflows 1
                userspace_pm_rm_sf_addr_ns2 10.0.3.2 20
                chk_rm_nr 1 1
+               chk_mptcp_info subflows 0 subflows 0
                kill_events_pids
                wait $tests_pid
        fi
@@ -3369,6 +3369,8 @@ endpoint_tests()
                wait_mpj $ns1
                pm_nl_check_endpoint 1 "creation" \
                        $ns2 10.0.2.2 id 1 flags implicit
+               chk_mptcp_info subflows 1 subflows 1
+               chk_mptcp_info add_addr_signal 1 add_addr_accepted 1
 
                pm_nl_add_endpoint $ns2 10.0.2.2 id 33
                pm_nl_check_endpoint 0 "ID change is prevented" \
@@ -3389,17 +3391,17 @@ endpoint_tests()
 
                wait_mpj $ns2
                chk_subflow_nr needtitle "before delete" 2
-               chk_mptcp_info subflows_1
+               chk_mptcp_info subflows 1 subflows 1
 
                pm_nl_del_endpoint $ns2 2 10.0.2.2
                sleep 0.5
                chk_subflow_nr "" "after delete" 1
-               chk_mptcp_info subflows_0
+               chk_mptcp_info subflows 0 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
+               chk_mptcp_info subflows 1 subflows 1
                kill_tests_wait
        fi
 }