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:
parent
502c65af26
commit
1002b89f23
1 changed files with 589 additions and 477 deletions
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue