selftests: mptcp: diag: skip listen tests if not supported
Selftests are supposed to run on any kernels, including the old ones not supporting all MPTCP features. One of them is the listen diag dump support introduced by commit4fa39b701c
("mptcp: listen diag dump support"). It looks like there is no good pre-check to do here, i.e. dedicated function available in kallsyms. Instead, we try to get info if nothing is returned, the test is marked as skipped. That's not ideal because something could be wrong with the feature and instead of reporting an error, the test could be marked as skipped. If we know in advanced that the feature is supposed to be supported, the tester can set SELFTESTS_MPTCP_LIB_EXPECT_ALL_FEATURES env var to 1: in this case the test will report an error instead of marking the test as skipped if nothing is returned. Link: https://github.com/multipath-tcp/mptcp_net-next/issues/368 Fixes:f2ae0fa68e
("selftests/mptcp: add diag listen tests") Cc: stable@vger.kernel.org Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
06b0308315
commit
dc97251bf0
|
@ -55,16 +55,20 @@ __chk_nr()
|
|||
{
|
||||
local command="$1"
|
||||
local expected=$2
|
||||
local msg nr
|
||||
local msg="$3"
|
||||
local skip="${4:-SKIP}"
|
||||
local nr
|
||||
|
||||
shift 2
|
||||
msg=$*
|
||||
nr=$(eval $command)
|
||||
|
||||
printf "%-50s" "$msg"
|
||||
if [ $nr != $expected ]; then
|
||||
echo "[ fail ] expected $expected found $nr"
|
||||
ret=$test_cnt
|
||||
if [ $nr = "$skip" ] && ! mptcp_lib_expect_all_features; then
|
||||
echo "[ skip ] Feature probably not supported"
|
||||
else
|
||||
echo "[ fail ] expected $expected found $nr"
|
||||
ret=$test_cnt
|
||||
fi
|
||||
else
|
||||
echo "[ ok ]"
|
||||
fi
|
||||
|
@ -76,12 +80,12 @@ __chk_msk_nr()
|
|||
local condition=$1
|
||||
shift 1
|
||||
|
||||
__chk_nr "ss -inmHMN $ns | $condition" $*
|
||||
__chk_nr "ss -inmHMN $ns | $condition" "$@"
|
||||
}
|
||||
|
||||
chk_msk_nr()
|
||||
{
|
||||
__chk_msk_nr "grep -c token:" $*
|
||||
__chk_msk_nr "grep -c token:" "$@"
|
||||
}
|
||||
|
||||
wait_msk_nr()
|
||||
|
@ -119,37 +123,26 @@ wait_msk_nr()
|
|||
|
||||
chk_msk_fallback_nr()
|
||||
{
|
||||
__chk_msk_nr "grep -c fallback" $*
|
||||
__chk_msk_nr "grep -c fallback" "$@"
|
||||
}
|
||||
|
||||
chk_msk_remote_key_nr()
|
||||
{
|
||||
__chk_msk_nr "grep -c remote_key" $*
|
||||
__chk_msk_nr "grep -c remote_key" "$@"
|
||||
}
|
||||
|
||||
__chk_listen()
|
||||
{
|
||||
local filter="$1"
|
||||
local expected=$2
|
||||
local msg="$3"
|
||||
|
||||
shift 2
|
||||
msg=$*
|
||||
|
||||
nr=$(ss -N $ns -Ml "$filter" | grep -c LISTEN)
|
||||
printf "%-50s" "$msg"
|
||||
|
||||
if [ $nr != $expected ]; then
|
||||
echo "[ fail ] expected $expected found $nr"
|
||||
ret=$test_cnt
|
||||
else
|
||||
echo "[ ok ]"
|
||||
fi
|
||||
__chk_nr "ss -N $ns -Ml '$filter' | grep -c LISTEN" "$expected" "$msg" 0
|
||||
}
|
||||
|
||||
chk_msk_listen()
|
||||
{
|
||||
lport=$1
|
||||
local msg="check for listen socket"
|
||||
|
||||
# destination port search should always return empty list
|
||||
__chk_listen "dport $lport" 0 "listen match for dport $lport"
|
||||
|
@ -167,10 +160,9 @@ chk_msk_listen()
|
|||
chk_msk_inuse()
|
||||
{
|
||||
local expected=$1
|
||||
local msg="$2"
|
||||
local listen_nr
|
||||
|
||||
shift 1
|
||||
|
||||
listen_nr=$(ss -N "${ns}" -Ml | grep -c LISTEN)
|
||||
expected=$((expected + listen_nr))
|
||||
|
||||
|
@ -181,7 +173,7 @@ chk_msk_inuse()
|
|||
sleep 0.1
|
||||
done
|
||||
|
||||
__chk_nr get_msk_inuse $expected $*
|
||||
__chk_nr get_msk_inuse $expected "$msg"
|
||||
}
|
||||
|
||||
# $1: ns, $2: port
|
||||
|
|
Loading…
Reference in New Issue