From: Geliang Tang <geliang.tang@suse.com>
To: mptcp@lists.linux.dev
Cc: Geliang Tang <geliang.tang@suse.com>,
Davide Caratti <dcaratti@redhat.com>,
Matthieu Baerts <matthieu.baerts@tessares.net>
Subject: [PATCH mptcp-next v8 8/8] selftests: mptcp: add mp_fail testcases
Date: Fri, 29 Oct 2021 12:40:18 +0800 [thread overview]
Message-ID: <ff613391540609e31cf4aff5abefaa03fbd63278.1635481641.git.geliang.tang@suse.com> (raw)
In-Reply-To: <cover.1635481641.git.geliang.tang@suse.com>
Added the test cases for MP_FAIL, use 'tc' command to trigger the
checksum failure.
Suggested-by: Davide Caratti <dcaratti@redhat.com>
Suggested-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/config | 5 ++
.../testing/selftests/net/mptcp/mptcp_join.sh | 75 +++++++++++++++++--
2 files changed, 72 insertions(+), 8 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/config b/tools/testing/selftests/net/mptcp/config
index 0faaccd21447..f522288b2204 100644
--- a/tools/testing/selftests/net/mptcp/config
+++ b/tools/testing/selftests/net/mptcp/config
@@ -15,3 +15,8 @@ CONFIG_NETFILTER_XTABLES=m
CONFIG_NETFILTER_XT_MATCH_BPF=m
CONFIG_NF_TABLES_IPV4=y
CONFIG_NF_TABLES_IPV6=y
+CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_CLS_ACT=m
+CONFIG_NET_CLS_FLOWER=m
+CONFIG_NET_SCH_INGRESS=m
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 2684ef9c0d42..d33cb5ce0ff3 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -178,6 +178,12 @@ if [ $? -ne 0 ];then
exit $ksft_skip
fi
+jq -V > /dev/null 2>&1
+if [ $? -ne 0 ];then
+ echo "SKIP: Could not run all tests without jq tool"
+ exit $ksft_skip
+fi
+
print_file_err()
{
ls -l "$1" 1>&2
@@ -232,6 +238,28 @@ link_failure()
done
}
+checksum_failure()
+{
+ i="$1"
+
+ tc -n $ns2 qdisc add dev ns2eth$i clsact
+ tc -n $ns2 filter add dev ns2eth$i egress \
+ protocol ip prio 1000 \
+ flower ip_proto tcp \
+ action pedit munge offset 148 u32 invert \
+ pipe csum tcp \
+ index 100
+
+ while true; do
+ local pkt=$(tc -n $ns2 -j -s action show action csum index 100 |
+ jq '.[1].actions[0].stats.packets')
+ if [ $pkt -gt 0 ]; then
+ tc -n $ns2 qdisc del dev ns2eth$i clsact
+ break
+ fi
+ done
+}
+
# $1: IP address
is_v6()
{
@@ -371,6 +399,9 @@ do_transfer()
if [[ "${addr_nr_ns2}" = "fullmesh_"* ]]; then
flags="${flags},fullmesh"
addr_nr_ns2=${addr_nr_ns2:9}
+ elif [[ "${addr_nr_ns2}" = "fail_"* ]]; then
+ checksum_failure ${addr_nr_ns2:5}
+ addr_nr_ns2=0
fi
if [ $addr_nr_ns2 -gt 0 ]; then
@@ -542,6 +573,8 @@ run_tests()
chk_csum_nr()
{
local msg=${1:-""}
+ local csum_ns1=${2:-0}
+ local csum_ns2=${3:-0}
local count
local dump_stats
@@ -553,8 +586,8 @@ chk_csum_nr()
printf " %-36s %s" "$msg" "sum"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtDataCsumErr | awk '{print $2}'`
[ -z "$count" ] && count=0
- if [ "$count" != 0 ]; then
- echo "[fail] got $count data checksum error[s] expected 0"
+ if [ "$count" != $csum_ns1 ]; then
+ echo "[fail] got $count data checksum error[s] expected $csum_ns1"
ret=1
dump_stats=1
else
@@ -563,8 +596,8 @@ chk_csum_nr()
echo -n " - csum "
count=`ip netns exec $ns2 nstat -as | grep MPTcpExtDataCsumErr | awk '{print $2}'`
[ -z "$count" ] && count=0
- if [ "$count" != 0 ]; then
- echo "[fail] got $count data checksum error[s] expected 0"
+ if [ "$count" != $csum_ns2 ]; then
+ echo "[fail] got $count data checksum error[s] expected $csum_ns2"
ret=1
dump_stats=1
else
@@ -658,6 +691,8 @@ chk_join_nr()
local syn_nr=$2
local syn_ack_nr=$3
local ack_nr=$4
+ local fail_nr=${5:-0}
+ local infi_nr=${6:-0}
local count
local dump_stats
@@ -700,9 +735,9 @@ chk_join_nr()
ip netns exec $ns2 nstat -as | grep MPTcp
fi
if [ $checksum -eq 1 ]; then
- chk_csum_nr
- chk_fail_nr 0 0
- chk_infi_nr 0 0
+ chk_csum_nr "" $fail_nr
+ chk_fail_nr $fail_nr $fail_nr
+ chk_infi_nr $infi_nr $infi_nr
fi
}
@@ -1837,6 +1872,25 @@ fullmesh_tests()
chk_add_nr 1 1
}
+fail_tests()
+{
+ # 1 subflow
+ reset
+ ip netns exec $ns1 ./pm_nl_ctl limits 0 2
+ ip netns exec $ns2 ./pm_nl_ctl limits 0 2
+ run_tests $ns1 $ns2 10.0.1.1 2 0 "fail_1" fast
+ chk_join_nr "MP_FAIL test, 1 subflow" 0 0 0 1 1
+
+ # multiple subflows
+ reset
+ ip netns exec $ns1 ./pm_nl_ctl limits 0 2
+ ip netns exec $ns2 ./pm_nl_ctl limits 0 2
+ ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 dev ns2eth3 flags subflow
+ ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 dev ns2eth2 flags subflow
+ run_tests $ns1 $ns2 10.0.1.1 2 0 "fail_2" fast
+ chk_join_nr "MP_FAIL test, multiple subflows" 2 2 2 1
+}
+
all_tests()
{
subflows_tests
@@ -1853,6 +1907,7 @@ all_tests()
checksum_tests
deny_join_id0_tests
fullmesh_tests
+ fail_tests
}
usage()
@@ -1872,6 +1927,7 @@ usage()
echo " -S checksum_tests"
echo " -d deny_join_id0_tests"
echo " -m fullmesh_tests"
+ echo " -F fail_tests"
echo " -c capture pcap files"
echo " -C enable data checksum"
echo " -h help"
@@ -1907,7 +1963,7 @@ if [ $do_all_tests -eq 1 ]; then
exit $ret
fi
-while getopts 'fsltra64bpkdmchCS' opt; do
+while getopts 'fsltra64bpkdmchCSF' opt; do
case $opt in
f)
subflows_tests
@@ -1951,6 +2007,9 @@ while getopts 'fsltra64bpkdmchCS' opt; do
m)
fullmesh_tests
;;
+ F)
+ fail_tests
+ ;;
c)
;;
C)
--
2.26.2
next prev parent reply other threads:[~2021-10-29 4:41 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-29 4:40 [PATCH mptcp-next v8 0/8] The infinite mapping support Geliang Tang
2021-10-29 4:40 ` [PATCH mptcp-next v8 1/8] mptcp: don't send RST for single subflow Geliang Tang
2021-10-29 4:40 ` [PATCH mptcp-next v8 2/8] mptcp: add the fallback check Geliang Tang
2021-10-29 4:40 ` [PATCH mptcp-next v8 3/8] mptcp: track and update contiguous data status Geliang Tang
2021-10-29 4:40 ` [PATCH mptcp-next v8 4/8] mptcp: infinite mapping sending Geliang Tang
2021-10-29 4:40 ` [PATCH mptcp-next v8 5/8] mptcp: infinite mapping receiving Geliang Tang
2021-10-29 4:40 ` [PATCH mptcp-next v8 6/8] mptcp: add mib for infinite map sending Geliang Tang
2021-10-29 4:40 ` [PATCH mptcp-next v8 7/8] selftests: mptcp: add infinite map mibs check Geliang Tang
2021-10-29 4:40 ` Geliang Tang [this message]
2021-10-29 10:02 ` [PATCH mptcp-next v8 8/8] selftests: mptcp: add mp_fail testcases Matthieu Baerts
2021-10-29 13:21 ` Geliang Tang
2021-10-29 14:43 ` Paolo Abeni
2021-10-29 19:51 ` Matthieu Baerts
2021-11-04 0:43 ` Mat Martineau
2021-11-04 9:14 ` Matthieu Baerts
2021-11-04 10:30 ` Geliang Tang
2021-11-04 11:48 ` Matthieu Baerts
2021-11-04 13:13 ` Geliang Tang
2021-11-04 13:50 ` Matthieu Baerts
2021-10-29 8:17 ` [PATCH mptcp-next v8 0/8] The infinite mapping support Paolo Abeni
2021-10-29 13:23 ` Geliang Tang
2021-11-05 13:05 ` Matthieu Baerts
2022-01-05 15:56 [PATCH mptcp-next v8 0/8] Clarify when options can be used Matthieu Baerts
2022-01-05 15:57 ` [PATCH mptcp-next v8 8/8] selftests: mptcp: add mp_fail testcases Matthieu Baerts
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ff613391540609e31cf4aff5abefaa03fbd63278.1635481641.git.geliang.tang@suse.com \
--to=geliang.tang@suse.com \
--cc=dcaratti@redhat.com \
--cc=matthieu.baerts@tessares.net \
--cc=mptcp@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.