selftests: mptcp: join: skip check if MIB counter not supported
commit 47867f0a7e831e24e5eab3330667ce9682d50fb1 upstream. Selftests are supposed to run on any kernels, including the old ones not supporting all MPTCP features. One of them is the MPTCP MIB counters introduced in commitfc518953bc
("mptcp: add and use MIB counter infrastructure") and more later. The MPTCP Join selftest heavily relies on these counters. If a counter is not supported by the kernel, it is not displayed when using 'nstat -z'. We can then detect that and skip the verification. A new helper (get_counter()) has been added to do the required checks and return an error if the counter is not available. Note that if we expect to have these features available and if SELFTESTS_MPTCP_LIB_EXPECT_ALL_FEATURES env var is set to 1, the tests will be marked as failed instead of skipped. This new helper also makes sure we get the exact counter we want to avoid issues we had in the past, e.g. with MPTcpExtRmAddr and MPTcpExtRmAddrDrop sharing the same prefix. While at it, we uniform the way we fetch a MIB counter. Note for the backports: we rarely change these modified blocks so if there is are conflicts, it is very likely because a counter is not used in the older kernels and we don't need that chunk. Link: https://github.com/multipath-tcp/mptcp_net-next/issues/368 Fixes:b08fbf2410
("selftests: add test-cases for MPTCP MP_JOIN") Cc: stable@vger.kernel.org Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e508d9cef8
commit
524a2c0bcf
@ -130,6 +130,22 @@ do_ping()
|
||||
fi
|
||||
}
|
||||
|
||||
# $1: ns ; $2: counter
|
||||
get_counter()
|
||||
{
|
||||
local ns="${1}"
|
||||
local counter="${2}"
|
||||
local count
|
||||
|
||||
count=$(ip netns exec ${ns} nstat -asz "${counter}" | awk 'NR==1 {next} {print $2}')
|
||||
if [ -z "${count}" ]; then
|
||||
mptcp_lib_fail_if_expected_feature "${counter} counter"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "${count}"
|
||||
}
|
||||
|
||||
do_transfer()
|
||||
{
|
||||
listener_ns="$1"
|
||||
@ -291,9 +307,10 @@ chk_join_nr()
|
||||
local dump_stats
|
||||
|
||||
printf "%02u %-36s %s" "$TEST_COUNT" "$msg" "syn"
|
||||
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinSynRx | awk '{print $2}'`
|
||||
[ -z "$count" ] && count=0
|
||||
if [ "$count" != "$syn_nr" ]; then
|
||||
count=$(get_counter ${ns1} "MPTcpExtMPJoinSynRx")
|
||||
if [ -z "$count" ]; then
|
||||
echo -n "[skip]"
|
||||
elif [ "$count" != "$syn_nr" ]; then
|
||||
echo "[fail] got $count JOIN[s] syn expected $syn_nr"
|
||||
ret=1
|
||||
dump_stats=1
|
||||
@ -302,9 +319,10 @@ chk_join_nr()
|
||||
fi
|
||||
|
||||
echo -n " - synack"
|
||||
count=`ip netns exec $ns2 nstat -as | grep MPTcpExtMPJoinSynAckRx | awk '{print $2}'`
|
||||
[ -z "$count" ] && count=0
|
||||
if [ "$count" != "$syn_ack_nr" ]; then
|
||||
count=$(get_counter ${ns2} "MPTcpExtMPJoinSynAckRx")
|
||||
if [ -z "$count" ]; then
|
||||
echo -n "[skip]"
|
||||
elif [ "$count" != "$syn_ack_nr" ]; then
|
||||
echo "[fail] got $count JOIN[s] synack expected $syn_ack_nr"
|
||||
ret=1
|
||||
dump_stats=1
|
||||
@ -313,9 +331,10 @@ chk_join_nr()
|
||||
fi
|
||||
|
||||
echo -n " - ack"
|
||||
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinAckRx | awk '{print $2}'`
|
||||
[ -z "$count" ] && count=0
|
||||
if [ "$count" != "$ack_nr" ]; then
|
||||
count=$(get_counter ${ns1} "MPTcpExtMPJoinAckRx")
|
||||
if [ -z "$count" ]; then
|
||||
echo "[skip]"
|
||||
elif [ "$count" != "$ack_nr" ]; then
|
||||
echo "[fail] got $count JOIN[s] ack expected $ack_nr"
|
||||
ret=1
|
||||
dump_stats=1
|
||||
@ -338,9 +357,10 @@ chk_add_nr()
|
||||
local dump_stats
|
||||
|
||||
printf "%-39s %s" " " "add"
|
||||
count=`ip netns exec $ns2 nstat -as | grep MPTcpExtAddAddr | awk '{print $2}'`
|
||||
[ -z "$count" ] && count=0
|
||||
if [ "$count" != "$add_nr" ]; then
|
||||
count=$(get_counter ${ns2} "MPTcpExtAddAddr")
|
||||
if [ -z "$count" ]; then
|
||||
echo -n "[skip]"
|
||||
elif [ "$count" != "$add_nr" ]; then
|
||||
echo "[fail] got $count ADD_ADDR[s] expected $add_nr"
|
||||
ret=1
|
||||
dump_stats=1
|
||||
@ -349,9 +369,10 @@ chk_add_nr()
|
||||
fi
|
||||
|
||||
echo -n " - echo "
|
||||
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtEchoAdd | awk '{print $2}'`
|
||||
[ -z "$count" ] && count=0
|
||||
if [ "$count" != "$echo_nr" ]; then
|
||||
count=$(get_counter ${ns1} "MPTcpExtEchoAdd")
|
||||
if [ -z "$count" ]; then
|
||||
echo "[skip]"
|
||||
elif [ "$count" != "$echo_nr" ]; then
|
||||
echo "[fail] got $count ADD_ADDR echo[s] expected $echo_nr"
|
||||
ret=1
|
||||
dump_stats=1
|
||||
@ -375,9 +396,10 @@ chk_rm_nr()
|
||||
local dump_stats
|
||||
|
||||
printf "%-39s %s" " " "rm "
|
||||
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtRmAddr | awk '{print $2}'`
|
||||
[ -z "$count" ] && count=0
|
||||
if [ "$count" != "$rm_addr_nr" ]; then
|
||||
count=$(get_counter ${ns1} "MPTcpExtRmAddr")
|
||||
if [ -z "$count" ]; then
|
||||
echo -n "[skip]"
|
||||
elif [ "$count" != "$rm_addr_nr" ]; then
|
||||
echo "[fail] got $count RM_ADDR[s] expected $rm_addr_nr"
|
||||
ret=1
|
||||
dump_stats=1
|
||||
@ -386,9 +408,10 @@ chk_rm_nr()
|
||||
fi
|
||||
|
||||
echo -n " - sf "
|
||||
count=`ip netns exec $ns2 nstat -as | grep MPTcpExtRmSubflow | awk '{print $2}'`
|
||||
[ -z "$count" ] && count=0
|
||||
if [ "$count" != "$rm_subflow_nr" ]; then
|
||||
count=$(get_counter ${ns2} "MPTcpExtRmSubflow")
|
||||
if [ -z "$count" ]; then
|
||||
echo "[skip]"
|
||||
elif [ "$count" != "$rm_subflow_nr" ]; then
|
||||
echo "[fail] got $count RM_SUBFLOW[s] expected $rm_subflow_nr"
|
||||
ret=1
|
||||
dump_stats=1
|
||||
|
Loading…
Reference in New Issue
Block a user