From nobody Thu Nov 27 12:37:17 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 D66B92135AD for ; Sat, 8 Nov 2025 14:21:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762611687; cv=none; b=a4F8cUGKZy6B63+e2ha0E7/UQ0dYXM0pW6pYK6BDdjYZz1drAg96aEEanVxVjQ285kIXv/pQ257VGH3bZhxyPRGTTSFUlEbupbUzGb8CRzHIM0R3fmmchYpJ0MdZJ+TM34Qm2PsuIG/g+mEM0cSmf51cjBc7mOSRCWCQ37LM6Yg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762611687; c=relaxed/simple; bh=TOdRrlYJ7Ib2vzkw0+qNc47LTLLRfyL5PMSixDW2NnU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OfGK41Cy7OOuBgJCUqM0XytbD7N5jlOElHMpwIIyZM2k6+iVAeWGw6P4kR749/Vl8b+FVfjydq7qBul0GC9fMVg0wejtl8v9oDsps+hRJYC25nVhb6Cg5TyDigr+xwgZs3ak0yHTi1xPmbAMfCiQ7Sa+XT9iXn4YKY6JOvnJmmI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ssdTAMI/; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ssdTAMI/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F067CC2BC86; Sat, 8 Nov 2025 14:21:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762611687; bh=TOdRrlYJ7Ib2vzkw0+qNc47LTLLRfyL5PMSixDW2NnU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ssdTAMI/k6sKUMrvsa38c/SX++vWFcajEu7XiAjhJkgG0pEAWubOlNOQ5gcwRk6I3 daHMoJqCTJHkEaN8aYZs/dKUnWuI/N7Z4pZIHsyPA8PHYpTA9XHKrKv5+GXHWUooKI KOVOQdtUmyHAyavsR+TKAKD2mXHRHoFV/0MNsoO4U8sx9PjFgWBW7tpc3J3ebIS474 001D2pjhhyBfCYNdZsh6XPUZ5G+6PUm+2FZxkFQyMj2f8YLdikuQa2bu3/7zgo2rpZ 7+x0923Y5lfpDzW0jVTOyC29+mREKe3tG1TTZzbwxc/HTUdl+48FchqNsNml9Kh+pB E5dqDPYHUNFVA== From: "Matthieu Baerts (NGI0)" Date: Sat, 08 Nov 2025 15:20:27 +0100 Subject: [PATCH mptcp-next 1/4] selftests: mptcp: join: properly kill background tasks Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251108-slft-timeout-stats-v1-1-c2234d277318@kernel.org> References: <20251108-slft-timeout-stats-v1-0-c2234d277318@kernel.org> In-Reply-To: <20251108-slft-timeout-stats-v1-0-c2234d277318@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4413; i=matttbe@kernel.org; h=from:subject:message-id; bh=TOdRrlYJ7Ib2vzkw0+qNc47LTLLRfyL5PMSixDW2NnU=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDL5Ax8ef9/Vn5UQGVPL/JLdhTugbNO3qaXxEw/rb0hlW driq23dUcrCIMbFICumyCLdFpk/83kVb4mXnwXMHFYmkCEMXJwCMBHeFYwMd2rkEmcbPv8uea3o xJdPGs3id91lpP0+XzhWwyC89a1tGsM/hU1hSmVfprAcCIydVf00eemkee8lmM9nVXj/lDKoVlj ECQA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The 'run_tests' function is executed in the background, but killing its associated PID would not kill the children tasks running in the background. To properly kill all background tasks, 'kill -- -PID' could be used, but this requires kill from procps-ng. Instead, all children tasks are listed using 'ps', and 'kill' is called with all PIDs of this group. Fixes: 31ee4ad86afd ("selftests: mptcp: join: stop transfer when check is d= one (part 1)") Fixes: 04b57c9e096a ("selftests: mptcp: join: stop transfer when check is d= one (part 2)") Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 18 +++++++++--------- tools/testing/selftests/net/mptcp/mptcp_lib.sh | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 6afcf6ad2788..8be8bfa71946 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3995,7 +3995,7 @@ userspace_tests() chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 kill_events_pids - mptcp_lib_kill_wait $tests_pid + mptcp_lib_kill_group_wait $tests_pid fi =20 # userspace pm create destroy subflow @@ -4023,7 +4023,7 @@ userspace_tests() chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 kill_events_pids - mptcp_lib_kill_wait $tests_pid + mptcp_lib_kill_group_wait $tests_pid fi =20 # userspace pm create id 0 subflow @@ -4044,7 +4044,7 @@ userspace_tests() chk_mptcp_info subflows 1 subflows 1 chk_subflows_total 2 2 kill_events_pids - mptcp_lib_kill_wait $tests_pid + mptcp_lib_kill_group_wait $tests_pid fi =20 # userspace pm remove initial subflow @@ -4068,7 +4068,7 @@ userspace_tests() chk_mptcp_info subflows 1 subflows 1 chk_subflows_total 1 1 kill_events_pids - mptcp_lib_kill_wait $tests_pid + mptcp_lib_kill_group_wait $tests_pid fi =20 # userspace pm send RM_ADDR for ID 0 @@ -4094,7 +4094,7 @@ userspace_tests() chk_mptcp_info subflows 1 subflows 1 chk_subflows_total 1 1 kill_events_pids - mptcp_lib_kill_wait $tests_pid + mptcp_lib_kill_group_wait $tests_pid fi } =20 @@ -4124,7 +4124,7 @@ endpoint_tests() pm_nl_add_endpoint $ns2 10.0.2.2 flags signal pm_nl_check_endpoint "modif is allowed" \ $ns2 10.0.2.2 id 1 flags signal - mptcp_lib_kill_wait $tests_pid + mptcp_lib_kill_group_wait $tests_pid fi =20 if reset_with_tcp_filter "delete and re-add" ns2 10.0.3.2 REJECT OUTPUT && @@ -4179,7 +4179,7 @@ endpoint_tests() chk_mptcp_info subflows 3 subflows 3 done =20 - mptcp_lib_kill_wait $tests_pid + mptcp_lib_kill_group_wait $tests_pid =20 kill_events_pids chk_evt_nr ns1 MPTCP_LIB_EVENT_LISTENER_CREATED 1 @@ -4253,7 +4253,7 @@ endpoint_tests() wait_mpj $ns2 chk_subflow_nr "after re-re-add ID 0" 3 chk_mptcp_info subflows 3 subflows 3 - mptcp_lib_kill_wait $tests_pid + mptcp_lib_kill_group_wait $tests_pid =20 kill_events_pids chk_evt_nr ns1 MPTCP_LIB_EVENT_LISTENER_CREATED 1 @@ -4301,7 +4301,7 @@ endpoint_tests() wait_mpj $ns2 pm_nl_add_endpoint $ns1 10.0.3.1 id 2 flags signal wait_mpj $ns2 - mptcp_lib_kill_wait $tests_pid + mptcp_lib_kill_group_wait $tests_pid =20 join_syn_tx=3D3 join_connect_err=3D1 \ chk_join_nr 2 2 2 diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing= /selftests/net/mptcp/mptcp_lib.sh index ce6c92826be7..91ec75ddcb96 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -359,6 +359,27 @@ mptcp_lib_kill_wait() { wait "${1}" 2>/dev/null } =20 +# $1: PID +mptcp_lib_pid_list_children() { + local curr=3D"${1}" + # evoke 'ps' only once + local pids=3D"${2:-"$(ps o pid,ppid)"}" + + echo "${curr}" + + local pid + for pid in $(echo "${pids}" | awk "\$2 =3D=3D ${curr} { print \$1 }"); do + mptcp_lib_pid_list_children "${pid}" "${pids}" + done +} + +# $1: PID +mptcp_lib_kill_group_wait() { + # Some users might not have procps-ng: cannot use "kill -- -PID" + mptcp_lib_pid_list_children "${1}" | xargs -r kill &>/dev/null + wait "${1}" 2>/dev/null +} + # $1: IP address mptcp_lib_is_v6() { [ -z "${1##*:*}" ] --=20 2.51.0 From nobody Thu Nov 27 12:37:17 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A78572135AD for ; Sat, 8 Nov 2025 14:21:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762611688; cv=none; b=M8dJBX+y6Vz1Us6Fs60lhLTeuUws3b3erZCrmkhpNA+QZETrTbo8wNiklK3SU4esdSjJPkRtNSNxM4CGnnX5S3xuqSDt9NamiEiEQiVyDNAOk/iSN8j5C/IxNU8RuKCIZE2XcrJKsDiqvrWNakda7qRqIU13wMLbJM/fR7wEYKc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762611688; c=relaxed/simple; bh=qPv6F4mXlUcAOs87xigEJE5dZJd0but/nPFkPx6K7cA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p9AZJ0Q5aoSf1bASE7M+JgO2gnnQn2ZOf4UhMxQranAwMMSo+yHYGaCFUP7OhQUYegOQ7zSrnWtXkPlvvHe/zPfBJSiGbXSDkfn/3qUI1qT9Me65P0Pv0Bf/k01N+o4aHtmLeZwBZSVtqfrhT/DCGJdpDb7MFXpNd54cT1Vdftw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=D9j5nwaU; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="D9j5nwaU" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CA0A1C4CEF7; Sat, 8 Nov 2025 14:21:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762611688; bh=qPv6F4mXlUcAOs87xigEJE5dZJd0but/nPFkPx6K7cA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=D9j5nwaUHFfxXXd1pgQknT1gpVaWWntr3eWT4lGezFF80rC5Z8pBLgWTW23NEzV/5 Sz5msKQhLD6IECQ4rJtOB8QpRGaKRiS2HSuj2RtkE7rF2x5iXrEdkFHAy1Gm50ItdH PSFyEbg680kiV9T2o/Yc//sye+QTyJUl/xtfwCHFB68e79CMrkU4RYEatNDYnNAtCl zoSDU6ptBsnV12u0OB/iLsZcQi5WXNc3CojDfCpYq6cFrrlOYlxB/jHYmiXlx06iBV 388qmw5Emc9upEm1zkv3VoA86E283VQ3Hw/fYyDiNCsg/FqZpBEuootqd+Ir0/Vjzy eeiBM3x/k4LCA== From: "Matthieu Baerts (NGI0)" Date: Sat, 08 Nov 2025 15:20:28 +0100 Subject: [PATCH mptcp-next 2/4] selftests: mptcp: connect: avoid double packet traces Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251108-slft-timeout-stats-v1-2-c2234d277318@kernel.org> References: <20251108-slft-timeout-stats-v1-0-c2234d277318@kernel.org> In-Reply-To: <20251108-slft-timeout-stats-v1-0-c2234d277318@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1520; i=matttbe@kernel.org; h=from:subject:message-id; bh=qPv6F4mXlUcAOs87xigEJE5dZJd0but/nPFkPx6K7cA=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDL5Ax/9WJLGndybxXh7Qs+6aXfNVX3maWm8ThNw7TimF 2W8XrS8o5SFQYyLQVZMkUW6LTJ/5vMq3hIvPwuYOaxMIEMYuDgFYCL70hn+e3q8mPL7Tk/ttrAX PKkCKc+f1+yKTy3JnMCX12h2YT/DOkaG9fM8rMVmXGyZ3ui6Lq/5Zml/zPQDIozbj/a1bTCNy17 HDAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When the same netns is used for the listener and the connector, no need to take exactly the same packet trace twice, one is enough. This avoids confusions when the traces are the same, and wasting resources which might not help reproducing an issue. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_connect.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_connect.sh index 3a804abebd2c..1149bd150d6a 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh @@ -378,8 +378,10 @@ do_transfer() ip netns exec ${listener_ns} tcpdump ${capopt} -w "${capfile}-listener.= pcap" >> "${capout}" 2>&1 & local cappid_listener=3D$! =20 - ip netns exec ${connector_ns} tcpdump ${capopt} -w "${capfile}-connector= .pcap" >> "${capout}" 2>&1 & - local cappid_connector=3D$! + if [ ${listener_ns} !=3D ${connector_ns} ]; then + ip netns exec ${connector_ns} tcpdump ${capopt} -w "${capfile}-connecto= r.pcap" >> "${capout}" 2>&1 & + local cappid_connector=3D$! + fi =20 sleep 1 fi @@ -416,7 +418,9 @@ do_transfer() if $capture; then sleep 1 kill ${cappid_listener} - kill ${cappid_connector} + if [ ${listener_ns} !=3D ${connector_ns} ]; then + kill ${cappid_connector} + fi fi =20 mptcp_lib_nstat_get "${listener_ns}" --=20 2.51.0 From nobody Thu Nov 27 12:37:17 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 44B961CAA7D for ; Sat, 8 Nov 2025 14:21:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762611689; cv=none; b=sqLXi9YIGFffa7zylqcdWJz4FzMEYQhxqYJ9ZhIpUJssiJw2BsLzqnC+FCzNy6DyRpPmYV0E7yYR0a4Tm3y/8jhNw7mJTIV3Zmv55hq3Q+gvbQnfpNm83R7nD3lgMvHsFJEIGqgHXZTQ4wNZuPxABQumhzpwlST7x/3bmmea4mw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762611689; c=relaxed/simple; bh=6UxiqWQQB6hX/tOfxfSpxRRQ1SsHP7IoG34fAd4vbls=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z1V/gIFH6wCei8nSWUYG8/Pq7BpCDgFquSPy2q1SKkQCUnK0cKmg/bmA05ywotsNdsIcg6LRoAFZNmkwXKPAJtkVFckxzM9/it3uccnvjEAJu/SffzGb6g1/gMJe3YyL5Qb5OWzI0qQDkhMw8hijkdinMOEdJoaOfWqmCs4ifAg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AuGUy4l0; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AuGUy4l0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A008CC116C6; Sat, 8 Nov 2025 14:21:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762611689; bh=6UxiqWQQB6hX/tOfxfSpxRRQ1SsHP7IoG34fAd4vbls=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=AuGUy4l0jG09fNpm3LOQ3AikbYxuu/W9xpFGYlpmSTF4mCQoZUE27hjBVMG0euK+u LBdJcy7PapXg9fLoAmZMyMRyqV9WfQZC3uAji59+z21gd7ZmlSpikRv+CJNT2LTnVO mZ7fgbFgzjgqaqIGOuKyUH+8DtmK0lAaiif8o0Lbo9gUaDpswooqHttr8A1BIgit3h eksmjaJRNyVJKuw+boMViaYO6GPgz9GIHNrZK2DDtnHOo4hRlLWdd/LzfCyOEBNMMK hiktmks0bMi4iyGVxHgaJmUbrF2WPq7x7Ztba5Ulnyi4M6wllz0iBvLoFSHJ3H7opv LJdAaFkiBZAkg== From: "Matthieu Baerts (NGI0)" Date: Sat, 08 Nov 2025 15:20:29 +0100 Subject: [PATCH mptcp-next 3/4] selftests: mptcp: wait for port instead of sleep Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251108-slft-timeout-stats-v1-3-c2234d277318@kernel.org> References: <20251108-slft-timeout-stats-v1-0-c2234d277318@kernel.org> In-Reply-To: <20251108-slft-timeout-stats-v1-0-c2234d277318@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1720; i=matttbe@kernel.org; h=from:subject:message-id; bh=6UxiqWQQB6hX/tOfxfSpxRRQ1SsHP7IoG34fAd4vbls=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDL5A59ETsr5uri/9Fuv0Kz3D0uffp6aPLHyezTzEnY11 xPyOe+MOkpZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACayYw0jw6bps9fzG+zvWPN/ ua42gxBf/w9PnRJTxkduHSc22HdZbWNkeP/lsVLgTIMqSVPz2qWpPJPei/CG9hpV/y10ObhwQaI bEwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 After having started mptcp_connect in listening mode, 'mptcp_lib_wait_local_port_listen' can be used to wait for the listening socket to be ready. This is better than using the 'sleep' command, not to pause for a fixed amount of time, but waiting for an event. This helper is used in all other MPTCP selftests, but not in these two. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 2 +- tools/testing/selftests/net/mptcp/userspace_pm.sh | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_sockopt.sh index 42d533b95ec7..6cde7429104b 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh @@ -178,7 +178,7 @@ do_transfer() ${local_addr} < "$sin" > "$sout" & local spid=3D$! =20 - sleep 1 + mptcp_lib_wait_local_port_listen "${listener_ns}" "${port}" =20 timeout ${timeout_test} \ ip netns exec ${connector_ns} \ diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/test= ing/selftests/net/mptcp/userspace_pm.sh index 87323942cb8a..e9ae1806ab07 100755 --- a/tools/testing/selftests/net/mptcp/userspace_pm.sh +++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh @@ -211,7 +211,8 @@ make_connection() ip netns exec "$ns1" \ ./mptcp_connect -s MPTCP -w 300 -p $app_port -l $listen_addr > /dev/nu= ll 2>&1 & local server_pid=3D$! - sleep 0.5 + + mptcp_lib_wait_local_port_listen "${ns1}" "${port}" =20 # Run the client, transfer $file and stay connected to the server # to conduct tests --=20 2.51.0 From nobody Thu Nov 27 12:37:17 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 545811CAA7D for ; Sat, 8 Nov 2025 14:21:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762611690; cv=none; b=Lor7G7RR9k7122zH8NyOxWdtqE2V/H7uT8QE/5FYgrRRUyshHMflj9S6eoyDkOF4LelZk+Bi4zMpSSEXfecofj4/Tk5QH5Ai1GqjcOr800GdAnfe+0cC8/j1X58r5JbGLkCe93sehE6h3q9O5lz6INzVS/09K8AU+n7TzxQTFiU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762611690; c=relaxed/simple; bh=dPQo3Xsh01MNud+lvRdSjux/xoRJB+DELkWMdmulEuQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mxlK1q1wh2H8zmv5p2XIQf+7PDzXxmNU4YqMtfzjpSE+dgzLumAGxQGNUwC4fNc6YOk9zI06Odt7lQuALC2WuNihapWpJk8dV79nLehWghIX7IilLnN1KAM0TdQ2Vq6pArvx2fm84FS3zpznm6LYaS0YztcBa/5f8rXPY+vkNzg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=F9o5erBw; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="F9o5erBw" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 76154C116C6; Sat, 8 Nov 2025 14:21:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762611689; bh=dPQo3Xsh01MNud+lvRdSjux/xoRJB+DELkWMdmulEuQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=F9o5erBw8g6+R/W9cPKYcuUzhRJ+LtTxP4Rcp+2FtBEzTUhJSr8Jutz8wkA8Mu4Li xpACxAel7iXYKpvZQXzm6jvQyQulEyi6iQ7fL2J+/uWe2vJiIlzQ4VSuCmPZw4I85Q N3YLmG55p3sR82rKTZO1Zm2YL3+EBalfwBSJNtLRhSaOMfQiCufWhV0qdjKosmYPsN ZxeH3GH5nSOcjAeeVVQ+WRuEmJDtthdgWNTaHiorQm3lpPFkMZg+/yjHylxOPYFjAv PzpRW/XxTGZ+lO/L4N34spKwTYyUV0l9x5GzXKtoDKccAWwAEBpJ7YqMjN08CAxodL HjRrboCBtPq4g== From: "Matthieu Baerts (NGI0)" Date: Sat, 08 Nov 2025 15:20:30 +0100 Subject: [PATCH mptcp-next 4/4] selftests: mptcp: get stats just before timing out Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251108-slft-timeout-stats-v1-4-c2234d277318@kernel.org> References: <20251108-slft-timeout-stats-v1-0-c2234d277318@kernel.org> In-Reply-To: <20251108-slft-timeout-stats-v1-0-c2234d277318@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=10114; i=matttbe@kernel.org; h=from:subject:message-id; bh=dPQo3Xsh01MNud+lvRdSjux/xoRJB+DELkWMdmulEuQ=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDL5A5+qzOAoNN1gdPvHFPdJB9aslnKuSeJd/Fd6DWfIn cCc/xsYO0pZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACZSdJ/hf7gOk3/uP6H117Vm vV5aKXnZI2v1+n6/kwE2zVOlHh2f/YGRYW3zep5iuctv8k+wczhsd300JfJJn3XRjV27ffNO2G3 TZgAA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Recently, some debugging happened around a test that was timing out. The stats were showing connections being closed which was confusing because the closing state was caused by the timeout stopping the transfer. To avoid such confusion, the timeout is no longer done per mptcp_connect process, but separately. In case of timeout, the stats are now printed, then the apps are killed. The stats will still be printed after the kill, but that's fine, and this might even be useful, just in case. Timeout should be exceptional. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_connect.sh | 21 +++++++++------- tools/testing/selftests/net/mptcp/mptcp_join.sh | 29 +++++++++++-------= ---- tools/testing/selftests/net/mptcp/mptcp_lib.sh | 13 ++++++++++ tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 21 +++++++++------- tools/testing/selftests/net/mptcp/simult_flows.sh | 24 ++++++++++-------- 5 files changed, 66 insertions(+), 42 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_connect.sh index 1149bd150d6a..6bff77ed0a74 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh @@ -391,26 +391,29 @@ do_transfer() mptcp_lib_nstat_init "${connector_ns}" fi =20 - timeout ${timeout_test} \ - ip netns exec ${listener_ns} \ - ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \ - $extra_args $local_addr < "$sin" > "$sout" & + ip netns exec ${listener_ns} \ + ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \ + $extra_args $local_addr < "$sin" > "$sout" & local spid=3D$! =20 mptcp_lib_wait_local_port_listen "${listener_ns}" "${port}" =20 local start start=3D$(date +%s%3N) - timeout ${timeout_test} \ - ip netns exec ${connector_ns} \ - ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ - $extra_args $connect_addr < "$cin" > "$cout" & + ip netns exec ${connector_ns} \ + ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ + $extra_args $connect_addr < "$cin" > "$cout" & local cpid=3D$! =20 + mptcp_lib_wait_timeout "${timeout_test}" "${listener_ns}" \ + "${connector_ns}" "${port}" "${cpid}" "${spid}" & + local timeout_pid=3D$! + wait $cpid local retc=3D$? wait $spid local rets=3D$? + kill $timeout_pid 2>/dev/null && timeout_pid=3D0 =20 local stop stop=3D$(date +%s%3N) @@ -431,7 +434,7 @@ do_transfer() local duration duration=3D$((stop-start)) printf "(duration %05sms) " "${duration}" - if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then + if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ] || [ ${timeout_pid} -ne 0 ]; th= en mptcp_lib_pr_fail "client exit code $retc, server $rets" mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" =20 diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 8be8bfa71946..9ce386b3056c 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1041,38 +1041,38 @@ do_transfer() if [ "$test_linkfail" -gt 1 ];then listener_in=3D"${sinfail}" fi - timeout ${timeout_test} \ - ip netns exec ${listener_ns} \ - ./mptcp_connect -t ${timeout_poll} -l -p ${port} -s ${srv_proto} \ - ${extra_srv_args} "${bind_addr}" < "${listener_in}" > "${sout}" & + ip netns exec ${listener_ns} \ + ./mptcp_connect -t ${timeout_poll} -l -p ${port} -s ${srv_proto} \ + ${extra_srv_args} "${bind_addr}" < "${listener_in}" > "${sout}" & local spid=3D$! =20 mptcp_lib_wait_local_port_listen "${listener_ns}" "${port}" =20 extra_cl_args=3D"$extra_args $extra_cl_args" if [ "$test_linkfail" -eq 0 ];then - timeout ${timeout_test} \ - ip netns exec ${connector_ns} \ - ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ - $extra_cl_args $connect_addr < "$cin" > "$cout" & + ip netns exec ${connector_ns} \ + ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ + $extra_cl_args $connect_addr < "$cin" > "$cout" & elif [ "$test_linkfail" -eq 1 ] || [ "$test_linkfail" -eq 2 ];then connector_in=3D"${cinsent}" ( cat "$cinfail" ; sleep 2; link_failure $listener_ns ; cat "$cinfail" )= | \ tee "$cinsent" | \ - timeout ${timeout_test} \ ip netns exec ${connector_ns} \ ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ $extra_cl_args $connect_addr > "$cout" & else connector_in=3D"${cinsent}" tee "$cinsent" < "$cinfail" | \ - timeout ${timeout_test} \ - ip netns exec ${connector_ns} \ - ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ - $extra_cl_args $connect_addr > "$cout" & + ip netns exec ${connector_ns} \ + ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ + $extra_cl_args $connect_addr > "$cout" & fi local cpid=3D$! =20 + mptcp_lib_wait_timeout "${timeout_test}" "${listener_ns}" \ + "${connector_ns}" "${port}" "${cpid}" "${spid}" & + local timeout_pid=3D$! + pm_nl_set_endpoint $listener_ns $connector_ns $connect_addr check_cestab $listener_ns $connector_ns =20 @@ -1080,13 +1080,14 @@ do_transfer() local retc=3D$? wait $spid local rets=3D$? + kill $timeout_pid 2>/dev/null && timeout_pid=3D0 =20 cond_stop_capture =20 mptcp_lib_nstat_get "${listener_ns}" mptcp_lib_nstat_get "${connector_ns}" =20 - if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then + if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ] || [ ${timeout_pid} -ne 0 ]; th= en fail_test "client exit code $retc, server $rets" mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" return 1 diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing= /selftests/net/mptcp/mptcp_lib.sh index 91ec75ddcb96..5fea7e7df628 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -350,6 +350,19 @@ mptcp_lib_evts_get_info() { mptcp_lib_get_info_value "${1}" "^type:${3:-1}," } =20 +mptcp_lib_wait_timeout() { + local timeout_test=3D"${1}" + local listener_ns=3D"${2}" + local connector_ns=3D"${3}" + local port=3D"${4}" + shift 4 # rest are PIDs + + sleep "${timeout_test}" + mptcp_lib_print_err "timeout" + mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" + kill "${@}" 2>/dev/null +} + # $1: PID mptcp_lib_kill_wait() { [ "${1}" -eq 0 ] && return 0 diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/tes= ting/selftests/net/mptcp/mptcp_sockopt.sh index 6cde7429104b..326466f2f6eb 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh @@ -172,31 +172,34 @@ do_transfer() mptcp_lib_nstat_init "${listener_ns}" mptcp_lib_nstat_init "${connector_ns}" =20 - timeout ${timeout_test} \ - ip netns exec ${listener_ns} \ - $mptcp_connect -t ${timeout_poll} -l -M 1 -p $port -s ${srv_proto} -c "= ${cmsg}" \ - ${local_addr} < "$sin" > "$sout" & + ip netns exec ${listener_ns} \ + $mptcp_connect -t ${timeout_poll} -l -M 1 -p $port -s ${srv_proto} -c "$= {cmsg}" \ + ${local_addr} < "$sin" > "$sout" & local spid=3D$! =20 mptcp_lib_wait_local_port_listen "${listener_ns}" "${port}" =20 - timeout ${timeout_test} \ - ip netns exec ${connector_ns} \ - $mptcp_connect -t ${timeout_poll} -M 2 -p $port -s ${cl_proto} -c "${cm= sg}" \ - $connect_addr < "$cin" > "$cout" & + ip netns exec ${connector_ns} \ + $mptcp_connect -t ${timeout_poll} -M 2 -p $port -s ${cl_proto} -c "${cms= g}" \ + $connect_addr < "$cin" > "$cout" & =20 local cpid=3D$! =20 + mptcp_lib_wait_timeout "${timeout_test}" "${listener_ns}" \ + "${connector_ns}" "${port}" "${cpid}" "${spid}" & + local timeout_pid=3D$! + wait $cpid local retc=3D$? wait $spid local rets=3D$? + kill $timeout_pid 2>/dev/null && timeout_pid=3D0 =20 mptcp_lib_nstat_get "${listener_ns}" mptcp_lib_nstat_get "${connector_ns}" =20 print_title "Transfer ${ip:2}" - if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then + if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ] || [ ${timeout_pid} -ne 0 ]; th= en mptcp_lib_pr_fail "client exit code $retc, server $rets" mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" =20 diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/test= ing/selftests/net/mptcp/simult_flows.sh index 503cb59571a4..cc4d40d149e2 100755 --- a/tools/testing/selftests/net/mptcp/simult_flows.sh +++ b/tools/testing/selftests/net/mptcp/simult_flows.sh @@ -158,24 +158,27 @@ do_transfer() mptcp_lib_nstat_init "${ns3}" mptcp_lib_nstat_init "${ns1}" =20 - timeout ${timeout_test} \ - ip netns exec ${ns3} \ - ./mptcp_connect -jt ${timeout_poll} -l -p $port -T $max_time \ - 0.0.0.0 < "$sin" > "$sout" & + ip netns exec ${ns3} \ + ./mptcp_connect -jt ${timeout_poll} -l -p $port -T $max_time \ + 0.0.0.0 < "$sin" > "$sout" & local spid=3D$! =20 mptcp_lib_wait_local_port_listen "${ns3}" "${port}" =20 - timeout ${timeout_test} \ - ip netns exec ${ns1} \ - ./mptcp_connect -jt ${timeout_poll} -p $port -T $max_time \ - 10.0.3.3 < "$cin" > "$cout" & + ip netns exec ${ns1} \ + ./mptcp_connect -jt ${timeout_poll} -p $port -T $max_time \ + 10.0.3.3 < "$cin" > "$cout" & local cpid=3D$! =20 + mptcp_lib_wait_timeout "${timeout_test}" "${ns3}" "${ns1}" "${port}" \ + "${cpid}" "${spid}" & + local timeout_pid=3D$! + wait $cpid local retc=3D$? wait $spid local rets=3D$? + kill $timeout_pid 2>/dev/null && timeout_pid=3D0 =20 if $capture; then sleep 1 @@ -191,8 +194,9 @@ do_transfer() cmp $cin $sout > /dev/null 2>&1 local cmpc=3D$? =20 - if [ $retc -eq 0 ] && [ $rets -eq 0 ] && \ - [ $cmpc -eq 0 ] && [ $cmps -eq 0 ]; then + if [ $retc -eq 0 ] && [ $rets -eq 0 ] && + [ $cmpc -eq 0 ] && [ $cmps -eq 0 ] && + [ $timeout_pid -eq 0 ]; then printf "%-16s" " max $max_time " mptcp_lib_pr_ok cat "$capout" --=20 2.51.0