From nobody Sun Feb 8 12:58:27 2026 Received: from out-180.mta1.migadu.com (out-180.mta1.migadu.com [95.215.58.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8A1D714F90 for ; Tue, 5 Dec 2023 07:03:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="vqdzGXZz" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1701759795; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qDuh/kD9ZVLJ4fs2iSO2L6o7AhmT+uaeGHcFWCtkQoU=; b=vqdzGXZzjoQHQDPsBGnUflVX9wIB8qUMZVlh5rdk0Lp+bS38OeBd23MYaHWKvL4nGLRgC8 yMsw/hTjamqYTR6liuGMMGdZvoo8LnMJmlnPT2SbFpnapvCrZvhkKCpfC3O7iXV+66Jjwu wqCGABuqig0EUal7sVhlfYJHWoDSq+I= From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 01/33] selftests: mptcp: add mptcp_lib_evts_* helpers Date: Tue, 5 Dec 2023 15:00:48 +0800 Message-Id: <0fa2a8e5db28ba25ca60f672649cbf91ad7cc603.1701759405.git.geliang.tang@linux.dev> In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" To avoid duplicated code in different MPTCP selftests, we can add and use helpers defined in mptcp_lib.sh. This patch unifies "pm_nl_ctl events" related code in userspace_pm.sh and mptcp_join.sh into four helpers: mptcp_lib_evts_init(), _start(), _kill() and _remove(). Define them in mptcp_lib.sh and use these new helpers in both scripts. Signed-off-by: Geliang Tang --- .../testing/selftests/net/mptcp/mptcp_join.sh | 58 +++++++---------- .../testing/selftests/net/mptcp/mptcp_lib.sh | 63 +++++++++++++++++++ .../selftests/net/mptcp/userspace_pm.sh | 31 ++------- 3 files changed, 90 insertions(+), 62 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 6d81e6e1de52..b586bc404668 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -34,10 +34,6 @@ ip_mptcp=3D0 check_invert=3D0 validate_checksum=3D0 init=3D0 -evts_ns1=3D"" -evts_ns2=3D"" -evts_ns1_pid=3D0 -evts_ns2_pid=3D0 last_test_failed=3D0 last_test_skipped=3D0 last_test_ignored=3D1 @@ -183,8 +179,7 @@ init() { cin=3D$(mktemp) cinsent=3D$(mktemp) cout=3D$(mktemp) - evts_ns1=3D$(mktemp) - evts_ns2=3D$(mktemp) + mptcp_lib_evts_init =20 trap cleanup EXIT =20 @@ -197,7 +192,7 @@ cleanup() rm -f "$cin" "$cout" "$sinfail" rm -f "$sin" "$sout" "$cinsent" "$cinfail" rm -f "$tmpfile" - rm -rf $evts_ns1 $evts_ns2 + mptcp_lib_evts_remove cleanup_partial mptcp_lib_cleanup } @@ -462,12 +457,7 @@ reset_with_events() { reset "${1}" || return 1 =20 - :> "$evts_ns1" - :> "$evts_ns2" - ip netns exec $ns1 ./pm_nl_ctl events >> "$evts_ns1" 2>&1 & - evts_ns1_pid=3D$! - ip netns exec $ns2 ./pm_nl_ctl events >> "$evts_ns2" 2>&1 & - evts_ns2_pid=3D$! + mptcp_lib_evts_start "${ns1}" "${ns2}" } =20 reset_with_tcp_filter() @@ -637,12 +627,6 @@ wait_mpj() done } =20 -kill_events_pids() -{ - mptcp_lib_kill_wait $evts_ns1_pid - mptcp_lib_kill_wait $evts_ns2_pid -} - kill_tests_wait() { #shellcheck disable=3DSC2046 @@ -2918,9 +2902,9 @@ add_addr_ports_tests() chk_add_nr 1 1 1 chk_rm_nr 1 1 invert =20 - verify_listener_events $evts_ns1 $LISTENER_CREATED $AF_INET 10.0.2.1 101= 00 - verify_listener_events $evts_ns1 $LISTENER_CLOSED $AF_INET 10.0.2.1 10100 - kill_events_pids + verify_listener_events $server_evts $LISTENER_CREATED $AF_INET 10.0.2.1 = 10100 + verify_listener_events $server_evts $LISTENER_CLOSED $AF_INET 10.0.2.1 1= 0100 + mptcp_lib_evts_kill fi =20 # subflow and signal with port, remove @@ -3293,10 +3277,10 @@ fail_tests() # $1: ns ; $2: addr ; $3: id userspace_pm_add_addr() { - local evts=3D$evts_ns1 + local evts=3D$server_evts local tk =20 - [ "$1" =3D=3D "$ns2" ] && evts=3D$evts_ns2 + [ "$1" =3D=3D "$ns2" ] && evts=3D$client_evts tk=3D$(mptcp_lib_evts_get_info token "$evts") =20 ip netns exec $1 ./pm_nl_ctl ann $2 token $tk id $3 @@ -3306,11 +3290,11 @@ userspace_pm_add_addr() # $1: ns ; $2: id userspace_pm_rm_addr() { - local evts=3D$evts_ns1 + local evts=3D$server_evts local tk local cnt =20 - [ "$1" =3D=3D "$ns2" ] && evts=3D$evts_ns2 + [ "$1" =3D=3D "$ns2" ] && evts=3D$client_evts tk=3D$(mptcp_lib_evts_get_info token "$evts") =20 cnt=3D$(rm_addr_count ${1}) @@ -3321,10 +3305,10 @@ userspace_pm_rm_addr() # $1: ns ; $2: addr ; $3: id userspace_pm_add_sf() { - local evts=3D$evts_ns1 + local evts=3D$server_evts local tk da dp =20 - [ "$1" =3D=3D "$ns2" ] && evts=3D$evts_ns2 + [ "$1" =3D=3D "$ns2" ] && evts=3D$client_evts tk=3D$(mptcp_lib_evts_get_info token "$evts") da=3D$(mptcp_lib_evts_get_info daddr4 "$evts") dp=3D$(mptcp_lib_evts_get_info dport "$evts") @@ -3337,13 +3321,13 @@ userspace_pm_add_sf() # $1: ns ; $2: addr $3: event type userspace_pm_rm_sf() { - local evts=3D$evts_ns1 + local evts=3D$server_evts local t=3D${3:-1} local ip local tk da dp sp local cnt =20 - [ "$1" =3D=3D "$ns2" ] && evts=3D$evts_ns2 + [ "$1" =3D=3D "$ns2" ] && evts=3D$client_evts [ -n "$(mptcp_lib_evts_get_info "saddr4" "$evts" $t)" ] && ip=3D4 [ -n "$(mptcp_lib_evts_get_info "saddr6" "$evts" $t)" ] && ip=3D6 tk=3D$(mptcp_lib_evts_get_info token "$evts") @@ -3457,7 +3441,7 @@ userspace_tests() chk_rm_nr 1 1 invert chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 - kill_events_pids + mptcp_lib_evts_kill wait $tests_pid fi =20 @@ -3479,7 +3463,7 @@ userspace_tests() chk_rm_nr 1 1 chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 - kill_events_pids + mptcp_lib_evts_kill wait $tests_pid fi =20 @@ -3500,7 +3484,7 @@ userspace_tests() chk_join_nr 1 1 1 chk_mptcp_info subflows 1 subflows 1 chk_subflows_total 2 2 - kill_events_pids + mptcp_lib_evts_kill wait $tests_pid fi =20 @@ -3524,7 +3508,7 @@ userspace_tests() chk_rst_nr 0 0 invert chk_mptcp_info subflows 1 subflows 1 chk_subflows_total 1 1 - kill_events_pids + mptcp_lib_evts_kill wait $tests_pid fi =20 @@ -3550,7 +3534,7 @@ userspace_tests() chk_rst_nr 0 0 invert chk_mptcp_info subflows 1 subflows 1 chk_subflows_total 1 1 - kill_events_pids + mptcp_lib_evts_kill wait $tests_pid fi =20 @@ -3579,7 +3563,7 @@ userspace_tests() chk_rm_nr 1 1 invert chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 - kill_events_pids + mptcp_lib_evts_kill wait $tests_pid fi =20 @@ -3608,7 +3592,7 @@ userspace_tests() chk_rm_nr 1 1 chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 - kill_events_pids + mptcp_lib_evts_kill wait $tests_pid fi } diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing= /selftests/net/mptcp/mptcp_lib.sh index a28b480e164b..a41da009962f 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -329,6 +329,69 @@ mptcp_lib_check_output() { fi } =20 +server_evts=3D"" +client_evts=3D"" +server_evts_pid=3D0 +client_evts_pid=3D0 + +# server_evts(_pid) and client_evts(_pid) are needed +# by mptcp_lib_evts_init, _start, _kill and _remove. +mptcp_lib_evts_init() { + : "${server_evts?}" + : "${client_evts?}" + + if [ -z "${server_evts}" ]; then + server_evts=3D$(mktemp) + fi + if [ -z "${client_evts}" ]; then + client_evts=3D$(mktemp) + fi +} + +# $1 ns1, $2 ns2 +mptcp_lib_evts_start() { + : "${server_evts:?}" + : "${client_evts:?}" + : "${server_evts_pid:?}" + : "${client_evts_pid:?}" + + local ns_1=3D"${1}" + local ns_2=3D"${2}" + + :>"$server_evts" + :>"$client_evts" + + if [ "${server_evts_pid}" -ne 0 ]; then + mptcp_lib_kill_wait "${server_evts_pid}" + fi + ip netns exec "${ns_1}" ./pm_nl_ctl events >> "${server_evts}" 2>&1 & + server_evts_pid=3D$! + + if [ "${client_evts_pid}" -ne 0 ]; then + mptcp_lib_kill_wait "${client_evts_pid}" + fi + ip netns exec "${ns_2}" ./pm_nl_ctl events >> "${client_evts}" 2>&1 & + client_evts_pid=3D$! +} + +mptcp_lib_evts_kill() { + : "${server_evts_pid:?}" + : "${client_evts_pid:?}" + + mptcp_lib_kill_wait "${server_evts_pid}" + mptcp_lib_kill_wait "${client_evts_pid}" + + server_evts_pid=3D0 + client_evts_pid=3D0 +} + +mptcp_lib_evts_remove() { + : "${server_evts:?}" + : "${client_evts:?}" + + rm -rf "${server_evts}" "${client_evts}" +} + mptcp_lib_cleanup() { : "${check_output_err:?}" =20 diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/test= ing/selftests/net/mptcp/userspace_pm.sh index b2b132f61f1f..e78fcd3bff16 100755 --- a/tools/testing/selftests/net/mptcp/userspace_pm.sh +++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh @@ -34,10 +34,6 @@ AF_INET=3D2 AF_INET6=3D10 =20 file=3D"" -server_evts=3D"" -client_evts=3D"" -server_evts_pid=3D0 -client_evts_pid=3D0 client4_pid=3D0 server4_pid=3D0 client6_pid=3D0 @@ -115,18 +111,19 @@ cleanup() =20 # Terminate the MPTCP connection and related processes local pid - for pid in $client4_pid $server4_pid $client6_pid $server6_pid\ - $server_evts_pid $client_evts_pid + for pid in $client4_pid $server4_pid $client6_pid $server6_pid do mptcp_lib_kill_wait $pid done + mptcp_lib_evts_kill =20 local netns for netns in "$ns1" "$ns2" ;do ip netns del "$netns" done =20 - rm -rf $file $client_evts $server_evts + rm -rf $file + mptcp_lib_evts_remove =20 mptcp_lib_cleanup _printf "Done\n" @@ -186,24 +183,8 @@ make_connection() =20 # Capture netlink events over the two network namespaces running # the MPTCP client and server - if [ -z "$client_evts" ]; then - client_evts=3D$(mktemp) - fi - :>"$client_evts" - if [ $client_evts_pid -ne 0 ]; then - mptcp_lib_kill_wait $client_evts_pid - fi - ip netns exec "$ns2" ./pm_nl_ctl events >> "$client_evts" 2>&1 & - client_evts_pid=3D$! - if [ -z "$server_evts" ]; then - server_evts=3D$(mktemp) - fi - :>"$server_evts" - if [ $server_evts_pid -ne 0 ]; then - mptcp_lib_kill_wait $server_evts_pid - fi - ip netns exec "$ns1" ./pm_nl_ctl events >> "$server_evts" 2>&1 & - server_evts_pid=3D$! + mptcp_lib_evts_init + mptcp_lib_evts_start "${ns1}" "${ns2}" sleep 0.5 =20 # Run the server --=20 2.35.3