Commit 718eb44e authored by Geliang Tang's avatar Geliang Tang Committed by Jakub Kicinski

selftests: mptcp: add the MP_PRIO testcases

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: default avatarGeliang Tang <geliangtang@gmail.com>
Signed-off-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 0be2ac28
...@@ -212,6 +212,7 @@ do_transfer() ...@@ -212,6 +212,7 @@ do_transfer()
rm_nr_ns1="$7" rm_nr_ns1="$7"
rm_nr_ns2="$8" rm_nr_ns2="$8"
speed="$9" speed="$9"
bkup="${10}"
port=$((10000+$TEST_COUNT)) port=$((10000+$TEST_COUNT))
TEST_COUNT=$((TEST_COUNT+1)) TEST_COUNT=$((TEST_COUNT+1))
...@@ -297,6 +298,18 @@ do_transfer() ...@@ -297,6 +298,18 @@ do_transfer()
fi fi
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 wait $cpid
retc=$? retc=$?
wait $spid wait $spid
...@@ -358,6 +371,7 @@ run_tests() ...@@ -358,6 +371,7 @@ run_tests()
rm_nr_ns1="${5:-0}" rm_nr_ns1="${5:-0}"
rm_nr_ns2="${6:-0}" rm_nr_ns2="${6:-0}"
speed="${7:-fast}" speed="${7:-fast}"
bkup="${8:-""}"
lret=0 lret=0
oldin="" oldin=""
...@@ -372,7 +386,7 @@ run_tests() ...@@ -372,7 +386,7 @@ run_tests()
fi fi
do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} \ 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=$? lret=$?
if [ "$test_linkfail" -eq 1 ];then if [ "$test_linkfail" -eq 1 ];then
...@@ -509,6 +523,43 @@ chk_rm_nr() ...@@ -509,6 +523,43 @@ chk_rm_nr()
fi 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) sin=$(mktemp)
sout=$(mktemp) sout=$(mktemp)
cin=$(mktemp) cin=$(mktemp)
...@@ -739,6 +790,25 @@ chk_join_nr "remove subflow and signal IPv6" 2 2 2 ...@@ -739,6 +790,25 @@ chk_join_nr "remove subflow and signal IPv6" 2 2 2
chk_add_nr 1 1 chk_add_nr 1 1
chk_rm_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 # single subflow, syncookies
reset_with_cookies reset_with_cookies
ip netns exec $ns1 ./pm_nl_ctl limits 0 1 ip netns exec $ns1 ./pm_nl_ctl limits 0 1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment