Commit 97040cf9 authored by Geliang Tang's avatar Geliang Tang Committed by David S. Miller
Browse files

selftests: mptcp: userspace pm address tests



This patch adds userspace pm tests support for mptcp_join.sh script. Add
userspace pm add_addr and rm_addr test cases in userspace_tests().

Reviewed-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: default avatarGeliang Tang <geliang.tang@suse.com>
Signed-off-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d0d9c8f2
Loading
Loading
Loading
Loading
+48 −1
Original line number Diff line number Diff line
@@ -455,6 +455,12 @@ wait_mpj()
	done
}

kill_wait()
{
	kill $1 > /dev/null 2>&1
	wait $1 2>/dev/null
}

pm_nl_set_limits()
{
	local ns=$1
@@ -654,6 +660,9 @@ do_transfer()

	local port=$((10000 + TEST_COUNT - 1))
	local cappid
	local userspace_pm=0
	local evts_ns1
	local evts_ns1_pid

	:> "$cout"
	:> "$sout"
@@ -690,12 +699,24 @@ do_transfer()
		extra_args="-r ${speed:6}"
	fi

	if [[ "${addr_nr_ns1}" = "userspace_"* ]]; then
		userspace_pm=1
		addr_nr_ns1=${addr_nr_ns1:10}
	fi

	if [[ "${addr_nr_ns2}" = "fastclose_"* ]]; then
		# disconnect
		extra_args="$extra_args -I ${addr_nr_ns2:10}"
		addr_nr_ns2=0
	fi

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

	local local_addr
	if is_v6 "${connect_addr}"; then
		local_addr="::"
@@ -748,6 +769,8 @@ do_transfer()
	if [ $addr_nr_ns1 -gt 0 ]; then
		local counter=2
		local add_nr_ns1=${addr_nr_ns1}
		local id=10
		local tk
		while [ $add_nr_ns1 -gt 0 ]; do
			local addr
			if is_v6 "${connect_addr}"; then
@@ -755,9 +778,18 @@ do_transfer()
			else
				addr="10.0.$counter.1"
			fi
			if [ $userspace_pm -eq 0 ]; then
				pm_nl_add_endpoint $ns1 $addr flags signal
			else
				tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns1")
				ip netns exec ${listener_ns} ./pm_nl_ctl ann $addr token $tk id $id
				sleep 1
				ip netns exec ${listener_ns} ./pm_nl_ctl rem token $tk id $id
			fi

			counter=$((counter + 1))
			add_nr_ns1=$((add_nr_ns1 - 1))
			id=$((id + 1))
		done
	elif [ $addr_nr_ns1 -lt 0 ]; then
		local rm_nr_ns1=$((-addr_nr_ns1))
@@ -890,6 +922,11 @@ do_transfer()
	    kill $cappid
	fi

	if [ $userspace_pm -eq 1 ]; then
		kill_wait $evts_ns1_pid
		rm -rf $evts_ns1
	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} \
@@ -2810,6 +2847,16 @@ userspace_tests()
		chk_join_nr 0 0 0
		chk_rm_nr 0 0
	fi

	# userspace pm add & remove address
	if reset "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
	fi
}

endpoint_tests()