From nobody Wed May 1 06:39:15 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp5905094jap; Mon, 13 Dec 2021 09:41:09 -0800 (PST) X-Google-Smtp-Source: ABdhPJyhySv1N9TbAsKSeC1dXMXK9S710yAkVmAWcF5n4JMfuCQUxsgQ9akUei/CAZ8Be/kuc0UU X-Received: by 2002:ac8:7f51:: with SMTP id g17mr158319qtk.425.1639417259798; Mon, 13 Dec 2021 09:40:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639417259; cv=none; d=google.com; s=arc-20160816; b=fCGtVoSE6kIFE8hO90ADPfMQJc4NApDDZIcSGapx3Q1sZgmwVoGHxRDmkN9or48UMp XyZ/Id3zyHpvDRXBfess8vRHOvE55CL04uKs3uVWqHtr7mfAEY4RstOEezpAZc6nze3H UWx1WA9egWNVrCz5OkeU9pww9dGHft4QsdImoiYgVNz9lewv48qfnR93pDwAj+hEQEkI TZwjtsEuvxJfejsexfcfhNidvOkgkW/9rbfoNn6TNuI9+XRjWr6zs78y94dAdKIm2sRX YFJbvVRygjw8jfUzx5Y/7UWqLOJJqKCRUbbA6hFuzctNG58IXWZeZuLQ/4K504IdqLgp miqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:to:from :dkim-signature; bh=3rp1l7y/9mrhyvJSSYlh8orVrr+xf9+N2y14Wa4NYLM=; b=iWRIjQo9Yk61AFSe4YJrt3BswXZcYZNoJzU9M6owO3dR7sVMX93XOrr1Fq/qtHoxHB fonNWOsde663WxmWNNxr6SmPnnfs2QlL+8fwwNswYeGGplEOWWKDr0n0c3ckitcp7eHT 4e2umXTGbq9Dqd+WZL+glyKhpwk5C8iH/VYpG4AOOoq2WQLXgJUe4M4+3mhqZDB2VWj+ B0K1U21p4EmGqgdSAvpPIjBrF7nEhq+5cSzimIOkfiZDKfF3qa/qGeU1LTjFp6J+vh4y +zJAVz6d7MQwp4+k8MkqCz2yWyOVuNLhM+iKAihXOFpzsJxPxHR6tBkRF3T/7rsiFaNN HYSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=ZjUgrOKc; spf=pass (google.com: domain of mptcp+bounces-2727-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2727-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id h16si12253086qtx.117.2021.12.13.09.40.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Dec 2021 09:40:59 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2727-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=ZjUgrOKc; spf=pass (google.com: domain of mptcp+bounces-2727-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2727-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 3188C1C0BED for ; Mon, 13 Dec 2021 17:40:59 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D23052CA9; Mon, 13 Dec 2021 17:40:57 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 54E9068 for ; Mon, 13 Dec 2021 17:40:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1639417255; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=3rp1l7y/9mrhyvJSSYlh8orVrr+xf9+N2y14Wa4NYLM=; b=ZjUgrOKcHeC/156n4batiLJJt+7kc9OLkJNg9uoesNdc0XDrVCwCVBa+R8MgHgpqarVhfr zyeqJeg86nDwpMftnmPv2fWAs4xDaWeanYEELl7SLhDPZZ0BJk6RauTJFMwuKoCcchTtJ7 vodIxaxCqWcSncnt+nMwUxE09+Qso8s= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-329-tQivnLpjM8e_ZTcky9_5cw-1; Mon, 13 Dec 2021 12:40:54 -0500 X-MC-Unique: tQivnLpjM8e_ZTcky9_5cw-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 25816100CC84 for ; Mon, 13 Dec 2021 17:40:53 +0000 (UTC) Received: from gerbillo.redhat.com (unknown [10.39.193.194]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8C11F45D93 for ; Mon, 13 Dec 2021 17:40:52 +0000 (UTC) From: Paolo Abeni To: mptcp@lists.linux.dev Subject: [PATCH mptcp-next] selftests: mptcp: more stable join tests-cases. Date: Mon, 13 Dec 2021 18:40:46 +0100 Message-Id: <6d17baa5f8bb4dcd6b63fb3dee790743c878478e.1639417229.git.pabeni@redhat.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=pabeni@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" MPTCP join self-tests are a bit fragile as they reply on delays instead of events to catch-up with the expected sockets states. Replace the delay with state checking where possible and reduce the number of sleeps in the most complex scenarios. This will both reduce the tests run-time and will improve stability. Signed-off-by: Paolo Abeni --- .../testing/selftests/net/mptcp/mptcp_join.sh | 58 ++++++++++++++----- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 55b0d03f485c..505745b44e02 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -238,6 +238,37 @@ is_v6() [ -z "${1##*:*}" ] } =20 +# $1: ns, $2: port +wait_local_port_listen() +{ + local listener_ns=3D"${1}" + local port=3D"${2}" + + local port_hex i + + port_hex=3D"$(printf "%04X" "${port}")" + for i in $(seq 10); do + ip netns exec "${listener_ns}" cat /proc/net/tcp* | \ + awk "BEGIN {rc=3D1} {if (\$2 ~ /:${port_hex}\$/ && \$4 ~ /0A/) {rc=3D0;= exit}} END {exit rc}" && + break + sleep 0.1 + done +} + +# $1: ns, $2: endpoint id +wait_address_deleted() +{ + local ns=3D"${1}" + local addr=3D"${2}" + local cnt + + for i in $(seq 10); do + cnt=3D$(ss -tON ${ns} state big src =3D ${addr} | wc -l) + [ "$cnt" !=3D 0 ] || break; + sleep 0.1 + done +} + do_transfer() { listener_ns=3D"$1" @@ -307,7 +338,7 @@ do_transfer() fi spid=3D$! =20 - sleep 1 + wait_local_port_listen "${listener_ns}" "${srv_port}" =20 if [ "$test_link_fail" -eq 0 ];then timeout ${timeout_test} \ @@ -324,10 +355,13 @@ do_transfer() fi cpid=3D$! =20 + # let the mptcp subflow be established in background before + # do endpoint manipulation + [ $addr_nr_ns1 =3D "0" -a $addr_nr_ns2 =3D "0" ] || sleep 1 + if [ $addr_nr_ns1 -gt 0 ]; then let add_nr_ns1=3Daddr_nr_ns1 counter=3D2 - sleep 1 while [ $add_nr_ns1 -gt 0 ]; do local addr if is_v6 "${connect_addr}"; then @@ -339,7 +373,6 @@ do_transfer() let counter+=3D1 let add_nr_ns1-=3D1 done - sleep 1 elif [ $addr_nr_ns1 -lt 0 ]; then let rm_nr_ns1=3D-addr_nr_ns1 if [ $rm_nr_ns1 -lt 8 ]; then @@ -347,22 +380,18 @@ do_transfer() pos=3D1 dump=3D(`ip netns exec ${listener_ns} ./pm_nl_ctl dump`) if [ ${#dump[@]} -gt 0 ]; then - sleep 1 - while [ $counter -le $rm_nr_ns1 ] do id=3D${dump[$pos]} ip netns exec ${listener_ns} ./pm_nl_ctl del $id - sleep 1 + wait_address_deleted ${listener_ns} ${dump[-1]} let counter+=3D1 let pos+=3D5 done fi elif [ $rm_nr_ns1 -eq 8 ]; then - sleep 1 ip netns exec ${listener_ns} ./pm_nl_ctl flush elif [ $rm_nr_ns1 -eq 9 ]; then - sleep 1 ip netns exec ${listener_ns} ./pm_nl_ctl del 0 ${connect_addr} fi fi @@ -373,10 +402,13 @@ do_transfer() addr_nr_ns2=3D${addr_nr_ns2:9} fi =20 + # if newly added endpoints must be deleted, give the background msk + # some time to created them + [ $addr_nr_ns1 -gt 0 -a $addr_nr_ns2 -lt 0 ] && sleep 1 + if [ $addr_nr_ns2 -gt 0 ]; then let add_nr_ns2=3Daddr_nr_ns2 counter=3D3 - sleep 1 while [ $add_nr_ns2 -gt 0 ]; do local addr if is_v6 "${connect_addr}"; then @@ -388,7 +420,6 @@ do_transfer() let counter+=3D1 let add_nr_ns2-=3D1 done - sleep 1 elif [ $addr_nr_ns2 -lt 0 ]; then let rm_nr_ns2=3D-addr_nr_ns2 if [ $rm_nr_ns2 -lt 8 ]; then @@ -396,19 +427,17 @@ do_transfer() pos=3D1 dump=3D(`ip netns exec ${connector_ns} ./pm_nl_ctl dump`) if [ ${#dump[@]} -gt 0 ]; then - sleep 1 - while [ $counter -le $rm_nr_ns2 ] do + # rm_addr are serialized, allow the previous one to complete id=3D${dump[$pos]} ip netns exec ${connector_ns} ./pm_nl_ctl del $id - sleep 1 + wait_address_deleted ${connector_ns} ${dump[-1]} let counter+=3D1 let pos+=3D5 done fi elif [ $rm_nr_ns2 -eq 8 ]; then - sleep 1 ip netns exec ${connector_ns} ./pm_nl_ctl flush elif [ $rm_nr_ns2 -eq 9 ]; then local addr @@ -417,7 +446,6 @@ do_transfer() else addr=3D"10.0.1.2" fi - sleep 1 ip netns exec ${connector_ns} ./pm_nl_ctl del 0 $addr fi fi --=20 2.33.1