]> git.baikalelectronics.ru Git - kernel.git/commitdiff
selftests: mptcp: add the MP_PRIO testcases
authorGeliang Tang <geliangtang@gmail.com>
Sat, 9 Jan 2021 00:48:02 +0000 (16:48 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sun, 10 Jan 2021 02:18:44 +0000 (18:18 -0800)
This patch added the MP_PRIO testcases:

Add a new argument bkup for run_tests and do_transfer, it can be set as
"backup" or "nobackup", the default value is "".

Add a new function chk_prio_nr to check the MP_PRIO related MIB counters.

The output looks like this:

29 single subflow, backup      syn[ ok ] - synack[ ok ] - ack[ ok ]
                               ptx[ ok ] - prx   [ ok ]
30 single address, backup      syn[ ok ] - synack[ ok ] - ack[ ok ]
                               add[ ok ] - echo  [ ok ]
                               ptx[ ok ] - prx   [ ok ]

Signed-off-by: Geliang Tang <geliangtang@gmail.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 9aa9624cff972a48a3c193a75eb2160449ee1ef1..f74cd993b168e1dba09038a57ad905718c4c2dc6 100755 (executable)
@@ -212,6 +212,7 @@ do_transfer()
        rm_nr_ns1="$7"
        rm_nr_ns2="$8"
        speed="$9"
+       bkup="${10}"
 
        port=$((10000+$TEST_COUNT))
        TEST_COUNT=$((TEST_COUNT+1))
@@ -297,6 +298,18 @@ do_transfer()
                fi
        fi
 
+       if [ ! -z $bkup ]; then
+               sleep 1
+               for netns in "$ns1" "$ns2"; do
+                       dump=(`ip netns exec $netns ./pm_nl_ctl dump`)
+                       if [ ${#dump[@]} -gt 0 ]; then
+                               addr=${dump[${#dump[@]} - 1]}
+                               backup="ip netns exec $netns ./pm_nl_ctl set $addr flags $bkup"
+                               $backup
+                       fi
+               done
+       fi
+
        wait $cpid
        retc=$?
        wait $spid
@@ -358,6 +371,7 @@ run_tests()
        rm_nr_ns1="${5:-0}"
        rm_nr_ns2="${6:-0}"
        speed="${7:-fast}"
+       bkup="${8:-""}"
        lret=0
        oldin=""
 
@@ -372,7 +386,7 @@ run_tests()
        fi
 
        do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} \
-               ${test_linkfail} ${rm_nr_ns1} ${rm_nr_ns2} ${speed}
+               ${test_linkfail} ${rm_nr_ns1} ${rm_nr_ns2} ${speed} ${bkup}
        lret=$?
 
        if [ "$test_linkfail" -eq 1 ];then
@@ -509,6 +523,43 @@ chk_rm_nr()
        fi
 }
 
+chk_prio_nr()
+{
+       local mp_prio_nr_tx=$1
+       local mp_prio_nr_rx=$2
+       local count
+       local dump_stats
+
+       printf "%-39s %s" " " "ptx"
+       count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPPrioTx | awk '{print $2}'`
+       [ -z "$count" ] && count=0
+       if [ "$count" != "$mp_prio_nr_tx" ]; then
+               echo "[fail] got $count MP_PRIO[s] TX expected $mp_prio_nr_tx"
+               ret=1
+               dump_stats=1
+       else
+               echo -n "[ ok ]"
+       fi
+
+       echo -n " - prx   "
+       count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPPrioRx | awk '{print $2}'`
+       [ -z "$count" ] && count=0
+       if [ "$count" != "$mp_prio_nr_rx" ]; then
+               echo "[fail] got $count MP_PRIO[s] RX expected $mp_prio_nr_rx"
+               ret=1
+               dump_stats=1
+       else
+               echo "[ ok ]"
+       fi
+
+       if [ "${dump_stats}" = 1 ]; then
+               echo Server ns stats
+               ip netns exec $ns1 nstat -as | grep MPTcp
+               echo Client ns stats
+               ip netns exec $ns2 nstat -as | grep MPTcp
+       fi
+}
+
 sin=$(mktemp)
 sout=$(mktemp)
 cin=$(mktemp)
@@ -739,6 +790,25 @@ chk_join_nr "remove subflow and signal IPv6" 2 2 2
 chk_add_nr 1 1
 chk_rm_nr 1 1
 
+# single subflow, backup
+reset
+ip netns exec $ns1 ./pm_nl_ctl limits 0 1
+ip netns exec $ns2 ./pm_nl_ctl limits 0 1
+ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow,backup
+run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow nobackup
+chk_join_nr "single subflow, backup" 1 1 1
+chk_prio_nr 0 1
+
+# single address, backup
+reset
+ip netns exec $ns1 ./pm_nl_ctl limits 0 1
+ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
+ip netns exec $ns2 ./pm_nl_ctl limits 1 1
+run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup
+chk_join_nr "single address, backup" 1 1 1
+chk_add_nr 1 1
+chk_prio_nr 1 0
+
 # single subflow, syncookies
 reset_with_cookies
 ip netns exec $ns1 ./pm_nl_ctl limits 0 1