Commit a3735625 authored by Geliang Tang's avatar Geliang Tang Committed by Jakub Kicinski
Browse files

selftests: mptcp: make evts global in mptcp_join



This patch moves evts_ns1 and evts_ns2 out of do_transfer() as two global
variables in mptcp_join.sh. Init them in init() and remove them in
cleanup().

Add a new helper reset_with_events() to save the outputs of 'pm_nl_ctl
events' command in them. And a new helper kill_events_pids() to kill
pids of 'pm_nl_ctl events' command. Use these helpers in userspace pm
tests.

Suggested-by: default avatarPaolo Abeni <pabeni@redhat.com>
Signed-off-by: default avatarGeliang Tang <geliang.tang@suse.com>
Acked-by: default avatarPaolo Abeni <pabeni@redhat.com>
Signed-off-by: default avatarMatthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 6c73008a
Loading
Loading
Loading
Loading
+29 −23
Original line number Diff line number Diff line
@@ -26,6 +26,10 @@ ip_mptcp=0
check_invert=0
validate_checksum=0
init=0
evts_ns1=""
evts_ns2=""
evts_ns1_pid=0
evts_ns2_pid=0

declare -A all_tests
declare -a only_tests_ids
@@ -154,6 +158,8 @@ init() {
	cin=$(mktemp)
	cinsent=$(mktemp)
	cout=$(mktemp)
	evts_ns1=$(mktemp)
	evts_ns2=$(mktemp)

	trap cleanup EXIT

@@ -165,6 +171,7 @@ cleanup()
{
	rm -f "$cin" "$cout" "$sinfail"
	rm -f "$sin" "$sout" "$cinsent" "$cinfail"
	rm -rf $evts_ns1 $evts_ns2
	cleanup_partial
}

@@ -320,6 +327,18 @@ reset_with_fail()
		index 100 || exit 1
}

reset_with_events()
{
	reset "${1}" || return 1

	:> "$evts_ns1"
	:> "$evts_ns2"
	ip netns exec $ns1 ./pm_nl_ctl events >> "$evts_ns1" 2>&1 &
	evts_ns1_pid=$!
	ip netns exec $ns2 ./pm_nl_ctl events >> "$evts_ns2" 2>&1 &
	evts_ns2_pid=$!
}

fail_test()
{
	ret=1
@@ -473,6 +492,12 @@ kill_wait()
	wait $1 2>/dev/null
}

kill_events_pids()
{
	kill_wait $evts_ns1_pid
	kill_wait $evts_ns2_pid
}

pm_nl_set_limits()
{
	local ns=$1
@@ -673,10 +698,6 @@ do_transfer()
	local port=$((10000 + TEST_COUNT - 1))
	local cappid
	local userspace_pm=0
	local evts_ns1
	local evts_ns1_pid
	local evts_ns2
	local evts_ns2_pid

	:> "$cout"
	:> "$sout"
@@ -753,17 +774,6 @@ do_transfer()
		addr_nr_ns2=${addr_nr_ns2:9}
	fi

	if [ $userspace_pm -eq 1 ]; then
		evts_ns1=$(mktemp)
		evts_ns2=$(mktemp)
		:> "$evts_ns1"
		:> "$evts_ns2"
		ip netns exec ${listener_ns} ./pm_nl_ctl events >> "$evts_ns1" 2>&1 &
		evts_ns1_pid=$!
		ip netns exec ${connector_ns} ./pm_nl_ctl events >> "$evts_ns2" 2>&1 &
		evts_ns2_pid=$!
	fi

	local local_addr
	if is_v6 "${connect_addr}"; then
		local_addr="::"
@@ -982,12 +992,6 @@ do_transfer()
	    kill $cappid
	fi

	if [ $userspace_pm -eq 1 ]; then
		kill_wait $evts_ns1_pid
		kill_wait $evts_ns2_pid
		rm -rf $evts_ns1 $evts_ns2
	fi

	NSTAT_HISTORY=/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \
		nstat | grep Tcp > /tmp/${listener_ns}.out
	NSTAT_HISTORY=/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \
@@ -2961,22 +2965,24 @@ userspace_tests()
	fi

	# userspace pm add & remove address
	if reset "userspace pm add & remove address"; then
	if reset_with_events "userspace pm add & remove address"; then
		set_userspace_pm $ns1
		pm_nl_set_limits $ns2 1 1
		run_tests $ns1 $ns2 10.0.1.1 0 userspace_1 0 slow
		chk_join_nr 1 1 1
		chk_add_nr 1 1
		chk_rm_nr 1 1 invert
		kill_events_pids
	fi

	# userspace pm create destroy subflow
	if reset "userspace pm create destroy subflow"; then
	if reset_with_events "userspace pm create destroy subflow"; then
		set_userspace_pm $ns2
		pm_nl_set_limits $ns1 0 1
		run_tests $ns1 $ns2 10.0.1.1 0 0 userspace_1 slow
		chk_join_nr 1 1 1
		chk_rm_nr 0 1
		kill_events_pids
	fi
}