1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00

selftests: mptcp: add command line arguments for mptcp_join.sh

Since the mptcp_join script is becoming too big, this patch splits it
into several smaller chunks, each of them has been defined in a function
as a individual test group for several related testcases.

Using bash getopts function to parse command line arguments, and invoke
each function to do the individual test group.

Here are all the arguments:
  -f subflows_tests
  -s signal_address_tests
  -l link_failure_tests
  -t add_addr_timeout_tests
  -r remove_tests
  -a add_tests
  -6 ipv6_tests
  -4 v4mapped_tests
  -b backup_tests
  -p add_addr_ports_tests
  -c syncookies_tests
  -h help

Run mptcp_join.sh with no argument will execute all testcases.

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>
This commit is contained in:
Geliang Tang 2021-02-04 15:23:29 -08:00 committed by Jakub Kicinski
parent 502c65af26
commit 1002b89f23

View file

@ -680,26 +680,19 @@ chk_prio_nr()
fi fi
} }
sin=$(mktemp) subflows_tests()
sout=$(mktemp) {
cin=$(mktemp) reset
cinsent=$(mktemp)
cout=$(mktemp)
init
make_file "$cin" "client" 1
make_file "$sin" "server" 1
trap cleanup EXIT
run_tests $ns1 $ns2 10.0.1.1 run_tests $ns1 $ns2 10.0.1.1
chk_join_nr "no JOIN" "0" "0" "0" chk_join_nr "no JOIN" "0" "0" "0"
# subflow limted by client # subflow limited by client
reset reset
ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
run_tests $ns1 $ns2 10.0.1.1 run_tests $ns1 $ns2 10.0.1.1
chk_join_nr "single subflow, limited by client" 0 0 0 chk_join_nr "single subflow, limited by client" 0 0 0
# subflow limted by server # subflow limited by server
reset reset
ip netns exec $ns2 ./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 ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
@ -731,7 +724,10 @@ ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow
run_tests $ns1 $ns2 10.0.1.1 run_tests $ns1 $ns2 10.0.1.1
chk_join_nr "multiple subflows, limited by server" 2 2 1 chk_join_nr "multiple subflows, limited by server" 2 2 1
}
signal_address_tests()
{
# add_address, unused # add_address, unused
reset reset
ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
@ -771,7 +767,10 @@ ip netns exec $ns2 ./pm_nl_ctl add 10.0.4.2 flags subflow
run_tests $ns1 $ns2 10.0.1.1 run_tests $ns1 $ns2 10.0.1.1
chk_join_nr "multiple subflows and signal" 3 3 3 chk_join_nr "multiple subflows and signal" 3 3 3
chk_add_nr 1 1 chk_add_nr 1 1
}
link_failure_tests()
{
# accept and use add_addr with additional subflows and link loss # accept and use add_addr with additional subflows and link loss
reset reset
ip netns exec $ns1 ./pm_nl_ctl limits 0 3 ip netns exec $ns1 ./pm_nl_ctl limits 0 3
@ -782,7 +781,10 @@ ip netns exec $ns2 ./pm_nl_ctl add 10.0.4.2 flags subflow
run_tests $ns1 $ns2 10.0.1.1 1 run_tests $ns1 $ns2 10.0.1.1 1
chk_join_nr "multiple flows, signal, link failure" 3 3 3 chk_join_nr "multiple flows, signal, link failure" 3 3 3
chk_add_nr 1 1 chk_add_nr 1 1
}
add_addr_timeout_tests()
{
# add_addr timeout # add_addr timeout
reset_with_add_addr_timeout reset_with_add_addr_timeout
ip netns exec $ns1 ./pm_nl_ctl limits 0 1 ip netns exec $ns1 ./pm_nl_ctl limits 0 1
@ -792,6 +794,18 @@ run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow
chk_join_nr "signal address, ADD_ADDR timeout" 1 1 1 chk_join_nr "signal address, ADD_ADDR timeout" 1 1 1
chk_add_nr 4 0 chk_add_nr 4 0
# add_addr timeout IPv6
reset_with_add_addr_timeout 6
ip netns exec $ns1 ./pm_nl_ctl limits 0 1
ip netns exec $ns2 ./pm_nl_ctl limits 1 1
ip netns exec $ns1 ./pm_nl_ctl add dead:beef:2::1 flags signal
run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow
chk_join_nr "signal address, ADD_ADDR6 timeout" 1 1 1
chk_add_nr 4 0
}
remove_tests()
{
# single subflow, remove # single subflow, remove
reset reset
ip netns exec $ns1 ./pm_nl_ctl limits 0 1 ip netns exec $ns1 ./pm_nl_ctl limits 0 1
@ -855,7 +869,10 @@ run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow
chk_join_nr "flush subflows and signal" 3 3 3 chk_join_nr "flush subflows and signal" 3 3 3
chk_add_nr 1 1 chk_add_nr 1 1
chk_rm_nr 2 2 chk_rm_nr 2 2
}
add_tests()
{
# add single subflow # add single subflow
reset reset
ip netns exec $ns1 ./pm_nl_ctl limits 0 1 ip netns exec $ns1 ./pm_nl_ctl limits 0 1
@ -892,7 +909,10 @@ ip netns exec $ns2 ./pm_nl_ctl limits 2 2
run_tests $ns1 $ns2 dead:beef:1::1 0 2 0 slow run_tests $ns1 $ns2 dead:beef:1::1 0 2 0 slow
chk_join_nr "add multiple addresses IPv6" 2 2 2 chk_join_nr "add multiple addresses IPv6" 2 2 2
chk_add_nr 2 2 chk_add_nr 2 2
}
ipv6_tests()
{
# subflow IPv6 # subflow IPv6
reset reset
ip netns exec $ns1 ./pm_nl_ctl limits 0 1 ip netns exec $ns1 ./pm_nl_ctl limits 0 1
@ -917,15 +937,6 @@ run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow
chk_join_nr "single address IPv6" 1 1 1 chk_join_nr "single address IPv6" 1 1 1
chk_add_nr 1 1 chk_add_nr 1 1
# add_addr timeout IPv6
reset_with_add_addr_timeout 6
ip netns exec $ns1 ./pm_nl_ctl limits 0 1
ip netns exec $ns2 ./pm_nl_ctl limits 1 1
ip netns exec $ns1 ./pm_nl_ctl add dead:beef:2::1 flags signal
run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow
chk_join_nr "signal address, ADD_ADDR6 timeout" 1 1 1
chk_add_nr 4 0
# single address IPv6, remove # single address IPv6, remove
reset reset
ip netns exec $ns1 ./pm_nl_ctl limits 0 1 ip netns exec $ns1 ./pm_nl_ctl limits 0 1
@ -946,7 +957,10 @@ run_tests $ns1 $ns2 dead:beef:1::1 0 -1 -1 slow
chk_join_nr "remove subflow and signal IPv6" 2 2 2 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
}
v4mapped_tests()
{
# subflow IPv4-mapped to IPv4-mapped # subflow IPv4-mapped to IPv4-mapped
reset reset
ip netns exec $ns1 ./pm_nl_ctl limits 0 1 ip netns exec $ns1 ./pm_nl_ctl limits 0 1
@ -1021,7 +1035,10 @@ ip netns exec $ns2 ./pm_nl_ctl limits 0 1
ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
run_tests $ns1 $ns2 dead:beef:1::1 run_tests $ns1 $ns2 dead:beef:1::1
chk_join_nr "no JOIN with diff families v6-v4" 0 0 0 chk_join_nr "no JOIN with diff families v6-v4" 0 0 0
}
backup_tests()
{
# single subflow, backup # single subflow, backup
reset reset
ip netns exec $ns1 ./pm_nl_ctl limits 0 1 ip netns exec $ns1 ./pm_nl_ctl limits 0 1
@ -1040,7 +1057,10 @@ run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup
chk_join_nr "single address, backup" 1 1 1 chk_join_nr "single address, backup" 1 1 1
chk_add_nr 1 1 chk_add_nr 1 1
chk_prio_nr 1 0 chk_prio_nr 1 0
}
add_addr_ports_tests()
{
# signal address with port # signal address with port
reset reset
ip netns exec $ns1 ./pm_nl_ctl limits 0 1 ip netns exec $ns1 ./pm_nl_ctl limits 0 1
@ -1112,7 +1132,10 @@ ip netns exec $ns2 ./pm_nl_ctl limits 2 2
run_tests $ns1 $ns2 10.0.1.1 run_tests $ns1 $ns2 10.0.1.1
chk_join_nr "multiple addresses with ports" 2 2 2 chk_join_nr "multiple addresses with ports" 2 2 2
chk_add_nr 2 2 2 chk_add_nr 2 2 2
}
syncookies_tests()
{
# 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
@ -1168,5 +1191,94 @@ ip netns exec $ns2 ./pm_nl_ctl add 10.0.4.2 flags subflow
run_tests $ns1 $ns2 10.0.1.1 run_tests $ns1 $ns2 10.0.1.1
chk_join_nr "subflows and signal w. cookies" 3 3 3 chk_join_nr "subflows and signal w. cookies" 3 3 3
chk_add_nr 1 1 chk_add_nr 1 1
}
all_tests()
{
subflows_tests
signal_address_tests
link_failure_tests
add_addr_timeout_tests
remove_tests
add_tests
ipv6_tests
v4mapped_tests
backup_tests
add_addr_ports_tests
syncookies_tests
}
usage()
{
echo "mptcp_join usage:"
echo " -f subflows_tests"
echo " -s signal_address_tests"
echo " -l link_failure_tests"
echo " -t add_addr_timeout_tests"
echo " -r remove_tests"
echo " -a add_tests"
echo " -6 ipv6_tests"
echo " -4 v4mapped_tests"
echo " -b backup_tests"
echo " -p add_addr_ports_tests"
echo " -c syncookies_tests"
echo " -h help"
}
sin=$(mktemp)
sout=$(mktemp)
cin=$(mktemp)
cinsent=$(mktemp)
cout=$(mktemp)
init
make_file "$cin" "client" 1
make_file "$sin" "server" 1
trap cleanup EXIT
if [ -z $1 ]; then
all_tests
exit $ret
fi
while getopts 'fsltra64bpch' opt; do
case $opt in
f)
subflows_tests
;;
s)
signal_address_tests
;;
l)
link_failure_tests
;;
t)
add_addr_timeout_tests
;;
r)
remove_tests
;;
a)
add_tests
;;
6)
ipv6_tests
;;
4)
v4mapped_tests
;;
b)
backup_tests
;;
p)
add_addr_ports_tests
;;
c)
syncookies_tests
;;
h | *)
usage
;;
esac
done
exit $ret exit $ret