Commit 3afd0280 authored by Matthieu Baerts's avatar Matthieu Baerts Committed by Jakub Kicinski
Browse files

selftests: mptcp: join: define tests groups once



When adding a new tests group, it has to be defined in multiple places:

- in the all_tests() function
- in the 'usage()' function
- in the getopts: short option + what to do when the option is used

Because it is easy to forget one of them, it is useful to have to define
them only once.

Note: only using an associative array would simplify the code but the
entries are stored in a hashtable and iterating over the different items
doesn't give the same order as the one used in the declaration of this
array. Because we want to run these tests in the same order as before, a
"simple" array is used first.

Signed-off-by: default avatarMatthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 3c082695
Loading
Loading
Loading
Loading
+47 −94
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ check_invert=0
validate_checksum=0
init=0

declare -A all_tests
TEST_COUNT=0
nr_blank=40

@@ -2380,27 +2381,6 @@ implicit_tests()
	wait
}

all_tests()
{
	subflows_tests
	subflows_error_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
	checksum_tests
	deny_join_id0_tests
	fullmesh_tests
	fastclose_tests
	implicit_tests
}

# [$1: error message]
usage()
{
@@ -2410,23 +2390,12 @@ usage()
	fi

	echo "mptcp_join usage:"
	echo "  -f subflows_tests"
	echo "  -e subflows_error_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 "  -k syncookies_tests"
	echo "  -S checksum_tests"
	echo "  -d deny_join_id0_tests"
	echo "  -m fullmesh_tests"
	echo "  -z fastclose_tests"
	echo "  -I implicit_tests"

	local key
	for key in "${!all_tests[@]}"; do
		echo "  -${key} ${all_tests[${key}]}"
	done

	echo "  -c capture pcap files"
	echo "  -C enable data checksum"
	echo "  -i use ip mptcp"
@@ -2436,59 +2405,43 @@ usage()
}


# Use a "simple" array to force an specific order we cannot have with an associative one
all_tests_sorted=(
	f@subflows_tests
	e@subflows_error_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
	k@syncookies_tests
	S@checksum_tests
	d@deny_join_id0_tests
	m@fullmesh_tests
	z@fastclose_tests
	I@implicit_tests
)

all_tests_args=""
all_tests_names=()
for subtests in "${all_tests_sorted[@]}"; do
	key="${subtests%@*}"
	value="${subtests#*@}"

	all_tests_args+="${key}"
	all_tests_names+=("${value}")
	all_tests[${key}]="${value}"
done

tests=()
while getopts 'fesltra64bpkdmchzICSi' opt; do
while getopts "${all_tests_args}cCih" opt; do
	case $opt in
		f)
			tests+=(subflows_tests)
			;;
		e)
			tests+=(subflows_error_tests)
			;;
		s)
			tests+=(signal_address_tests)
			;;
		l)
			tests+=(link_failure_tests)
			;;
		t)
			tests+=(add_addr_timeout_tests)
			;;
		r)
			tests+=(remove_tests)
			;;
		a)
			tests+=(add_tests)
			;;
		6)
			tests+=(ipv6_tests)
			;;
		4)
			tests+=(v4mapped_tests)
			;;
		b)
			tests+=(backup_tests)
			;;
		p)
			tests+=(add_addr_ports_tests)
			;;
		k)
			tests+=(syncookies_tests)
			;;
		S)
			tests+=(checksum_tests)
			;;
		d)
			tests+=(deny_join_id0_tests)
			;;
		m)
			tests+=(fullmesh_tests)
			;;
		z)
			tests+=(fastclose_tests)
			;;
		I)
			tests+=(implicit_tests)
		["${all_tests_args}"])
			tests+=("${all_tests[${opt}]}")
			;;
		c)
			capture=1
@@ -2509,11 +2462,11 @@ while getopts 'fesltra64bpkdmchzICSi' opt; do
done

if [ ${#tests[@]} -eq 0 ]; then
	all_tests
else
	tests=("${all_tests_names[@]}")
fi

for subtests in "${tests[@]}"; do
	"${subtests}"
done
fi

exit $ret