From nobody Fri May 3 01:43:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1953101jad; Thu, 24 Feb 2022 13:35:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJy5oVR7Tv+8g/3610cUpw5cCgg3KgrKlqbv3e6YsZlhJibpnf91GGheqm666n/dJgPQgi/N X-Received: by 2002:a17:906:9f03:b0:6cf:ec29:fc3a with SMTP id fy3-20020a1709069f0300b006cfec29fc3amr3700574ejc.43.1645738505485; Thu, 24 Feb 2022 13:35:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645738505; cv=none; d=google.com; s=arc-20160816; b=IOydcZDJbDJ12NX76CsrsDMo6gAik0LTRoti6bmN+9kre2pSPFOERIUtV2nMNX9NPh FZ/p8U1EE6iigBAp58oGz4ib1OPbneZuBMfG62szhn5yHRtnvyiVnhD+kZ32NZ3H0IHl xOWaJX1WyosgEBSnCEEDP+YkyFbBYtFfDQv1z7BUmGg9KwAJ+pKOk7lD3RjmD92MNXaM jlJv4JMcMcrURqs0FkCWvpuxD0ldpqxtjmwMgESVlq1RVJwTF6sjNePFfRik23OAcDyT 4gx0oCFitz8yxIVYYvyJj+uu0cH1GlrI3twZx8+VqRCRZ9j4C3EDJ2Y1W/EshZU52Izh a60Q== 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:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=mpqepvshfNyt6d2vM3maMlSAvOqiJZn5oGOXwOrcldE=; b=FmyYdwZJ58A0OUKNvw4Qdriy/5uU3SL2AECsz5pt+mR4Fy2Wwola+2U9eXTRGz4L4i LqgYFVRtnnwIWkmXz41JYV/V34MC84Ypwc9uKqgwLh32V++MrWDUtzYonS1tgl8DHmQs XGaosteYckTEg24KQiMYrd5FnHeIRBkJ53TibwmP88xE5NOcwcFJGoAL0Y/GYB3P1PBS R98fgTwKsZnxqMuZ5xqJn1IjXTiq9f3SHs/FnGRWeaxZOttwFz2ZclnIwkEaeYai8Buj FRGeGD65C7RudyHdHHXdUHPovrari4lY45G9im48vVfArh4jAWKSnMoSyfldMvuKP+89 ptSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=kXOZDlFI; spf=pass (google.com: domain of mptcp+bounces-4013-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4013-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id u1-20020a170906780100b006d62d9d9190si337454ejm.316.2022.02.24.13.35.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 13:35:05 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4013-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=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=kXOZDlFI; spf=pass (google.com: domain of mptcp+bounces-4013-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4013-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 604AE1C0BFC for ; Thu, 24 Feb 2022 21:35:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1BE841373; Thu, 24 Feb 2022 21:35:02 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2364B6955 for ; Thu, 24 Feb 2022 21:35:00 +0000 (UTC) Received: by mail-ed1-f47.google.com with SMTP id c6so4690253edk.12 for ; Thu, 24 Feb 2022 13:34:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mpqepvshfNyt6d2vM3maMlSAvOqiJZn5oGOXwOrcldE=; b=kXOZDlFIOtv8a1vRtpj5KacMS2gdeRzEp6v7iYDVAuXEMpZVfJYMMIBQ0VBa3yKLi7 BWnrMyOt2yjylTSVub5E2EOFkNxOPbbv5CyFOYQ7ApLlUzv+xZYRvebE0foLyCW8BZ6L 8QcAPt5ZHEY1vkHIXxhcgYIu60gWC+dH1Zq1aDBuNGPuYuVqaa/i4bwN53+AwZkJzr3o beTshabqdH/NlJUIkvnDv4ouZh8yx5YbPJf4NG7YIczHBefZHSD+lAriQIhAs4xna7sa uWjhJ+kdxsa47tztuP2FRM2nTaYP5kr3+w2w5Dd3+z8egPdptEM2pLjikX0Ldm4VImi6 /uMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mpqepvshfNyt6d2vM3maMlSAvOqiJZn5oGOXwOrcldE=; b=4Abp4A1vI5566S2GUtirZzw/XDeNi2t1QvUzcSBSEbNhlYA226XVb9oXIxxcRvyg/B 1rQmk/1+U048LZ+RQMM5gxQk/n0i0UPazDNIgebE8yF5SmeowsWnZGRxzmDFCKyFJ8Do cbC8tUEmh+rI5KhkRvpc02LSZnS3haXd/xjNPJkdN0P8XsrP78UjqiMZCYfj1TjLCLUJ JU034HNEeRFoSFXjXTEyu2guF7PvXGL9q/aTwe1Zqlad+wHEiBx3gb9qwhwkDYKTKCtd 4sp2Y8FpbUpB9YqEyk0TH3gLYn6QRWoWXBelNcn45CqPIikTjnM8sxzlzTAfkAWn7uh3 lEVw== X-Gm-Message-State: AOAM532N0xV8V6ZavSCfvNW+CTFqKxwMO3wFtBllQNNDU2tB+DCVkfeS GSeYyOcyGCF/Wem/uf+JiY6njlFyO/qex7QJlyI= X-Received: by 2002:a50:e1c6:0:b0:410:e2e8:9d3 with SMTP id m6-20020a50e1c6000000b00410e2e809d3mr4200479edl.180.1645738498132; Thu, 24 Feb 2022 13:34:58 -0800 (PST) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id z22-20020a17090655d600b006d229436793sm175195ejp.223.2022.02.24.13.34.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 13:34:57 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-next v4 01/12] Squash to "selftests: mptcp: Add tests for userspace PM type" Date: Thu, 24 Feb 2022 22:33:55 +0100 Message-Id: <20220224213406.3127061-2-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224213406.3127061-1-matthieu.baerts@tessares.net> References: <20220224213406.3127061-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Commit 34aa6e3bccd8 ("selftests: mptcp: add ip mptcp wrappers") has been applied in net-next before this other patch. It is then needed to do the same modifications in the userspace tests as well. While at it, a new helper has been added to avoid long 'ip netns exec' commands as suggested by Paolo. Signed-off-by: Matthieu Baerts Reviewed-by: Mat Martineau --- Notes: to be squashed in "selftests: mptcp: Add tests for userspace PM type" .../testing/selftests/net/mptcp/mptcp_join.sh | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index ef57a28cf722..e2d56a5bcaf4 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1448,6 +1448,13 @@ wait_attempt_fail() return 1 } =20 +set_userspace_pm() +{ + local ns=3D$1 + + ip netns exec $ns sysctl -q net.mptcp.pm_type=3D1 +} + subflows_tests() { reset @@ -2468,59 +2475,59 @@ userspace_tests() { # userspace pm type prevents add_addr reset - ip netns exec $ns1 sysctl -q net.mptcp.pm_type=3D1 - ip netns exec $ns1 ./pm_nl_ctl limits 0 2 - ip netns exec $ns2 ./pm_nl_ctl limits 0 2 - ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal + set_userspace_pm $ns1 + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 chk_join_nr "userspace pm type prevents add_addr" 0 0 0 chk_add_nr 0 0 =20 # userspace pm type echoes add_addr reset - ip netns exec $ns2 sysctl -q net.mptcp.pm_type=3D1 - ip netns exec $ns1 ./pm_nl_ctl limits 0 2 - ip netns exec $ns2 ./pm_nl_ctl limits 0 2 - ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal + set_userspace_pm $ns2 + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 chk_join_nr "userspace pm type echoes add_addr" 0 0 0 chk_add_nr 1 1 =20 # userspace pm type rejects join reset - ip netns exec $ns1 sysctl -q net.mptcp.pm_type=3D1 - ip netns exec $ns1 ./pm_nl_ctl limits 1 1 - ip netns exec $ns2 ./pm_nl_ctl limits 1 1 - ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow + set_userspace_pm $ns1 + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 chk_join_nr "userspace pm type rejects join" 1 1 0 =20 # userspace pm type does not send join reset - ip netns exec $ns2 sysctl -q net.mptcp.pm_type=3D1 - ip netns exec $ns1 ./pm_nl_ctl limits 1 1 - ip netns exec $ns2 ./pm_nl_ctl limits 1 1 - ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow + set_userspace_pm $ns2 + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 chk_join_nr "userspace pm type does not send join" 0 0 0 =20 # userspace pm type prevents mp_prio reset - ip netns exec $ns1 sysctl -q net.mptcp.pm_type=3D1 - ip netns exec $ns1 ./pm_nl_ctl limits 1 1 - ip netns exec $ns2 ./pm_nl_ctl limits 1 1 - ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow + set_userspace_pm $ns1 + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup chk_join_nr "userspace pm type prevents mp_prio" 1 1 0 chk_prio_nr 0 0 =20 # userspace pm type prevents rm_addr reset - ip netns exec $ns1 sysctl -q net.mptcp.pm_type=3D1 - ip netns exec $ns2 sysctl -q net.mptcp.pm_type=3D1 - ip netns exec $ns1 ./pm_nl_ctl limits 0 1 - ip netns exec $ns2 ./pm_nl_ctl limits 0 1 - ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow + set_userspace_pm $ns1 + set_userspace_pm $ns2 + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow chk_join_nr "userspace pm type prevents rm_addr" 0 0 0 chk_rm_nr 0 0 --=20 2.34.1 From nobody Fri May 3 01:43:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1953150jad; Thu, 24 Feb 2022 13:35:09 -0800 (PST) X-Google-Smtp-Source: ABdhPJyHHeK58SYUfGdgukO8BjsFtxFdqXDQaIJ5cUY/7n7+Jq9DanQkG164zcslq3Ymwg9hnPB6 X-Received: by 2002:aa7:d8d8:0:b0:3f5:9041:2450 with SMTP id k24-20020aa7d8d8000000b003f590412450mr4299601eds.322.1645738509526; Thu, 24 Feb 2022 13:35:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645738509; cv=none; d=google.com; s=arc-20160816; b=WfiOGyyd+w78RXHbUNC5OWpNk5YHlG1KGgKtPwjfGxQljgafcLY8QYHWz3vNniI3za m7hPT9svlmH0Lsl2I4Z/wOfvEoO0kWuitDHCn3tDPro3PeHEJjuf2wCaF0Y/an9GHxG1 4Gf3pVp/+Qm/ZLT/4hxhzAaFi/jmXlh6nhzXO7yMuiZ10GhgtNMsRGA9NJSBb0cljQp1 ejuOdJIF83fYOW0Ogsa//vuE6LWxUz+XWZgjjBJVq77pBjhj8eb6MuVldaM59ut/r9+k sI+mrkZBnp980zP8CsgqpiZbreB3wvv8f1PGHB4MNg/uNewxOy+UnqzBQkDyldEHSDTH CeFw== 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:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=cFHBvb0vnFY6A8dNFnbvb6YKKqLhSBV8luPX/Q0H2Q4=; b=yVPGLoTb9sGDNCHlw87m38WNREqUpOn7aUyosg9BUFncXsrwr+Iwq+W3g5BDC3YFgM RaOmHQNrtmJO2YH1PBmnucDOSnxBrzx22oN02igOD3kC0JvUEDy33klDwvZ654kMPHBR yKlMWRCjL73DwxWNovb20agCS0teBnhqv+fY5WtTHoGSlVm2jQmoJ8Sd4lSVxUWhD3H2 0Gc4SFz3kqB+/Qq6IsNqi5b9mLpHkxMWK0xUyaFZkG+uoGre+SfwAIkorfP31nBf0IIY imLg98jYcnq6jxpLqGWexyGo2nlUXWJXnB3g9aAkVgeUetH7Wu3e2KxYlen9vMlNh/t0 /Saw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b="DRc/B0gb"; spf=pass (google.com: domain of mptcp+bounces-4017-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4017-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id e6-20020a50fb86000000b0041349e359d8si433124edq.480.2022.02.24.13.35.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 13:35:09 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4017-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=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b="DRc/B0gb"; spf=pass (google.com: domain of mptcp+bounces-4017-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4017-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 0F2481C055A for ; Thu, 24 Feb 2022 21:35:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E2BDD6AA7; Thu, 24 Feb 2022 21:35:05 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0D4DB6956 for ; Thu, 24 Feb 2022 21:35:00 +0000 (UTC) Received: by mail-ej1-f42.google.com with SMTP id a23so7072595eju.3 for ; Thu, 24 Feb 2022 13:35:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cFHBvb0vnFY6A8dNFnbvb6YKKqLhSBV8luPX/Q0H2Q4=; b=DRc/B0gbvQ1oDbXcvPJhg8V6sCB4qK9ynC4Wt+eGUxfUWoxCEBPQJN9lNAzWPRhAMh CstTviymV8UWQ9WBRvPUA6XlhrlMFYcNeiUdVwQZGP0oawAdvc9Gm07tibGd4cR3GXhv le1QC1Sn9+s9IYoj+Nf+5EXJ6DQvj+VwbN1CzES3PsbJlD+qspTzvcI6XgW9zjhcNhVZ gLnfo0j7c3byf1/FGdteoPWG4yr6+Q5ALKbOcZEv0ABpfh4BM0PV6XFB3ODzrE5NXe4K ukocLKzjFWzRtKFTcI7eKz/rrmUU4EohNTwPSkSZFkRqEa762XXp6cOgAPUJARDp3WWJ jJWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cFHBvb0vnFY6A8dNFnbvb6YKKqLhSBV8luPX/Q0H2Q4=; b=zuiCAd64nBe2ki/xenHhQEWgX68eMJZpFOTwhPA+NwYKp3z8JPM89Rp6nS+CEy2hXq 0sRqCVziYbGaOPfFUPOQHgQG7LHgaphVdD8KwkO5OflDX/jGY8CtikRq36lvKuPVNJKO I3FKsJLjH8z/iFyIcBzlWzIgPQ4nPtEY0Y20E6pP8vLYckH9F4k3lmiiM97Zge+syO6j isCSUfUgi8g0fqP5VQ67ODcRFbko64tzwDMpLYfXROJ6LETxggsGLslJznEhayy56bHu DTA794IGPDPITEHA415y0s5NbszMC1bAaqjiTXTSqLsGhW5aZPk3YL2zH5B8ges8wYpG dtBg== X-Gm-Message-State: AOAM532py4WteKPyF/+wuzrFVhnb4feLplKjJxmIyHLpN2HpbtE40GuX jWNzImQpNc5guHXI+uY0Vy3PDNjR4TvgtaoSuIY= X-Received: by 2002:a17:906:3283:b0:6ce:78f9:fafd with SMTP id 3-20020a170906328300b006ce78f9fafdmr3782317ejw.534.1645738498705; Thu, 24 Feb 2022 13:34:58 -0800 (PST) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id z22-20020a17090655d600b006d229436793sm175195ejp.223.2022.02.24.13.34.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 13:34:58 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v4 02/12] Squash to "selftests: mptcp: join: allow running -cCi" Date: Thu, 24 Feb 2022 22:33:56 +0100 Message-Id: <20220224213406.3127061-3-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224213406.3127061-1-matthieu.baerts@tessares.net> References: <20220224213406.3127061-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The recommended way with getopt is first parse all options and then act. This allows to do some actions in priority, e.g. display the help menu and stop. But also some global variables changing the behaviour of this selftests -- like the ones behind -cCi options -- can be set before running the different tests. By doing that, we can also avoid long and unreadable regex. This can be squashed in "selftests: mptcp: join: allow running -cCi" and the commit message can be appended with what is above. Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts --- Notes: to be squashed in "selftests: mptcp: join: allow running -cCi" .../testing/selftests/net/mptcp/mptcp_join.sh | 73 ++++++++----------- 1 file changed, 31 insertions(+), 42 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index e2d56a5bcaf4..02ae2692f7fc 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -17,7 +17,6 @@ checksum=3D0 ip_mptcp=3D0 check_invert=3D0 validate_checksum=3D0 -do_all_tests=3D1 init=3D0 =20 TEST_COUNT=3D0 @@ -2630,93 +2629,75 @@ usage() exit ${ret} } =20 -for arg in "$@"; do - # check for "capture/checksum" args before launching tests - if [[ "${arg}" =3D~ ^"-"[0-9a-zA-Z]*"c"[0-9a-zA-Z]*$ ]]; then - capture=3D1 - fi - if [[ "${arg}" =3D~ ^"-"[0-9a-zA-Z]*"C"[0-9a-zA-Z]*$ ]]; then - checksum=3D1 - fi - if [[ "${arg}" =3D~ ^"-"[0-9a-zA-Z]*"i"[0-9a-zA-Z]*$ ]]; then - ip_mptcp=3D1 - fi - - # exception for the capture/checksum/ip_mptcp options, the rest means: a = part of the tests - if ! [[ "${arg}" =3D~ ^"-"[cCi]+$ ]]; then - do_all_tests=3D0 - fi -done - -if [ $do_all_tests -eq 1 ]; then - all_tests - exit $ret -fi =20 +tests=3D() while getopts 'fesltra64bpkdmchzuFICSi' opt; do case $opt in f) - subflows_tests + tests+=3D(subflows_tests) ;; e) - subflows_error_tests + tests+=3D(subflows_error_tests) ;; s) - signal_address_tests + tests+=3D(signal_address_tests) ;; l) - link_failure_tests + tests+=3D(link_failure_tests) ;; t) - add_addr_timeout_tests + tests+=3D(add_addr_timeout_tests) ;; r) - remove_tests + tests+=3D(remove_tests) ;; a) - add_tests + tests+=3D(add_tests) ;; 6) - ipv6_tests + tests+=3D(ipv6_tests) ;; 4) - v4mapped_tests + tests+=3D(v4mapped_tests) ;; b) - backup_tests + tests+=3D(backup_tests) ;; p) - add_addr_ports_tests + tests+=3D(add_addr_ports_tests) ;; k) - syncookies_tests + tests+=3D(syncookies_tests) ;; S) - checksum_tests + tests+=3D(checksum_tests) ;; d) - deny_join_id0_tests + tests+=3D(deny_join_id0_tests) ;; m) - fullmesh_tests + tests+=3D(fullmesh_tests) ;; z) - fastclose_tests + tests+=3D(fastclose_tests) ;; F) - fail_tests + tests+=3D(fail_tests) ;; u) - userspace_tests + tests+=3D(userspace_tests) ;; I) - implicit_tests + tests+=3D(implicit_tests) ;; c) + capture=3D1 ;; C) + checksum=3D1 ;; i) + ip_mptcp=3D1 ;; h) usage @@ -2727,4 +2708,12 @@ while getopts 'fesltra64bpkdmchzuFICSi' opt; do esac done =20 +if [ ${#tests[@]} -eq 0 ]; then + all_tests +else + for subtests in "${tests[@]}"; do + "${subtests}" + done +fi + exit $ret --=20 2.34.1 From nobody Fri May 3 01:43:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1953106jad; Thu, 24 Feb 2022 13:35:06 -0800 (PST) X-Google-Smtp-Source: ABdhPJwPAHA4JGnApLAg4AxD2jcGy4JAvC+UJjv1y04S3lSSAI/ksXQZXXYui4xo/tRBSROhqVvM X-Received: by 2002:a17:902:b94b:b0:14e:f1a8:9b99 with SMTP id h11-20020a170902b94b00b0014ef1a89b99mr4656265pls.28.1645738505848; Thu, 24 Feb 2022 13:35:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645738505; cv=none; d=google.com; s=arc-20160816; b=F4PMRIBIDhGxssvyUtv/qwinh3gacKAvul/Xow1de3tn4ntVCqm58dv1A6xNv/KKpn YXOkcISfzUNMKDI5HLLXfnuppbPrisOlcLtOFHMAIUR8b4laEoWayQPT7y+gAW+jLH3q tk3J+zK2y2Hg7dQDCqtQVCJ0ibUBsi9Xtr9xSOrhGdqARUTA01QdBznMkpBV4ELDvi8n lHqTy1j7NPJPFTmPQHOJotpNZgvEj1fqzoNaoliAFx3c7XhOpPqBjDGOsu1mGVoLjxg0 5eVtWwDbCtEHOMcHYCayFNtA2/hZ7zCFusLN10z7ovXkyVakAk3oMibWFMHQXFJoFm4o igxg== 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:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=6qKdFGTaabyGfSQRaKcrY8DB6zt2H6moqludwTQ8Tzg=; b=cbHCznchFmbVu7PTG1JsM1XR2aPkx6i7ostOJDl5DOyKRddRbwlEHVRul6UVeYrnQ5 q1P8t35FWKG7HNzzr+PekoU+nsHL//d4AT9FGJ9PkE+qqMlN/zH5Na2BY1q3tvk+HRH1 RVcX76CofqZVHgsiz4uAZ6xChOc1USAMtnvUMApuJqoqDRzqr7TaCLwajvd1zub3loaY Wpf30Lx9UesGAauEBjwKRO2dmFKoJOggrTDP0oXycEApofB7AOouVG7koleymyQMXTQN QceK6mh/ZwivuD/crhadBbSsnqKUA+wvv/W1nJ1FkhT4ixP9Rkyx+PLr/Qp4nen4UybZ zPYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=CDw03D2l; spf=pass (google.com: domain of mptcp+bounces-4014-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4014-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id f10-20020a17090a4a8a00b001bc7e672640si398090pjh.164.2022.02.24.13.35.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 13:35:05 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4014-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=CDw03D2l; spf=pass (google.com: domain of mptcp+bounces-4014-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4014-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 sjc.edge.kernel.org (Postfix) with ESMTPS id 530033E0F70 for ; Thu, 24 Feb 2022 21:35:05 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BB3726AA5; Thu, 24 Feb 2022 21:35:03 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A3C96957 for ; Thu, 24 Feb 2022 21:35:01 +0000 (UTC) Received: by mail-ed1-f54.google.com with SMTP id s1so4682318edd.13 for ; Thu, 24 Feb 2022 13:35:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6qKdFGTaabyGfSQRaKcrY8DB6zt2H6moqludwTQ8Tzg=; b=CDw03D2lCXWAYLuP1WlIxdNLvR5AAqhPpiIXnWtn+I9mKhzRWkBj7FXpXIHSWzxJZ+ p8ke6TOGbekoa3xHRmtUL2ayTCSYpz5m2XXMNn/hLOhVy+dRZ7IONq3dvep181m9SbY1 TS6Jrn9IRz9k2Bj8NrqgI0OHaQbCDyyR2eHTVSvCJzLf8rbyEqdN8tVIxH4gg376smFd +oRYutTGMVNs2x0uyx3vfKK+Ce6guYMnHyI3dd3OdNk8GQnBOB0zQYWJYfCgJS3D7hon Xs33Ku75NXi35LweRlSje5RiKM5+ewrpFpR9QHLFYSDEtnJJUH7i3vAHw3SUsDfuFghz HQIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6qKdFGTaabyGfSQRaKcrY8DB6zt2H6moqludwTQ8Tzg=; b=vuM4CIkzB94p5efXwmRzEiP+RgrIqwvtqH71cyQtw8AgoiOC6y41Tm0pBGrLu6qmEw Jol2PpSNrDvH7RbRXiBEpexppyBnsMyk5GJ1FIY8jxRoueW4B8M6qXA8DVycSalRC9jY FFOtHtGI9fJS1VcgK8CERHRoXKkRxuwTpXp1YBGFHvK69/+C4+9REV3hJ9askr/eqyP9 57/RfQ0v3Qd7JjKx+xiRr2KWfOQTslFv+B4y2ZfinDWbXsqA+PREyH0ZPTfCo97Mp2yd a09Zy7+4VUwHYWVLuGP3LLGV4rOjdUAu4MPg/Uokhtz4euzivBvW3PL2iS+yZZ/q5wGP ZaDw== X-Gm-Message-State: AOAM5311NN/xlkduBwMilSxCQ5RdpIMU8/oLEJ9mnydEwCMDL/F6LHWp tqy7ZPDbrV9rtc3BXdKR9luUx/FcwAcsiQKNXjM= X-Received: by 2002:a05:6402:1e8f:b0:3fa:72cb:1733 with SMTP id f15-20020a0564021e8f00b003fa72cb1733mr4163045edf.24.1645738499654; Thu, 24 Feb 2022 13:34:59 -0800 (PST) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id z22-20020a17090655d600b006d229436793sm175195ejp.223.2022.02.24.13.34.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 13:34:58 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-next v4 03/12] Squash to "selftests: mptcp: add implicit endpoint test case" Date: Thu, 24 Feb 2022 22:33:57 +0100 Message-Id: <20220224213406.3127061-4-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224213406.3127061-1-matthieu.baerts@tessares.net> References: <20220224213406.3127061-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" - Move 'wait_mpj' with the other 'wait' helpers: like that, we have all the helpers first and then all groups of tests. It is easier to find patterns in the tests parts, e.g. finding if there are direct calls to 'ip netns exec', etc. - Do not increment the counter for each subtest: later in this series the counter is incremented in the reset function and thanks to that it is possible to skip a test before doing the real reset part. It is then required to have a single test per test env. All the three test are quick when the env is ready. Signed-off-by: Matthieu Baerts Reviewed-by: Mat Martineau --- Notes: to be squashed in "selftests: mptcp: add implicit endpoint test case" .../testing/selftests/net/mptcp/mptcp_join.sh | 53 ++++++++++--------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 02ae2692f7fc..d3985b9cf380 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -365,6 +365,21 @@ wait_rm_addr() done } =20 +wait_mpj() +{ + local ns=3D"${1}" + local cnt old_cnt + + old_cnt=3D$(ip netns exec ${ns} nstat -as | grep MPJoinAckRx | awk '{prin= t $2}') + + local i + for i in $(seq 10); do + cnt=3D$(ip netns exec ${ns} nstat -as | grep MPJoinAckRx | awk '{print $= 2}') + [ "$cnt" =3D "${old_cnt}" ] || break + sleep 0.1 + done +} + pm_nl_set_limits() { local ns=3D$1 @@ -468,9 +483,10 @@ pm_nl_change_endpoint() pm_nl_check_endpoint() { local line expected_line - local msg=3D"$1" - local addr=3D$3 - local ns=3D$2 + local title=3D"$1" + local msg=3D"$2" + local ns=3D$3 + local addr=3D$4 local _flags=3D"" local flags local _port @@ -479,10 +495,13 @@ pm_nl_check_endpoint() local _id local id =20 - TEST_COUNT=3D$((TEST_COUNT + 1)) - printf "%03u %-${nr_blank}s" "$TEST_COUNT" "$msg" + if [ -n "${title}" ]; then + printf "%03u %-36s %s" "${TEST_COUNT}" "${title}" "${msg}" + else + printf "%-${nr_blank}s %s" " " "${msg}" + fi =20 - shift 3 + shift 4 while [ -n "$1" ]; do if [ $1 =3D "flags" ]; then _flags=3D$2 @@ -2532,21 +2551,6 @@ userspace_tests() chk_rm_nr 0 0 } =20 -wait_mpj() -{ - local ns=3D"${1}" - local cnt old_cnt - - old_cnt=3D$(ip netns exec ${ns} nstat -as | grep MPJoinAckRx | awk '{prin= t $2}') - - local i - for i in $(seq 10); do - cnt=3D$(ip netns exec ${ns} nstat -as | grep MPJoinAckRx | awk '{print $= 2}') - [ "$cnt" =3D "${old_cnt}" ] || break - sleep 0.1 - done -} - implicit_tests() { # userspace pm type prevents add_addr @@ -2557,15 +2561,16 @@ implicit_tests() run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow & =20 wait_mpj $ns1 - pm_nl_check_endpoint "implicit EP creation" \ + TEST_COUNT=3D$((TEST_COUNT + 1)) + pm_nl_check_endpoint "implicit EP" "creation" \ $ns2 10.0.2.2 id 1 flags implicit =20 pm_nl_add_endpoint $ns2 10.0.2.2 id 33 - pm_nl_check_endpoint "implicit EP ID change is prevented" \ + pm_nl_check_endpoint "" "ID change is prevented" \ $ns2 10.0.2.2 id 1 flags implicit =20 pm_nl_add_endpoint $ns2 10.0.2.2 flags signal - pm_nl_check_endpoint "implicit EP modification is allowed" \ + pm_nl_check_endpoint "" "modif is allowed" \ $ns2 10.0.2.2 id 1 flags signal wait } --=20 2.34.1 From nobody Fri May 3 01:43:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1953134jad; Thu, 24 Feb 2022 13:35:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJzpLLxi/APShY2QDTI1RHPlV7v+0fkl29I6IqUVLSCtpNWwDFTHKuAmvtIrx2VvTNGC5ffL X-Received: by 2002:a17:906:805:b0:6ce:41a8:113 with SMTP id e5-20020a170906080500b006ce41a80113mr3867919ejd.366.1645738508062; Thu, 24 Feb 2022 13:35:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645738508; cv=none; d=google.com; s=arc-20160816; b=Gj/pOW/gQyCoNBwae3mjYOytRxA6820u47RrzfLpxZPkzYI6cJxfprEaWhuEBgKmZp vsXfys88ACL9JvdoKV3xXdik8gr79yao/u+ucyRx4Lxufeyh0u2EFwa3RRGBfYnTzyTz NLTToC8JhCgEtEi8jfsBdD44Ue32jyp2fr88q+UIzsXFEhSM3hI1vSckvXustm5KzLuQ Tau5jYtiTnMipdVz7zeBxTDAw34Nsm7boKFETcnekQgHhgZewSxuythFxY87xJlK0Tkm Ddw0hu64TQUleNMeVtXa9NfhmHHVBNFzoIqgD3FYk4bvFbZo1EKXhDMQA+bhnrPK3e4b c+Ww== 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:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=/oQaPOfnTnuFuHqIo8lac/qxpBondR7NAkvdA5GtZI4=; b=TV3fLkver3p7AnJ2IwGcxliLZWhpOhwYI8ULZFd2MUX5u0czLmzgHCdIj20ZIRYQd/ JaCI3++7l5/IaEqtrqC7KVZF/biZRhzT2xvve1LHa/RNNa1ykl4c2kZi7hliFVAWzTe2 WJbAntRmFeE1ZEO0lEUj2tWY3mQEQ/IeUK/C5EYIaRUydgIy2X2W8wT3H3N38lH4t7mX Z2wLPHhz4ZTMUOpRjYKwijEFH49YPoDkgGaeMl6pd5wacHx6uZhz40J5BwYs2s/g2OvZ t1+SCQE27mM31krVySKeSriHcLc15Gqi+gtyNNeav39j3feGWktDmkrQao6W/ODoYI5l b5gg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b="xmg3u/rm"; spf=pass (google.com: domain of mptcp+bounces-4015-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4015-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id l3-20020a170906078300b006add5a7d819si381630ejc.230.2022.02.24.13.35.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 13:35:08 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4015-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=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b="xmg3u/rm"; spf=pass (google.com: domain of mptcp+bounces-4015-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4015-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 CBA041C0A7A for ; Thu, 24 Feb 2022 21:35:06 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D08956957; Thu, 24 Feb 2022 21:35:04 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2A0CA6955 for ; Thu, 24 Feb 2022 21:35:02 +0000 (UTC) Received: by mail-ed1-f47.google.com with SMTP id w3so4719386edu.8 for ; Thu, 24 Feb 2022 13:35:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/oQaPOfnTnuFuHqIo8lac/qxpBondR7NAkvdA5GtZI4=; b=xmg3u/rmfNHSJ15YFr7ND/F/dB4RPukBOi2Av1gPZba15zdO+MPv+FcjCsIyhqLabE n38QwgT9gUPEcGxkMFpoKJ3BTtThHnMb9J2AkA3qmnDVoE5Uy2oOwhdOCJ+L8WtGRB74 3QqkQ+d5RRy4wWszQVlsbas4iZsc4Tl2r8PFRPJmoslP0s/PKqaMfvKl9BDasTIxj68D s7RE9lElMw1p7olGJRpWwsukAl4JdZLMcyhQc6xpDW9OgugJYmjuAnvHAhSj7W0xH1pA TnjUGGqP0wkDzMRJSxL9jWEGCYQ0coRu0aS0U0uVPtMM9qFgjRcj+Tk66Vq5SrHoES9t GwVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/oQaPOfnTnuFuHqIo8lac/qxpBondR7NAkvdA5GtZI4=; b=Q76IZ7smk9+hDGT71bkAxq50rudKMe+ikwf+1OtV83I3XRAdzft/YsYkQf64UxY0a3 RxSlFzHoT1Poqdv47Hu1WqKJLJ1Cuxbblx1MdqgwxnQDxPC/amg5s+zO/AwtIX/i6JsT hiq9M7DWZ6mZnjTeTq8CvsZ2TOkhKR2tQwMaKI6R9Gm3w9BGit3J7bUypJqbhAu1crZw ciLNBBhZBKEGuxvRUPCouqDKG5dPM+miE+5yUWiAwILdbCSMdPeGiojKBsVC9j/BfFK5 Dg+JCe2Au7cgTyxDCBCsCLqjLVFNmA8Mha+eDXQC3UZVc1APenvjCg3iYgoynwJjD2nl zQ4g== X-Gm-Message-State: AOAM531Sw/t7PPqzGMNWd9JWG9DfKO6Yw7GxAOiB0rmnTPh1lexLapfy qCg+iAwKn1SjSsCaqmoXhi+JCDmyIhB32GSUQqA= X-Received: by 2002:a05:6402:f04:b0:410:f0a5:5b02 with SMTP id i4-20020a0564020f0400b00410f0a55b02mr4293305eda.209.1645738500258; Thu, 24 Feb 2022 13:35:00 -0800 (PST) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id z22-20020a17090655d600b006d229436793sm175195ejp.223.2022.02.24.13.34.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 13:34:59 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v4 04/12] selftests: mptcp: join: define tests groups once Date: Thu, 24 Feb 2022 22:33:58 +0100 Message-Id: <20220224213406.3127061-5-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224213406.3127061-1-matthieu.baerts@tessares.net> References: <20220224213406.3127061-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When adding a new tests group, it has to be defined in multiple places: - in the all_tests() function - in the 'usage()' function - in the getopts: short option + what to do when the option is used Because it is easy to forget one of them, it is useful to have to define them only once. Note: only using an associative array would simplify the code but the entries are stored in a hashtable and iterating over the different items doesn't give the same order as the one used in the declaration of this array. Because we want to run these tests in the same order as before, a "simple" array is used first. Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts --- .../testing/selftests/net/mptcp/mptcp_join.sh | 153 ++++++------------ 1 file changed, 49 insertions(+), 104 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index d3985b9cf380..aa68aeac328a 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -19,6 +19,7 @@ check_invert=3D0 validate_checksum=3D0 init=3D0 =20 +declare -A all_tests TEST_COUNT=3D0 nr_blank=3D40 =20 @@ -2575,29 +2576,6 @@ implicit_tests() wait } =20 -all_tests() -{ - subflows_tests - subflows_error_tests - signal_address_tests - link_failure_tests - add_addr_timeout_tests - remove_tests - add_tests - ipv6_tests - v4mapped_tests - backup_tests - add_addr_ports_tests - syncookies_tests - checksum_tests - deny_join_id0_tests - fullmesh_tests - fastclose_tests - fail_tests - userspace_tests - implicit_tests -} - # [$1: error message] usage() { @@ -2607,25 +2585,12 @@ usage() fi =20 echo "mptcp_join usage:" - echo " -f subflows_tests" - echo " -e subflows_error_tests" - echo " -s signal_address_tests" - echo " -l link_failure_tests" - echo " -t add_addr_timeout_tests" - echo " -r remove_tests" - echo " -a add_tests" - echo " -6 ipv6_tests" - echo " -4 v4mapped_tests" - echo " -b backup_tests" - echo " -p add_addr_ports_tests" - echo " -k syncookies_tests" - echo " -S checksum_tests" - echo " -d deny_join_id0_tests" - echo " -m fullmesh_tests" - echo " -z fastclose_tests" - echo " -F fail_tests" - echo " -u userspace_tests" - echo " -I implicit_tests" + + local key + for key in "${!all_tests[@]}"; do + echo " -${key} ${all_tests[${key}]}" + done + echo " -c capture pcap files" echo " -C enable data checksum" echo " -i use ip mptcp" @@ -2635,65 +2600,45 @@ usage() } =20 =20 +# Use a "simple" array to force an specific order we cannot have with an a= ssociative one +all_tests_sorted=3D( + f@subflows_tests + e@subflows_error_tests + s@signal_address_tests + l@link_failure_tests + t@add_addr_timeout_tests + r@remove_tests + a@add_tests + 6@ipv6_tests + 4@v4mapped_tests + b@backup_tests + p@add_addr_ports_tests + k@syncookies_tests + S@checksum_tests + d@deny_join_id0_tests + m@fullmesh_tests + z@fastclose_tests + F@fail_tests + u@userspace_tests + I@implicit_tests +) + +all_tests_args=3D"" +all_tests_names=3D() +for subtests in "${all_tests_sorted[@]}"; do + key=3D"${subtests%@*}" + value=3D"${subtests#*@}" + + all_tests_args+=3D"${key}" + all_tests_names+=3D("${value}") + all_tests[${key}]=3D"${value}" +done + tests=3D() -while getopts 'fesltra64bpkdmchzuFICSi' opt; do +while getopts "${all_tests_args}cCih" opt; do case $opt in - f) - tests+=3D(subflows_tests) - ;; - e) - tests+=3D(subflows_error_tests) - ;; - s) - tests+=3D(signal_address_tests) - ;; - l) - tests+=3D(link_failure_tests) - ;; - t) - tests+=3D(add_addr_timeout_tests) - ;; - r) - tests+=3D(remove_tests) - ;; - a) - tests+=3D(add_tests) - ;; - 6) - tests+=3D(ipv6_tests) - ;; - 4) - tests+=3D(v4mapped_tests) - ;; - b) - tests+=3D(backup_tests) - ;; - p) - tests+=3D(add_addr_ports_tests) - ;; - k) - tests+=3D(syncookies_tests) - ;; - S) - tests+=3D(checksum_tests) - ;; - d) - tests+=3D(deny_join_id0_tests) - ;; - m) - tests+=3D(fullmesh_tests) - ;; - z) - tests+=3D(fastclose_tests) - ;; - F) - tests+=3D(fail_tests) - ;; - u) - tests+=3D(userspace_tests) - ;; - I) - tests+=3D(implicit_tests) + ["${all_tests_args}"]) + tests+=3D("${all_tests[${opt}]}") ;; c) capture=3D1 @@ -2714,11 +2659,11 @@ while getopts 'fesltra64bpkdmchzuFICSi' opt; do done =20 if [ ${#tests[@]} -eq 0 ]; then - all_tests -else - for subtests in "${tests[@]}"; do - "${subtests}" - done + tests=3D("${all_tests_names[@]}") fi =20 +for subtests in "${tests[@]}"; do + "${subtests}" +done + exit $ret --=20 2.34.1 From nobody Fri May 3 01:43:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1953133jad; Thu, 24 Feb 2022 13:35:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJzwN8hNdS9koZZQmYHcItKBWhKn5qFMIeOG7f9D6V6ZbXzB/p+/DjOP/VJfBokIC/fukkD4 X-Received: by 2002:a05:6a00:de:b0:4e0:ca1a:9f07 with SMTP id e30-20020a056a0000de00b004e0ca1a9f07mr4645557pfj.11.1645738507959; Thu, 24 Feb 2022 13:35:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645738507; cv=none; d=google.com; s=arc-20160816; b=STXszeOKLnjcITV7NRZ0GZml2oB6giLINWYa/lLKlpkPqYka5qDrI61ipyI8Jwal01 00XVg5mFhXwfMXlmWIS78DorajbT3+MjAGBcJ9+GWebw5uwqFpnim1FzSf1rJGW0N5u3 DsxCWpOdbByxiQYAdNNlPABv7LrsdMH4SC9Z5f/CXG6qSD+1muORZ2/JVG8JADycZMBf YKu9EU9bKIuNv7+Vkc5IfTtgbDCU1fZvsOFZTvU/0BJHTpqs3glD1N5VWhbxn4bGydID 51nrhwvgS3sFVfiIKa4jBWZZHeFVVOHY5M1dpQ2frolxT/bix7nL8FaSugmfSF0S2RIe DP2A== 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:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=nn8BY3qhq/PfVWLIPLNgoIeFpA33i3pdez6h1ESHrig=; b=BLZESaxSN4eZnvH26FQ5asaxEGA/iwWUMmtrBJoe3ZqG6R/Ey7Y5fcsKo4deXIvW/P EyiRE35Pae4FxwVv8B/nRIJqKCJR6T9972tkzJzBTV61oGjiTrVZHAZ7cNSq5Uo5aai6 uyQhFGIwTMlD3nmvKkZOxtcjesQ176k169rYo3Zrq0nHv8y2Hf3SkF7NUJHsrIJIeesH GiYeuEbNupVcfYMl/aKH3+J654U21pM5WAQb8Qxp0oUdcK3sG6iU0rkOB4MUJxPtQfa4 ngyJuE8+xzj30Hiq8/nJBrp7aNzZ6ZObMkPC24mTFfI3dyxLUp3aU8PqpHbpbQzDsrX1 W61Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b="Lcelo/AR"; spf=pass (google.com: domain of mptcp+bounces-4016-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4016-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id m22-20020aa78a16000000b004f13c50134asi234298pfa.254.2022.02.24.13.35.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 13:35:07 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4016-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b="Lcelo/AR"; spf=pass (google.com: domain of mptcp+bounces-4016-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4016-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 sjc.edge.kernel.org (Postfix) with ESMTPS id 872BB3E0F84 for ; Thu, 24 Feb 2022 21:35:07 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0C4486AA6; Thu, 24 Feb 2022 21:35:05 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BEA3B6AA3 for ; Thu, 24 Feb 2022 21:35:02 +0000 (UTC) Received: by mail-ej1-f46.google.com with SMTP id p15so7051841ejc.7 for ; Thu, 24 Feb 2022 13:35:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nn8BY3qhq/PfVWLIPLNgoIeFpA33i3pdez6h1ESHrig=; b=Lcelo/ARs9iCUewWWNkJt3Gp6+KWv258TKQv2JYDGBOljH52B1EeeZkw9KfIbErd+6 iFPOgNh8nfTJ5Wbw3L6hOiGl+XRI8sBNLgZ+xOi+JPrRRMSnsrek18xjNbEPKWY5E2dX Mdq8edUK69/NtVv5gCuOYvT+8z1SnP3SSaiK9lny35K4MbMOkk/GhtiyjPivhKSiNaWr +/3COoxJ62G9XEvMwRbf+RyO8L8N1/HfqnkaLlk5CPodUHLgwnrm4rxJe3pBxKxRaRL2 xZLU38kxyfF8iDRQQ+Oy/LS/qV0bla2ynyuyzHS0HtNXIq0sAUoh0KEQzQ3nM3EEpBal RqXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nn8BY3qhq/PfVWLIPLNgoIeFpA33i3pdez6h1ESHrig=; b=jO7Q3wmH6W9lNAACLuu9FPpYAxYLfARzmADndQuFvZqgoDKaujJ7+XLVQtPYozN46f M2sSMsiQ2A0N7bFQ5+Usxgky7psWxk5O4R4td+2+hikEvVlObkDXN8u21WYHg0fhWfpq qbfWdUlymqhh+O6pDeYY0JReeK8EXXo4us9QdfMuugCkDEQGxzcURl38hdl6L5PSbhEt 3T7tAR5olfkDHeTf5X0ZZZkxQg2u3uqWnxFI6qh29YdgTwDUNaCbEqkc1uo6Ngod2caE QHKaSGvCa2MpWIWnO8ILZA9C/kORXGjgNUDmezv+qgtarBaLJGGjwSo3dOX+MVS42Dc/ GvTQ== X-Gm-Message-State: AOAM530dssQOAtBUgCBzY6NgkB9B40x9csUzE12MR1XOQ6S19TDHiQt1 TZmcaH2PG++vGa81O0hroavO4gIBIXnarpS96yc= X-Received: by 2002:a17:906:5cb:b0:6cf:954:d84d with SMTP id t11-20020a17090605cb00b006cf0954d84dmr3995570ejt.560.1645738500879; Thu, 24 Feb 2022 13:35:00 -0800 (PST) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id z22-20020a17090655d600b006d229436793sm175195ejp.223.2022.02.24.13.35.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 13:35:00 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v4 05/12] selftests: mptcp: join: reset failing links Date: Thu, 24 Feb 2022 22:33:59 +0100 Message-Id: <20220224213406.3127061-6-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224213406.3127061-1-matthieu.baerts@tessares.net> References: <20220224213406.3127061-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Best to always reset this env var before each test to avoid surprising behaviour depending on the order tests are running. Also clearly set it for the last failing links test is also needed when only this test is executed. Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index aa68aeac328a..f68be7be3d1e 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -23,6 +23,8 @@ declare -A all_tests TEST_COUNT=3D0 nr_blank=3D40 =20 +export FAILING_LINKS=3D"" + # generated using "nfbpf_compile '(ip && (ip[54] & 0xf0) =3D=3D 0x30) || # (ip6 && (ip6[74] & 0xf0) =3D=3D 0x30)'" CBPF_MPTCP_SUBOPTION_ADD_ADDR=3D"14, @@ -64,6 +66,7 @@ init_partial() =20 check_invert=3D0 validate_checksum=3D$checksum + FAILING_LINKS=3D"" =20 # ns1 ns2 # ns1eth1 ns2eth1 @@ -1716,7 +1719,7 @@ link_failure_tests() pm_nl_set_limits $ns1 0 2 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal pm_nl_set_limits $ns2 1 2 - export FAILING_LINKS=3D"1" + FAILING_LINKS=3D"1" pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup run_tests $ns1 $ns2 10.0.1.1 1 chk_join_nr "backup subflow unused, link failure" 2 2 2 @@ -1731,7 +1734,7 @@ link_failure_tests() pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal pm_nl_set_limits $ns2 1 2 pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup - export FAILING_LINKS=3D"1 2" + FAILING_LINKS=3D"1 2" run_tests $ns1 $ns2 10.0.1.1 1 chk_join_nr "backup flow used, multi links fail" 2 2 2 chk_add_nr 1 1 @@ -1746,6 +1749,7 @@ link_failure_tests() pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal pm_nl_set_limits $ns2 1 3 pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup + FAILING_LINKS=3D"1 2" run_tests $ns1 $ns2 10.0.1.1 2 chk_join_nr "backup flow used, bidi, link failure" 2 2 2 chk_add_nr 1 1 --=20 2.34.1 From nobody Fri May 3 01:43:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1953245jad; Thu, 24 Feb 2022 13:35:16 -0800 (PST) X-Google-Smtp-Source: ABdhPJyuetQ75CLnkynJJurf48Xk1NxR0NxA0oqzu16DHXt1gxT69tYSnvBO0vr+DfwaYMLE76Im X-Received: by 2002:a17:90a:7f03:b0:1b8:8d90:b194 with SMTP id k3-20020a17090a7f0300b001b88d90b194mr96445pjl.2.1645738516169; Thu, 24 Feb 2022 13:35:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645738516; cv=none; d=google.com; s=arc-20160816; b=0gGPfhpac3nrZjFjSonlBkuUbkYTL5cddBlRArOQcazTRn2vNTEY2vYuvCgvod5+MO qXmFoP6Ajno3+3FV/oOiJbT6BG2zR7DXxut5a4iodQBxPNfgTRzdiezRtGNKGriEwZlg zwoelFowv8J2z2dFxHv/YrtrGs9MUhU0DgzVt2U16oxv9dVx1/ru7PTrOYdhhxvMg4Iw VoEz0JQMI8UUYGRICB6wxlem2+XXyPNFHI1ZCGOfUKvXTPzeNUC/uO6BrcDAgLF4ZTS3 VnMNvLY50CGvYIWgMY1Zi+udOYVBNkT6NsRXhA5My9STF6VIR557TwbC5B8SR5HK61jz yFYQ== 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:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=p4lFmfBRuktvBnHpLO4n8moeIEd/qbj/0tA/tRK7E0w=; b=ScQD8QrvkDURd0SWPyahNjVk82e30O9L5WSJI1hhSFZ8pChDNRtA26bT31cFi+Kjz3 9vBgVIugIDnKQyts04kOuwer3iok6Ka9YTEd+Dcc3oJGA3D05RYr/8STUExePhCA61na f/Cnt/xzklyfVySZiLBZ6EpVPTWBkNnX42XEFd9SOAxRPZ7EWU3YwJkjTDEZQKIY3EaY yPxE7TZi2j9tvuYCD5mU6XYUJbHn+RHwkf0ImO5yAx0/kun1IQR3tRJ6gByS29CXtLR6 F8y/3lvIIKG/Kqw2v5z6zmjYtoC9FX7XTz1qLPbvdPiJ8BcQmV7PANoltG47FBxvq370 CPsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=T1kMKZik; spf=pass (google.com: domain of mptcp+bounces-4022-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4022-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id q17-20020a635c11000000b0034dba13ff1bsi230228pgb.672.2022.02.24.13.35.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 13:35:16 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4022-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=T1kMKZik; spf=pass (google.com: domain of mptcp+bounces-4022-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4022-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 sjc.edge.kernel.org (Postfix) with ESMTPS id 4CE033E102B for ; Thu, 24 Feb 2022 21:35:15 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C824B6AA3; Thu, 24 Feb 2022 21:35:08 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DAE5A6955 for ; Thu, 24 Feb 2022 21:35:04 +0000 (UTC) Received: by mail-ed1-f41.google.com with SMTP id s14so4795862edw.0 for ; Thu, 24 Feb 2022 13:35:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=p4lFmfBRuktvBnHpLO4n8moeIEd/qbj/0tA/tRK7E0w=; b=T1kMKZik0wJcrFRXMyaGsCBm66Pj/vuOYy/jSqsNrskKQ/9KSa1D9/cedSKamA1xlT iHZj07UmLswHMpwrXK14Pp3Jj0cUTUjEjh1tEUoXxtm2LENP8rGabc4ORe6CcQtLt/wv bscSmZP3dc7dEm+C02wGSlYwBRV61dxJzJ5f2iJ04NzU9Kv2DP3oh9o7UZpLyb6zC4zU HNYWAfHkzRaFBfAgBj2EkjSfgCJcNoDamaXQ8dt7rDJLHBwx8glIyZfTwhlTqCF3KL16 g4kTQgOqjA2wlVcNxLEKEQxnMjjR7OFBKM2t61HlxHEvtMp/Iu6uy+AI1At3VgKlcII/ HjEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=p4lFmfBRuktvBnHpLO4n8moeIEd/qbj/0tA/tRK7E0w=; b=HdMWPuuAl9MPIQrSTEat2kIZ94KXkuSnEphGzR5zYmk0faesMuXtwAsoWJThDqyj9d TRy/+pyWUNujjiKoN3sbpf8xdV4D8Mjnn0l6MFVgMb9vSG4iKm6NhOCje8VWgqyVZZiZ QCC01S7+9yVirpUPgiQUCbsio9fWeEz0wBzn9OccVLIYI7rCdqqyqCOcFhixq6Z7kYI/ sQylrXAbGb6H7tM7nXpnlIxG2ngG9uiiU2NgoiWURlPrcN9wKhM9nIs5PtF7TrHbNUDi MFO28t0WrNKgsxsXMxol86x1K9/j/Uvc2B11l0QjGtbYeRlvYUThfNTvfEcG+xPvD5Ds TOxg== X-Gm-Message-State: AOAM531M401tjJpEsuEdYDXgKTi0LwgvlHF8LIfM+2FBGeF/5ylJAJsd nQp/ZcfWAkt3LtUryWpZ7Z2KqiydT4ZDJ3lKRRE= X-Received: by 2002:a05:6402:3583:b0:410:a99b:59ee with SMTP id y3-20020a056402358300b00410a99b59eemr4217283edc.454.1645738501757; Thu, 24 Feb 2022 13:35:01 -0800 (PST) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id z22-20020a17090655d600b006d229436793sm175195ejp.223.2022.02.24.13.35.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 13:35:01 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next v4 06/12] selftests: mptcp: join: option to execute specific tests Date: Thu, 24 Feb 2022 22:34:00 +0100 Message-Id: <20220224213406.3127061-7-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224213406.3127061-1-matthieu.baerts@tessares.net> References: <20220224213406.3127061-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Often, it is needed to run one specific test. There are options to run subgroups of tests but when only one fails, no need to run all the subgroup. So far, the solution was to edit the script to comment the tests that are not needed but that's not ideal. Now, it is possible to run one specific test by giving the ID of the tests that are going to be validated, e.g. ./mptcp_join.sh 36 37 This is cleaner and saves time. Technically, the reset* functions now return 0 if the test can be executed. This naturally creates sections per test in the code which is also helpful to understand what a test is exactly doing. Suggested-by: Paolo Abeni Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts --- .../testing/selftests/net/mptcp/mptcp_join.sh | 1755 +++++++++-------- 1 file changed, 939 insertions(+), 816 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index f68be7be3d1e..0ece39f306d2 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -20,6 +20,7 @@ validate_checksum=3D0 init=3D0 =20 declare -A all_tests +declare -a only_tests TEST_COUNT=3D0 nr_blank=3D40 =20 @@ -150,8 +151,30 @@ cleanup() cleanup_partial } =20 +skip_test() +{ + if [ "${#only_tests[@]}" -eq 0 ]; then + return 1 + fi + + local i + for i in "${only_tests[@]}"; do + if [ "${TEST_COUNT}" -eq "${i}" ]; then + return 1 + fi + done + + return 0 +} + reset() { + TEST_COUNT=3D$((TEST_COUNT+1)) + + if skip_test; then + return 1 + fi + if [ "${init}" !=3D "1" ]; then init else @@ -159,11 +182,13 @@ reset() fi =20 init_partial + + return 0 } =20 reset_with_cookies() { - reset + reset || return 1 =20 for netns in "$ns1" "$ns2";do ip netns exec $netns sysctl -q net.ipv4.tcp_syncookies=3D2 @@ -180,7 +205,7 @@ reset_with_add_addr_timeout() tables=3D"ip6tables" fi =20 - reset + reset || return 1 =20 ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=3D1 ip netns exec $ns2 $tables -A OUTPUT -p tcp \ @@ -195,7 +220,7 @@ reset_with_checksum() local ns1_enable=3D$1 local ns2_enable=3D$2 =20 - reset + reset || return 1 =20 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=3D$ns1_enable ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=3D$ns2_enable @@ -206,7 +231,7 @@ reset_with_allow_join_id0() local ns1_enable=3D$1 local ns2_enable=3D$2 =20 - reset + reset || return 1 =20 ip netns exec $ns1 sysctl -q net.mptcp.allow_join_initial_addr_port=3D$ns= 1_enable ip netns exec $ns2 sysctl -q net.mptcp.allow_join_initial_addr_port=3D$ns= 2_enable @@ -230,7 +255,7 @@ reset_with_allow_join_id0() # Netfilter is used to mark packets with enough data. reset_with_fail() { - reset + reset || return 1 =20 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=3D1 ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=3D1 @@ -571,8 +596,7 @@ do_transfer() speed=3D"$9" sflags=3D"${10}" =20 - port=3D$((10000+$TEST_COUNT)) - TEST_COUNT=3D$((TEST_COUNT+1)) + port=3D$((10000+$TEST_COUNT-1)) =20 :> "$cout" :> "$sout" @@ -1479,888 +1503,968 @@ set_userspace_pm() =20 subflows_tests() { - reset - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "no JOIN" "0" "0" "0" + if reset; then + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "no JOIN" 0 0 0 + fi =20 # subflow limited by client - reset - pm_nl_set_limits $ns1 0 0 - pm_nl_set_limits $ns2 0 0 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow, limited by client" 0 0 0 + if reset; then + pm_nl_set_limits $ns1 0 0 + pm_nl_set_limits $ns2 0 0 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "single subflow, limited by client" 0 0 0 + fi =20 # subflow limited by server - reset - pm_nl_set_limits $ns1 0 0 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow, limited by server" 1 1 0 + if reset; then + pm_nl_set_limits $ns1 0 0 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "single subflow, limited by server" 1 1 0 + fi =20 # subflow - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow" 1 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "single subflow" 1 1 1 + fi =20 # multiple subflows - reset - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 0 2 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "multiple subflows" 2 2 2 + if reset; then + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "multiple subflows" 2 2 2 + fi =20 # multiple subflows limited by server - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 2 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "multiple subflows, limited by server" 2 2 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "multiple subflows, limited by server" 2 2 1 + fi =20 # single subflow, dev - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow dev ns2eth3 - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow, dev" 1 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow dev ns2eth3 + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "single subflow, dev" 1 1 1 + fi } =20 subflows_error_tests() { # If a single subflow is configured, and matches the MPC src # address, no additional subflow should be created - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow - chk_join_nr "no MPC reuse with single endpoint" 0 0 0 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow + chk_join_nr "no MPC reuse with single endpoint" 0 0 0 + fi =20 # multiple subflows, with subflow creation error - reset - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 0 2 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow - ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j REJECT - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow - chk_join_nr "multi subflows, with failing subflow" 1 1 1 + if reset; then + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow + ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j REJECT + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow + chk_join_nr "multi subflows, with failing subflow" 1 1 1 + fi =20 # multiple subflows, with subflow timeout on MPJ - reset - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 0 2 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow - ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j DROP - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow - chk_join_nr "multi subflows, with subflow timeout" 1 1 1 + if reset; then + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow + ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j DROP + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow + chk_join_nr "multi subflows, with subflow timeout" 1 1 1 + fi =20 # multiple subflows, check that the endpoint corresponding to # closed subflow (due to reset) is not reused if additional # subflows are added later - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j REJECT - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow & - - # updates in the child shell do not have any effect here, we - # need to bump the test counter for the above case - TEST_COUNT=3D$((TEST_COUNT+1)) + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j REJECT + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow & =20 - # mpj subflow will be in TW after the reset - wait_attempt_fail $ns2 - pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow - wait + # mpj subflow will be in TW after the reset + wait_attempt_fail $ns2 + pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow + wait =20 - # additional subflow could be created only if the PM select - # the later endpoint, skipping the already used one - chk_join_nr "multi subflows, fair usage on close" 1 1 1 + # additional subflow could be created only if the PM select + # the later endpoint, skipping the already used one + chk_join_nr "multi subflows, fair usage on close" 1 1 1 + fi } =20 signal_address_tests() { # add_address, unused - reset - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "unused signal address" 0 0 0 - chk_add_nr 1 1 + if reset; then + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "unused signal address" 0 0 0 + chk_add_nr 1 1 + fi =20 # accept and use add_addr - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal address" 1 1 1 - chk_add_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "signal address" 1 1 1 + chk_add_nr 1 1 + fi =20 # accept and use add_addr with an additional subflow # note: signal address in server ns and local addresses in client ns must # belong to different subnets or one of the listed local address could be # used for 'add_addr' subflow - reset - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 1 2 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflow and signal" 2 2 2 - chk_add_nr 1 1 + if reset; then + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 1 2 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "subflow and signal" 2 2 2 + chk_add_nr 1 1 + fi =20 # accept and use add_addr with additional subflows - reset - pm_nl_set_limits $ns1 0 3 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_set_limits $ns2 1 3 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "multiple subflows and signal" 3 3 3 - chk_add_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 3 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_set_limits $ns2 1 3 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "multiple subflows and signal" 3 3 3 + chk_add_nr 1 1 + fi =20 # signal addresses - reset - pm_nl_set_limits $ns1 3 3 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_add_endpoint $ns1 10.0.3.1 flags signal - pm_nl_add_endpoint $ns1 10.0.4.1 flags signal - pm_nl_set_limits $ns2 3 3 - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal addresses" 3 3 3 - chk_add_nr 3 3 + if reset; then + pm_nl_set_limits $ns1 3 3 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_add_endpoint $ns1 10.0.3.1 flags signal + pm_nl_add_endpoint $ns1 10.0.4.1 flags signal + pm_nl_set_limits $ns2 3 3 + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "signal addresses" 3 3 3 + chk_add_nr 3 3 + fi =20 # signal invalid addresses - reset - pm_nl_set_limits $ns1 3 3 - pm_nl_add_endpoint $ns1 10.0.12.1 flags signal - pm_nl_add_endpoint $ns1 10.0.3.1 flags signal - pm_nl_add_endpoint $ns1 10.0.14.1 flags signal - pm_nl_set_limits $ns2 3 3 - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal invalid addresses" 1 1 1 - chk_add_nr 3 3 + if reset; then + pm_nl_set_limits $ns1 3 3 + pm_nl_add_endpoint $ns1 10.0.12.1 flags signal + pm_nl_add_endpoint $ns1 10.0.3.1 flags signal + pm_nl_add_endpoint $ns1 10.0.14.1 flags signal + pm_nl_set_limits $ns2 3 3 + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "signal invalid addresses" 1 1 1 + chk_add_nr 3 3 + fi =20 # signal addresses race test - reset - pm_nl_set_limits $ns1 4 4 - pm_nl_set_limits $ns2 4 4 - pm_nl_add_endpoint $ns1 10.0.1.1 flags signal - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_add_endpoint $ns1 10.0.3.1 flags signal - pm_nl_add_endpoint $ns1 10.0.4.1 flags signal - pm_nl_add_endpoint $ns2 10.0.1.2 flags signal - pm_nl_add_endpoint $ns2 10.0.2.2 flags signal - pm_nl_add_endpoint $ns2 10.0.3.2 flags signal - pm_nl_add_endpoint $ns2 10.0.4.2 flags signal - - # the peer could possibly miss some addr notification, allow retransmissi= on - ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=3D1 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow - chk_join_nr "signal addresses race test" 3 3 3 + if reset; then + pm_nl_set_limits $ns1 4 4 + pm_nl_set_limits $ns2 4 4 + pm_nl_add_endpoint $ns1 10.0.1.1 flags signal + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_add_endpoint $ns1 10.0.3.1 flags signal + pm_nl_add_endpoint $ns1 10.0.4.1 flags signal + pm_nl_add_endpoint $ns2 10.0.1.2 flags signal + pm_nl_add_endpoint $ns2 10.0.2.2 flags signal + pm_nl_add_endpoint $ns2 10.0.3.2 flags signal + pm_nl_add_endpoint $ns2 10.0.4.2 flags signal + + # the peer could possibly miss some addr notification, allow retransmiss= ion + ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=3D1 + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow + chk_join_nr "signal addresses race test" 3 3 3 =20 - # the server will not signal the address terminating - # the MPC subflow - chk_add_nr 3 3 + # the server will not signal the address terminating + # the MPC subflow + chk_add_nr 3 3 + fi } =20 link_failure_tests() { # accept and use add_addr with additional subflows and link loss - reset - - # without any b/w limit each veth could spool the packets and get - # them acked at xmit time, so that the corresponding subflow will - # have almost always no outstanding pkts, the scheduler will pick - # always the first subflow and we will have hard time testing - # active backup and link switch-over. - # Let's set some arbitrary (low) virtual link limits. - init_shapers - pm_nl_set_limits $ns1 0 3 - pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal - pm_nl_set_limits $ns2 1 3 - pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow - pm_nl_add_endpoint $ns2 10.0.4.2 dev ns2eth4 flags subflow - run_tests $ns1 $ns2 10.0.1.1 1 - chk_join_nr "multiple flows, signal, link failure" 3 3 3 - chk_add_nr 1 1 - chk_stale_nr $ns2 1 5 1 + if reset; then + # without any b/w limit each veth could spool the packets and get + # them acked at xmit time, so that the corresponding subflow will + # have almost always no outstanding pkts, the scheduler will pick + # always the first subflow and we will have hard time testing + # active backup and link switch-over. + # Let's set some arbitrary (low) virtual link limits. + init_shapers + pm_nl_set_limits $ns1 0 3 + pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal + pm_nl_set_limits $ns2 1 3 + pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow + pm_nl_add_endpoint $ns2 10.0.4.2 dev ns2eth4 flags subflow + run_tests $ns1 $ns2 10.0.1.1 1 + chk_join_nr "multiple flows, signal, link failure" 3 3 3 + chk_add_nr 1 1 + chk_stale_nr $ns2 1 5 1 + fi =20 # accept and use add_addr with additional subflows and link loss # for bidirectional transfer - reset - init_shapers - pm_nl_set_limits $ns1 0 3 - pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal - pm_nl_set_limits $ns2 1 3 - pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow - pm_nl_add_endpoint $ns2 10.0.4.2 dev ns2eth4 flags subflow - run_tests $ns1 $ns2 10.0.1.1 2 - chk_join_nr "multi flows, signal, bidi, link fail" 3 3 3 - chk_add_nr 1 1 - chk_stale_nr $ns2 1 -1 1 + if reset; then + init_shapers + pm_nl_set_limits $ns1 0 3 + pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal + pm_nl_set_limits $ns2 1 3 + pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow + pm_nl_add_endpoint $ns2 10.0.4.2 dev ns2eth4 flags subflow + run_tests $ns1 $ns2 10.0.1.1 2 + chk_join_nr "multi flows, signal, bidi, link fail" 3 3 3 + chk_add_nr 1 1 + chk_stale_nr $ns2 1 -1 1 + fi =20 # 2 subflows plus 1 backup subflow with a lossy link, backup # will never be used - reset - init_shapers - pm_nl_set_limits $ns1 0 2 - pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal - pm_nl_set_limits $ns2 1 2 - FAILING_LINKS=3D"1" - pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup - run_tests $ns1 $ns2 10.0.1.1 1 - chk_join_nr "backup subflow unused, link failure" 2 2 2 - chk_add_nr 1 1 - chk_link_usage $ns2 ns2eth3 $cinsent 0 + if reset; then + init_shapers + pm_nl_set_limits $ns1 0 2 + pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal + pm_nl_set_limits $ns2 1 2 + FAILING_LINKS=3D"1" + pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup + run_tests $ns1 $ns2 10.0.1.1 1 + chk_join_nr "backup subflow unused, link failure" 2 2 2 + chk_add_nr 1 1 + chk_link_usage $ns2 ns2eth3 $cinsent 0 + fi =20 # 2 lossy links after half transfer, backup will get half of # the traffic - reset - init_shapers - pm_nl_set_limits $ns1 0 2 - pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal - pm_nl_set_limits $ns2 1 2 - pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup - FAILING_LINKS=3D"1 2" - run_tests $ns1 $ns2 10.0.1.1 1 - chk_join_nr "backup flow used, multi links fail" 2 2 2 - chk_add_nr 1 1 - chk_stale_nr $ns2 2 4 2 - chk_link_usage $ns2 ns2eth3 $cinsent 50 + if reset; then + init_shapers + pm_nl_set_limits $ns1 0 2 + pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal + pm_nl_set_limits $ns2 1 2 + pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup + FAILING_LINKS=3D"1 2" + run_tests $ns1 $ns2 10.0.1.1 1 + chk_join_nr "backup flow used, multi links fail" 2 2 2 + chk_add_nr 1 1 + chk_stale_nr $ns2 2 4 2 + chk_link_usage $ns2 ns2eth3 $cinsent 50 + fi =20 # use a backup subflow with the first subflow on a lossy link # for bidirectional transfer - reset - init_shapers - pm_nl_set_limits $ns1 0 2 - pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal - pm_nl_set_limits $ns2 1 3 - pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup - FAILING_LINKS=3D"1 2" - run_tests $ns1 $ns2 10.0.1.1 2 - chk_join_nr "backup flow used, bidi, link failure" 2 2 2 - chk_add_nr 1 1 - chk_stale_nr $ns2 1 -1 2 - chk_link_usage $ns2 ns2eth3 $cinsent 50 + if reset; then + init_shapers + pm_nl_set_limits $ns1 0 2 + pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal + pm_nl_set_limits $ns2 1 3 + pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup + FAILING_LINKS=3D"1 2" + run_tests $ns1 $ns2 10.0.1.1 2 + chk_join_nr "backup flow used, bidi, link failure" 2 2 2 + chk_add_nr 1 1 + chk_stale_nr $ns2 1 -1 2 + chk_link_usage $ns2 ns2eth3 $cinsent 50 + fi } =20 add_addr_timeout_tests() { # add_addr timeout - reset_with_add_addr_timeout - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow - chk_join_nr "signal address, ADD_ADDR timeout" 1 1 1 - chk_add_nr 4 0 + if reset_with_add_addr_timeout; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow + chk_join_nr "signal address, ADD_ADDR timeout" 1 1 1 + chk_add_nr 4 0 + fi =20 # add_addr timeout IPv6 - reset_with_add_addr_timeout 6 - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal - run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow - chk_join_nr "signal address, ADD_ADDR6 timeout" 1 1 1 - chk_add_nr 4 0 + if reset_with_add_addr_timeout 6; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal + run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow + chk_join_nr "signal address, ADD_ADDR6 timeout" 1 1 1 + chk_add_nr 4 0 + fi =20 # signal addresses timeout - reset_with_add_addr_timeout - pm_nl_set_limits $ns1 2 2 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_add_endpoint $ns1 10.0.3.1 flags signal - pm_nl_set_limits $ns2 2 2 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10 - chk_join_nr "signal addresses, ADD_ADDR timeout" 2 2 2 - chk_add_nr 8 0 + if reset_with_add_addr_timeout; then + pm_nl_set_limits $ns1 2 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_add_endpoint $ns1 10.0.3.1 flags signal + pm_nl_set_limits $ns2 2 2 + run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10 + chk_join_nr "signal addresses, ADD_ADDR timeout" 2 2 2 + chk_add_nr 8 0 + fi =20 # signal invalid addresses timeout - reset_with_add_addr_timeout - pm_nl_set_limits $ns1 2 2 - pm_nl_add_endpoint $ns1 10.0.12.1 flags signal - pm_nl_add_endpoint $ns1 10.0.3.1 flags signal - pm_nl_set_limits $ns2 2 2 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10 - chk_join_nr "invalid address, ADD_ADDR timeout" 1 1 1 - chk_add_nr 8 0 + if reset_with_add_addr_timeout; then + pm_nl_set_limits $ns1 2 2 + pm_nl_add_endpoint $ns1 10.0.12.1 flags signal + pm_nl_add_endpoint $ns1 10.0.3.1 flags signal + pm_nl_set_limits $ns2 2 2 + run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10 + chk_join_nr "invalid address, ADD_ADDR timeout" 1 1 1 + chk_add_nr 8 0 + fi } =20 remove_tests() { # single subflow, remove - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow - chk_join_nr "remove single subflow" 1 1 1 - chk_rm_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow + chk_join_nr "remove single subflow" 1 1 1 + chk_rm_nr 1 1 + fi =20 # multiple subflows, remove - reset - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 0 2 - pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 0 0 -2 slow - chk_join_nr "remove multiple subflows" 2 2 2 - chk_rm_nr 2 2 + if reset; then + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 0 -2 slow + chk_join_nr "remove multiple subflows" 2 2 2 + chk_rm_nr 2 2 + fi =20 # single address, remove - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_set_limits $ns2 1 1 - run_tests $ns1 $ns2 10.0.1.1 0 -1 0 slow - chk_join_nr "remove single address" 1 1 1 - chk_add_nr 1 1 - chk_rm_nr 1 1 invert + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_set_limits $ns2 1 1 + run_tests $ns1 $ns2 10.0.1.1 0 -1 0 slow + chk_join_nr "remove single address" 1 1 1 + chk_add_nr 1 1 + chk_rm_nr 1 1 invert + fi =20 # subflow and signal, remove - reset - pm_nl_set_limits $ns1 0 2 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_set_limits $ns2 1 2 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 0 -1 -1 slow - chk_join_nr "remove subflow and signal" 2 2 2 - chk_add_nr 1 1 - chk_rm_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_set_limits $ns2 1 2 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 -1 -1 slow + chk_join_nr "remove subflow and signal" 2 2 2 + chk_add_nr 1 1 + chk_rm_nr 1 1 + fi =20 # subflows and signal, remove - reset - pm_nl_set_limits $ns1 0 3 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_set_limits $ns2 1 3 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 0 -1 -2 slow - chk_join_nr "remove subflows and signal" 3 3 3 - chk_add_nr 1 1 - chk_rm_nr 2 2 + if reset; then + pm_nl_set_limits $ns1 0 3 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_set_limits $ns2 1 3 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 -1 -2 slow + chk_join_nr "remove subflows and signal" 3 3 3 + chk_add_nr 1 1 + chk_rm_nr 2 2 + fi =20 # addresses remove - reset - pm_nl_set_limits $ns1 3 3 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal id 250 - pm_nl_add_endpoint $ns1 10.0.3.1 flags signal - pm_nl_add_endpoint $ns1 10.0.4.1 flags signal - pm_nl_set_limits $ns2 3 3 - run_tests $ns1 $ns2 10.0.1.1 0 -3 0 slow - chk_join_nr "remove addresses" 3 3 3 - chk_add_nr 3 3 - chk_rm_nr 3 3 invert + if reset; then + pm_nl_set_limits $ns1 3 3 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal id 250 + pm_nl_add_endpoint $ns1 10.0.3.1 flags signal + pm_nl_add_endpoint $ns1 10.0.4.1 flags signal + pm_nl_set_limits $ns2 3 3 + run_tests $ns1 $ns2 10.0.1.1 0 -3 0 slow + chk_join_nr "remove addresses" 3 3 3 + chk_add_nr 3 3 + chk_rm_nr 3 3 invert + fi =20 # invalid addresses remove - reset - pm_nl_set_limits $ns1 3 3 - pm_nl_add_endpoint $ns1 10.0.12.1 flags signal - pm_nl_add_endpoint $ns1 10.0.3.1 flags signal - pm_nl_add_endpoint $ns1 10.0.14.1 flags signal - pm_nl_set_limits $ns2 3 3 - run_tests $ns1 $ns2 10.0.1.1 0 -3 0 slow - chk_join_nr "remove invalid addresses" 1 1 1 - chk_add_nr 3 3 - chk_rm_nr 3 1 invert + if reset; then + pm_nl_set_limits $ns1 3 3 + pm_nl_add_endpoint $ns1 10.0.12.1 flags signal + pm_nl_add_endpoint $ns1 10.0.3.1 flags signal + pm_nl_add_endpoint $ns1 10.0.14.1 flags signal + pm_nl_set_limits $ns2 3 3 + run_tests $ns1 $ns2 10.0.1.1 0 -3 0 slow + chk_join_nr "remove invalid addresses" 1 1 1 + chk_add_nr 3 3 + chk_rm_nr 3 1 invert + fi =20 # subflows and signal, flush - reset - pm_nl_set_limits $ns1 0 3 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_set_limits $ns2 1 3 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow - chk_join_nr "flush subflows and signal" 3 3 3 - chk_add_nr 1 1 - chk_rm_nr 1 3 invert simult + if reset; then + pm_nl_set_limits $ns1 0 3 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_set_limits $ns2 1 3 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow + chk_join_nr "flush subflows and signal" 3 3 3 + chk_add_nr 1 1 + chk_rm_nr 1 3 invert simult + fi =20 # subflows flush - reset - pm_nl_set_limits $ns1 3 3 - pm_nl_set_limits $ns2 3 3 - pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow id 150 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow - chk_join_nr "flush subflows" 3 3 3 - chk_rm_nr 0 3 simult + if reset; then + pm_nl_set_limits $ns1 3 3 + pm_nl_set_limits $ns2 3 3 + pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow id 150 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow + chk_join_nr "flush subflows" 3 3 3 + chk_rm_nr 0 3 simult + fi =20 # addresses flush - reset - pm_nl_set_limits $ns1 3 3 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal id 250 - pm_nl_add_endpoint $ns1 10.0.3.1 flags signal - pm_nl_add_endpoint $ns1 10.0.4.1 flags signal - pm_nl_set_limits $ns2 3 3 - run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow - chk_join_nr "flush addresses" 3 3 3 - chk_add_nr 3 3 - chk_rm_nr 3 3 invert simult + if reset; then + pm_nl_set_limits $ns1 3 3 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal id 250 + pm_nl_add_endpoint $ns1 10.0.3.1 flags signal + pm_nl_add_endpoint $ns1 10.0.4.1 flags signal + pm_nl_set_limits $ns2 3 3 + run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow + chk_join_nr "flush addresses" 3 3 3 + chk_add_nr 3 3 + chk_rm_nr 3 3 invert simult + fi =20 # invalid addresses flush - reset - pm_nl_set_limits $ns1 3 3 - pm_nl_add_endpoint $ns1 10.0.12.1 flags signal - pm_nl_add_endpoint $ns1 10.0.3.1 flags signal - pm_nl_add_endpoint $ns1 10.0.14.1 flags signal - pm_nl_set_limits $ns2 3 3 - run_tests $ns1 $ns2 10.0.1.1 0 -8 0 slow - chk_join_nr "flush invalid addresses" 1 1 1 - chk_add_nr 3 3 - chk_rm_nr 3 1 invert + if reset; then + pm_nl_set_limits $ns1 3 3 + pm_nl_add_endpoint $ns1 10.0.12.1 flags signal + pm_nl_add_endpoint $ns1 10.0.3.1 flags signal + pm_nl_add_endpoint $ns1 10.0.14.1 flags signal + pm_nl_set_limits $ns2 3 3 + run_tests $ns1 $ns2 10.0.1.1 0 -8 0 slow + chk_join_nr "flush invalid addresses" 1 1 1 + chk_add_nr 3 3 + chk_rm_nr 3 1 invert + fi =20 # remove id 0 subflow - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 0 0 -9 slow - chk_join_nr "remove id 0 subflow" 1 1 1 - chk_rm_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 0 -9 slow + chk_join_nr "remove id 0 subflow" 1 1 1 + chk_rm_nr 1 1 + fi =20 # remove id 0 address - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_set_limits $ns2 1 1 - run_tests $ns1 $ns2 10.0.1.1 0 -9 0 slow - chk_join_nr "remove id 0 address" 1 1 1 - chk_add_nr 1 1 - chk_rm_nr 1 1 invert + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_set_limits $ns2 1 1 + run_tests $ns1 $ns2 10.0.1.1 0 -9 0 slow + chk_join_nr "remove id 0 address" 1 1 1 + chk_add_nr 1 1 + chk_rm_nr 1 1 invert + fi } =20 add_tests() { # add single subflow - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow - chk_join_nr "add single subflow" 1 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow + chk_join_nr "add single subflow" 1 1 1 + fi =20 # add signal address - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 1 1 - run_tests $ns1 $ns2 10.0.1.1 0 1 0 slow - chk_join_nr "add signal address" 1 1 1 - chk_add_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 1 1 + run_tests $ns1 $ns2 10.0.1.1 0 1 0 slow + chk_join_nr "add signal address" 1 1 1 + chk_add_nr 1 1 + fi =20 # add multiple subflows - reset - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 0 2 - run_tests $ns1 $ns2 10.0.1.1 0 0 2 slow - chk_join_nr "add multiple subflows" 2 2 2 + if reset; then + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + run_tests $ns1 $ns2 10.0.1.1 0 0 2 slow + chk_join_nr "add multiple subflows" 2 2 2 + fi =20 # add multiple subflows IPv6 - reset - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 0 2 - run_tests $ns1 $ns2 dead:beef:1::1 0 0 2 slow - chk_join_nr "add multiple subflows IPv6" 2 2 2 + if reset; then + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + run_tests $ns1 $ns2 dead:beef:1::1 0 0 2 slow + chk_join_nr "add multiple subflows IPv6" 2 2 2 + fi =20 # add multiple addresses IPv6 - reset - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 2 2 - run_tests $ns1 $ns2 dead:beef:1::1 0 2 0 slow - chk_join_nr "add multiple addresses IPv6" 2 2 2 - chk_add_nr 2 2 + if reset; then + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 2 2 + run_tests $ns1 $ns2 dead:beef:1::1 0 2 0 slow + chk_join_nr "add multiple addresses IPv6" 2 2 2 + chk_add_nr 2 2 + fi } =20 ipv6_tests() { # subflow IPv6 - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 dead:beef:3::2 dev ns2eth3 flags subflow - run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow - chk_join_nr "single subflow IPv6" 1 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 dead:beef:3::2 dev ns2eth3 flags subflow + run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow + chk_join_nr "single subflow IPv6" 1 1 1 + fi =20 # add_address, unused IPv6 - reset - pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal - run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow - chk_join_nr "unused signal address IPv6" 0 0 0 - chk_add_nr 1 1 + if reset; then + pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal + run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow + chk_join_nr "unused signal address IPv6" 0 0 0 + chk_add_nr 1 1 + fi =20 # signal address IPv6 - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal - pm_nl_set_limits $ns2 1 1 - run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow - chk_join_nr "single address IPv6" 1 1 1 - chk_add_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal + pm_nl_set_limits $ns2 1 1 + run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow + chk_join_nr "single address IPv6" 1 1 1 + chk_add_nr 1 1 + fi =20 # single address IPv6, remove - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal - pm_nl_set_limits $ns2 1 1 - run_tests $ns1 $ns2 dead:beef:1::1 0 -1 0 slow - chk_join_nr "remove single address IPv6" 1 1 1 - chk_add_nr 1 1 - chk_rm_nr 1 1 invert + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal + pm_nl_set_limits $ns2 1 1 + run_tests $ns1 $ns2 dead:beef:1::1 0 -1 0 slow + chk_join_nr "remove single address IPv6" 1 1 1 + chk_add_nr 1 1 + chk_rm_nr 1 1 invert + fi =20 # subflow and signal IPv6, remove - reset - pm_nl_set_limits $ns1 0 2 - pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal - pm_nl_set_limits $ns2 1 2 - pm_nl_add_endpoint $ns2 dead:beef:3::2 dev ns2eth3 flags subflow - run_tests $ns1 $ns2 dead:beef:1::1 0 -1 -1 slow - chk_join_nr "remove subflow and signal IPv6" 2 2 2 - chk_add_nr 1 1 - chk_rm_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 2 + pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal + pm_nl_set_limits $ns2 1 2 + pm_nl_add_endpoint $ns2 dead:beef:3::2 dev ns2eth3 flags subflow + run_tests $ns1 $ns2 dead:beef:1::1 0 -1 -1 slow + chk_join_nr "remove subflow and signal IPv6" 2 2 2 + chk_add_nr 1 1 + chk_rm_nr 1 1 + fi } =20 v4mapped_tests() { # subflow IPv4-mapped to IPv4-mapped - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 "::ffff:10.0.3.2" flags subflow - run_tests $ns1 $ns2 "::ffff:10.0.1.1" - chk_join_nr "single subflow IPv4-mapped" 1 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 "::ffff:10.0.3.2" flags subflow + run_tests $ns1 $ns2 "::ffff:10.0.1.1" + chk_join_nr "single subflow IPv4-mapped" 1 1 1 + fi =20 # signal address IPv4-mapped with IPv4-mapped sk - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns1 "::ffff:10.0.2.1" flags signal - run_tests $ns1 $ns2 "::ffff:10.0.1.1" - chk_join_nr "signal address IPv4-mapped" 1 1 1 - chk_add_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 "::ffff:10.0.2.1" flags signal + run_tests $ns1 $ns2 "::ffff:10.0.1.1" + chk_join_nr "signal address IPv4-mapped" 1 1 1 + chk_add_nr 1 1 + fi =20 # subflow v4-map-v6 - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 "::ffff:10.0.1.1" - chk_join_nr "single subflow v4-map-v6" 1 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 "::ffff:10.0.1.1" + chk_join_nr "single subflow v4-map-v6" 1 1 1 + fi =20 # signal address v4-map-v6 - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 "::ffff:10.0.1.1" - chk_join_nr "signal address v4-map-v6" 1 1 1 - chk_add_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 "::ffff:10.0.1.1" + chk_join_nr "signal address v4-map-v6" 1 1 1 + chk_add_nr 1 1 + fi =20 # subflow v6-map-v4 - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 "::ffff:10.0.3.2" flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow v6-map-v4" 1 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 "::ffff:10.0.3.2" flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "single subflow v6-map-v4" 1 1 1 + fi =20 # signal address v6-map-v4 - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns1 "::ffff:10.0.2.1" flags signal - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal address v6-map-v4" 1 1 1 - chk_add_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 "::ffff:10.0.2.1" flags signal + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "signal address v6-map-v4" 1 1 1 + chk_add_nr 1 1 + fi =20 # no subflow IPv6 to v4 address - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 dead:beef:2::2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "no JOIN with diff families v4-v6" 0 0 0 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 dead:beef:2::2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "no JOIN with diff families v4-v6" 0 0 0 + fi =20 # no subflow IPv6 to v4 address even if v6 has a valid v4 at the end - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 dead:beef:2::10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "no JOIN with diff families v4-v6-2" 0 0 0 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 dead:beef:2::10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "no JOIN with diff families v4-v6-2" 0 0 0 + fi =20 # no subflow IPv4 to v6 address, no need to slow down too then - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 dead:beef:1::1 - chk_join_nr "no JOIN with diff families v6-v4" 0 0 0 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 dead:beef:1::1 + chk_join_nr "no JOIN with diff families v6-v4" 0 0 0 + fi } =20 backup_tests() { # single subflow, backup - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow,backup - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow nobackup - chk_join_nr "single subflow, backup" 1 1 1 - chk_prio_nr 0 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow,backup + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow nobackup + chk_join_nr "single subflow, backup" 1 1 1 + chk_prio_nr 0 1 + fi =20 # single address, backup - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_set_limits $ns2 1 1 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup - chk_join_nr "single address, backup" 1 1 1 - chk_add_nr 1 1 - chk_prio_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_set_limits $ns2 1 1 + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup + chk_join_nr "single address, backup" 1 1 1 + chk_add_nr 1 1 + chk_prio_nr 1 1 + fi =20 # single address with port, backup - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 - pm_nl_set_limits $ns2 1 1 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup - chk_join_nr "single address with port, backup" 1 1 1 - chk_add_nr 1 1 - chk_prio_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 + pm_nl_set_limits $ns2 1 1 + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup + chk_join_nr "single address with port, backup" 1 1 1 + chk_add_nr 1 1 + chk_prio_nr 1 1 + fi } =20 add_addr_ports_tests() { # signal address with port - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal address with port" 1 1 1 - chk_add_nr 1 1 1 + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "signal address with port" 1 1 1 + chk_add_nr 1 1 1 + fi =20 # subflow and signal with port - reset - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 1 2 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflow and signal with port" 2 2 2 - chk_add_nr 1 1 1 + if reset; then + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 1 2 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "subflow and signal with port" 2 2 2 + chk_add_nr 1 1 1 + fi =20 # single address with port, remove - reset - pm_nl_set_limits $ns1 0 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 - pm_nl_set_limits $ns2 1 1 - run_tests $ns1 $ns2 10.0.1.1 0 -1 0 slow - chk_join_nr "remove single address with port" 1 1 1 - chk_add_nr 1 1 1 - chk_rm_nr 1 1 invert + if reset; then + pm_nl_set_limits $ns1 0 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 + pm_nl_set_limits $ns2 1 1 + run_tests $ns1 $ns2 10.0.1.1 0 -1 0 slow + chk_join_nr "remove single address with port" 1 1 1 + chk_add_nr 1 1 1 + chk_rm_nr 1 1 invert + fi =20 # subflow and signal with port, remove - reset - pm_nl_set_limits $ns1 0 2 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 - pm_nl_set_limits $ns2 1 2 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 0 -1 -1 slow - chk_join_nr "remove subflow and signal with port" 2 2 2 - chk_add_nr 1 1 1 - chk_rm_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 + pm_nl_set_limits $ns2 1 2 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 -1 -1 slow + chk_join_nr "remove subflow and signal with port" 2 2 2 + chk_add_nr 1 1 1 + chk_rm_nr 1 1 + fi =20 # subflows and signal with port, flush - reset - pm_nl_set_limits $ns1 0 3 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 - pm_nl_set_limits $ns2 1 3 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 0 -8 -2 slow - chk_join_nr "flush subflows and signal with port" 3 3 3 - chk_add_nr 1 1 - chk_rm_nr 1 3 invert simult + if reset; then + pm_nl_set_limits $ns1 0 3 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 + pm_nl_set_limits $ns2 1 3 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 -8 -2 slow + chk_join_nr "flush subflows and signal with port" 3 3 3 + chk_add_nr 1 1 + chk_rm_nr 1 3 invert simult + fi =20 # multiple addresses with port - reset - pm_nl_set_limits $ns1 2 2 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 - pm_nl_add_endpoint $ns1 10.0.3.1 flags signal port 10100 - pm_nl_set_limits $ns2 2 2 - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "multiple addresses with port" 2 2 2 - chk_add_nr 2 2 2 + if reset; then + pm_nl_set_limits $ns1 2 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 + pm_nl_add_endpoint $ns1 10.0.3.1 flags signal port 10100 + pm_nl_set_limits $ns2 2 2 + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "multiple addresses with port" 2 2 2 + chk_add_nr 2 2 2 + fi =20 # multiple addresses with ports - reset - pm_nl_set_limits $ns1 2 2 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 - pm_nl_add_endpoint $ns1 10.0.3.1 flags signal port 10101 - pm_nl_set_limits $ns2 2 2 - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "multiple addresses with ports" 2 2 2 - chk_add_nr 2 2 2 + if reset; then + pm_nl_set_limits $ns1 2 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 + pm_nl_add_endpoint $ns1 10.0.3.1 flags signal port 10101 + pm_nl_set_limits $ns2 2 2 + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "multiple addresses with ports" 2 2 2 + chk_add_nr 2 2 2 + fi } =20 syncookies_tests() { # single subflow, syncookies - reset_with_cookies - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow with syn cookies" 1 1 1 + if reset_with_cookies; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "single subflow with syn cookies" 1 1 1 + fi =20 # multiple subflows with syn cookies - reset_with_cookies - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 0 2 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "multiple subflows with syn cookies" 2 2 2 + if reset_with_cookies; then + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "multiple subflows with syn cookies" 2 2 2 + fi =20 # multiple subflows limited by server - reset_with_cookies - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 2 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflows limited by server w cookies" 2 1 1 + if reset_with_cookies; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "subflows limited by server w cookies" 2 1 1 + fi =20 # test signal address with cookies - reset_with_cookies - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal address with syn cookies" 1 1 1 - chk_add_nr 1 1 + if reset_with_cookies; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "signal address with syn cookies" 1 1 1 + chk_add_nr 1 1 + fi =20 # test cookie with subflow and signal - reset_with_cookies - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 1 2 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflow and signal w cookies" 2 2 2 - chk_add_nr 1 1 + if reset_with_cookies; then + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 1 2 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "subflow and signal w cookies" 2 2 2 + chk_add_nr 1 1 + fi =20 # accept and use add_addr with additional subflows - reset_with_cookies - pm_nl_set_limits $ns1 0 3 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_set_limits $ns2 1 3 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflows and signal w. cookies" 3 3 3 - chk_add_nr 1 1 + if reset_with_cookies; then + pm_nl_set_limits $ns1 0 3 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_set_limits $ns2 1 3 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "subflows and signal w. cookies" 3 3 3 + chk_add_nr 1 1 + fi } =20 checksum_tests() { # checksum test 0 0 - reset_with_checksum 0 0 - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - run_tests $ns1 $ns2 10.0.1.1 - chk_csum_nr "checksum test 0 0" + if reset_with_checksum 0 0; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + run_tests $ns1 $ns2 10.0.1.1 + chk_csum_nr "checksum test 0 0" + fi =20 # checksum test 1 1 - reset_with_checksum 1 1 - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - run_tests $ns1 $ns2 10.0.1.1 - chk_csum_nr "checksum test 1 1" + if reset_with_checksum 1 1; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + run_tests $ns1 $ns2 10.0.1.1 + chk_csum_nr "checksum test 1 1" + fi =20 # checksum test 0 1 - reset_with_checksum 0 1 - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - run_tests $ns1 $ns2 10.0.1.1 - chk_csum_nr "checksum test 0 1" + if reset_with_checksum 0 1; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + run_tests $ns1 $ns2 10.0.1.1 + chk_csum_nr "checksum test 0 1" + fi =20 # checksum test 1 0 - reset_with_checksum 1 0 - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - run_tests $ns1 $ns2 10.0.1.1 - chk_csum_nr "checksum test 1 0" + if reset_with_checksum 1 0; then + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + run_tests $ns1 $ns2 10.0.1.1 + chk_csum_nr "checksum test 1 0" + fi } =20 deny_join_id0_tests() { # subflow allow join id0 ns1 - reset_with_allow_join_id0 1 0 - pm_nl_set_limits $ns1 1 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow allow join id0 ns1" 1 1 1 + if reset_with_allow_join_id0 1 0; then + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "single subflow allow join id0 ns1" 1 1 1 + fi =20 # subflow allow join id0 ns2 - reset_with_allow_join_id0 0 1 - pm_nl_set_limits $ns1 1 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow allow join id0 ns2" 0 0 0 + if reset_with_allow_join_id0 0 1; then + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "single subflow allow join id0 ns2" 0 0 0 + fi =20 # signal address allow join id0 ns1 # ADD_ADDRs are not affected by allow_join_id0 value. - reset_with_allow_join_id0 1 0 - pm_nl_set_limits $ns1 1 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal address allow join id0 ns1" 1 1 1 - chk_add_nr 1 1 + if reset_with_allow_join_id0 1 0; then + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "signal address allow join id0 ns1" 1 1 1 + chk_add_nr 1 1 + fi =20 # signal address allow join id0 ns2 # ADD_ADDRs are not affected by allow_join_id0 value. - reset_with_allow_join_id0 0 1 - pm_nl_set_limits $ns1 1 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal address allow join id0 ns2" 1 1 1 - chk_add_nr 1 1 + if reset_with_allow_join_id0 0 1; then + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "signal address allow join id0 ns2" 1 1 1 + chk_add_nr 1 1 + fi =20 # subflow and address allow join id0 ns1 - reset_with_allow_join_id0 1 0 - pm_nl_set_limits $ns1 2 2 - pm_nl_set_limits $ns2 2 2 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflow and address allow join id0 1" 2 2 2 + if reset_with_allow_join_id0 1 0; then + pm_nl_set_limits $ns1 2 2 + pm_nl_set_limits $ns2 2 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "subflow and address allow join id0 1" 2 2 2 + fi =20 # subflow and address allow join id0 ns2 - reset_with_allow_join_id0 0 1 - pm_nl_set_limits $ns1 2 2 - pm_nl_set_limits $ns2 2 2 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflow and address allow join id0 2" 1 1 1 + if reset_with_allow_join_id0 0 1; then + pm_nl_set_limits $ns1 2 2 + pm_nl_set_limits $ns2 2 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "subflow and address allow join id0 2" 1 1 1 + fi } =20 fullmesh_tests() @@ -2368,95 +2472,104 @@ fullmesh_tests() # fullmesh 1 # 2 fullmesh addrs in ns2, added before the connection, # 1 non-fullmesh addr in ns1, added during the connection. - reset - pm_nl_set_limits $ns1 0 4 - pm_nl_set_limits $ns2 1 4 - pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow,fullmesh - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow,fullmesh - run_tests $ns1 $ns2 10.0.1.1 0 1 0 slow - chk_join_nr "fullmesh test 2x1" 4 4 4 - chk_add_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 0 4 + pm_nl_set_limits $ns2 1 4 + pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow,fullmesh + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow,fullmesh + run_tests $ns1 $ns2 10.0.1.1 0 1 0 slow + chk_join_nr "fullmesh test 2x1" 4 4 4 + chk_add_nr 1 1 + fi =20 # fullmesh 2 # 1 non-fullmesh addr in ns1, added before the connection, # 1 fullmesh addr in ns2, added during the connection. - reset - pm_nl_set_limits $ns1 1 3 - pm_nl_set_limits $ns2 1 3 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_1 slow - chk_join_nr "fullmesh test 1x1" 3 3 3 - chk_add_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 1 3 + pm_nl_set_limits $ns2 1 3 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_1 slow + chk_join_nr "fullmesh test 1x1" 3 3 3 + chk_add_nr 1 1 + fi =20 # fullmesh 3 # 1 non-fullmesh addr in ns1, added before the connection, # 2 fullmesh addrs in ns2, added during the connection. - reset - pm_nl_set_limits $ns1 2 5 - pm_nl_set_limits $ns2 1 5 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_2 slow - chk_join_nr "fullmesh test 1x2" 5 5 5 - chk_add_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 2 5 + pm_nl_set_limits $ns2 1 5 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_2 slow + chk_join_nr "fullmesh test 1x2" 5 5 5 + chk_add_nr 1 1 + fi =20 # fullmesh 4 # 1 non-fullmesh addr in ns1, added before the connection, # 2 fullmesh addrs in ns2, added during the connection, # limit max_subflows to 4. - reset - pm_nl_set_limits $ns1 2 4 - pm_nl_set_limits $ns2 1 4 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_2 slow - chk_join_nr "fullmesh test 1x2, limited" 4 4 4 - chk_add_nr 1 1 + if reset; then + pm_nl_set_limits $ns1 2 4 + pm_nl_set_limits $ns2 1 4 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_2 slow + chk_join_nr "fullmesh test 1x2, limited" 4 4 4 + chk_add_nr 1 1 + fi =20 # set fullmesh flag - reset - pm_nl_set_limits $ns1 4 4 - pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow - pm_nl_set_limits $ns2 4 4 - run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow fullmesh - chk_join_nr "set fullmesh flag test" 2 2 2 - chk_rm_nr 0 1 + if reset; then + pm_nl_set_limits $ns1 4 4 + pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow + pm_nl_set_limits $ns2 4 4 + run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow fullmesh + chk_join_nr "set fullmesh flag test" 2 2 2 + chk_rm_nr 0 1 + fi =20 # set nofullmesh flag - reset - pm_nl_set_limits $ns1 4 4 - pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow,fullmesh - pm_nl_set_limits $ns2 4 4 - run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_1 slow nofullmesh - chk_join_nr "set nofullmesh flag test" 2 2 2 - chk_rm_nr 0 1 + if reset; then + pm_nl_set_limits $ns1 4 4 + pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow,fullmesh + pm_nl_set_limits $ns2 4 4 + run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_1 slow nofullmesh + chk_join_nr "set nofullmesh flag test" 2 2 2 + chk_rm_nr 0 1 + fi =20 # set backup,fullmesh flags - reset - pm_nl_set_limits $ns1 4 4 - pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow - pm_nl_set_limits $ns2 4 4 - run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow backup,fullmesh - chk_join_nr "set backup,fullmesh flags test" 2 2 2 - chk_prio_nr 0 1 - chk_rm_nr 0 1 + if reset; then + pm_nl_set_limits $ns1 4 4 + pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow + pm_nl_set_limits $ns2 4 4 + run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow backup,fullmesh + chk_join_nr "set backup,fullmesh flags test" 2 2 2 + chk_prio_nr 0 1 + chk_rm_nr 0 1 + fi =20 # set nobackup,nofullmesh flags - reset - pm_nl_set_limits $ns1 4 4 - pm_nl_set_limits $ns2 4 4 - pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow,backup,fullmesh - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow nobackup,nofullmesh - chk_join_nr "set nobackup,nofullmesh flags test" 2 2 2 - chk_prio_nr 0 1 - chk_rm_nr 0 1 + if reset; then + pm_nl_set_limits $ns1 4 4 + pm_nl_set_limits $ns2 4 4 + pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow,backup,fullmesh + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow nobackup,nofullmesh + chk_join_nr "set nobackup,nofullmesh flags test" 2 2 2 + chk_prio_nr 0 1 + chk_rm_nr 0 1 + fi } =20 fastclose_tests() { - reset - run_tests $ns1 $ns2 10.0.1.1 1024 0 fastclose_2 - chk_join_nr "fastclose test" 0 0 0 - chk_fclose_nr 1 1 - chk_rst_nr 1 1 invert + if reset; then + run_tests $ns1 $ns2 10.0.1.1 1024 0 fastclose_2 + chk_join_nr "fastclose test" 0 0 0 + chk_fclose_nr 1 1 + chk_rst_nr 1 1 invert + fi } =20 pedit_action_pkts() @@ -2468,116 +2581,114 @@ pedit_action_pkts() fail_tests() { # multiple subflows - reset_with_fail 2 - tc -n $ns2 qdisc add dev ns2eth1 root netem rate 20mbit delay 1 - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.2.2 dev ns2eth2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 1024 - chk_join_nr "MP_FAIL MP_RST: $(pedit_action_pkts) corrupted pkts" 1 1 1 \ - +1 +0 \ - 1 \ - 1 + if reset_with_fail 2; then + tc -n $ns2 qdisc add dev ns2eth1 root netem rate 20mbit delay 1 + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.2.2 dev ns2eth2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 1024 + chk_join_nr "MP_FAIL MP_RST: $(pedit_action_pkts) corrupted pkts" \ + 1 1 1 +1 +0 1 1 + fi =20 # single subflow - reset_with_fail 1 - run_tests $ns1 $ns2 10.0.1.1 128 - # syn_nr syn_ack_nr ack_nr - # csum_ns1 csum_ns2 - # fail_nr - # rst_nr - # infi_nr - chk_join_nr "Infinite map: $(pedit_action_pkts) corrupted pkts" 0 0 0 \ - +1 +0 \ - 1 \ - 0 \ - 1 + if reset_with_fail 1; then + run_tests $ns1 $ns2 10.0.1.1 128 + chk_join_nr "Infinite map: $(pedit_action_pkts) corrupted pkts" \ + 0 0 0 +1 +0 1 0 1 + fi } =20 userspace_tests() { # userspace pm type prevents add_addr - reset - set_userspace_pm $ns1 - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 0 2 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "userspace pm type prevents add_addr" 0 0 0 - chk_add_nr 0 0 + if reset; then + set_userspace_pm $ns1 + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "userspace pm type prevents add_addr" 0 0 0 + chk_add_nr 0 0 + fi =20 # userspace pm type echoes add_addr - reset - set_userspace_pm $ns2 - pm_nl_set_limits $ns1 0 2 - pm_nl_set_limits $ns2 0 2 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "userspace pm type echoes add_addr" 0 0 0 - chk_add_nr 1 1 + if reset; then + set_userspace_pm $ns2 + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "userspace pm type echoes add_addr" 0 0 0 + chk_add_nr 1 1 + fi =20 # userspace pm type rejects join - reset - set_userspace_pm $ns1 - pm_nl_set_limits $ns1 1 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "userspace pm type rejects join" 1 1 0 + if reset; then + set_userspace_pm $ns1 + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "userspace pm type rejects join" 1 1 0 + fi =20 # userspace pm type does not send join - reset - set_userspace_pm $ns2 - pm_nl_set_limits $ns1 1 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "userspace pm type does not send join" 0 0 0 + if reset; then + set_userspace_pm $ns2 + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "userspace pm type does not send join" 0 0 0 + fi =20 # userspace pm type prevents mp_prio - reset - set_userspace_pm $ns1 - pm_nl_set_limits $ns1 1 1 - pm_nl_set_limits $ns2 1 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup - chk_join_nr "userspace pm type prevents mp_prio" 1 1 0 - chk_prio_nr 0 0 + if reset; then + set_userspace_pm $ns1 + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup + chk_join_nr "userspace pm type prevents mp_prio" 1 1 0 + chk_prio_nr 0 0 + fi =20 # userspace pm type prevents rm_addr - reset - set_userspace_pm $ns1 - set_userspace_pm $ns2 - pm_nl_set_limits $ns1 0 1 - pm_nl_set_limits $ns2 0 1 - pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow - chk_join_nr "userspace pm type prevents rm_addr" 0 0 0 - chk_rm_nr 0 0 + if reset; then + set_userspace_pm $ns1 + set_userspace_pm $ns2 + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow + chk_join_nr "userspace pm type prevents rm_addr" 0 0 0 + chk_rm_nr 0 0 + fi } =20 implicit_tests() { # userspace pm type prevents add_addr - reset - pm_nl_set_limits $ns1 2 2 - pm_nl_set_limits $ns2 2 2 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow & + if reset; then + pm_nl_set_limits $ns1 2 2 + pm_nl_set_limits $ns2 2 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow & =20 - wait_mpj $ns1 - TEST_COUNT=3D$((TEST_COUNT + 1)) - pm_nl_check_endpoint "implicit EP" "creation" \ - $ns2 10.0.2.2 id 1 flags implicit + wait_mpj $ns1 + pm_nl_check_endpoint "implicit EP" "creation" \ + $ns2 10.0.2.2 id 1 flags implicit =20 - pm_nl_add_endpoint $ns2 10.0.2.2 id 33 - pm_nl_check_endpoint "" "ID change is prevented" \ - $ns2 10.0.2.2 id 1 flags implicit + pm_nl_add_endpoint $ns2 10.0.2.2 id 33 + pm_nl_check_endpoint "" "ID change is prevented" \ + $ns2 10.0.2.2 id 1 flags implicit =20 - 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 - wait + 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 + wait + fi } =20 # [$1: error message] @@ -2600,6 +2711,8 @@ usage() echo " -i use ip mptcp" echo " -h help" =20 + echo "[test ids]" + exit ${ret} } =20 @@ -2662,6 +2775,16 @@ while getopts "${all_tests_args}cCih" opt; do esac done =20 +shift $((OPTIND - 1)) + +for arg in "${@}"; do + if [[ "${arg}" =3D~ ^[0-9]+$ ]]; then + only_tests+=3D("${arg}") + else + usage "Unknown argument: ${arg}" + fi +done + if [ ${#tests[@]} -eq 0 ]; then tests=3D("${all_tests_names[@]}") fi --=20 2.34.1 From nobody Fri May 3 01:43:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1953239jad; Thu, 24 Feb 2022 13:35:16 -0800 (PST) X-Google-Smtp-Source: ABdhPJxDKa1wP/U5hCy4FgLo3e1KMU2BYRJysNgS3zErSjPja9FC7gLqUeUwWViK5EuGOxTRuRWd X-Received: by 2002:a50:8e44:0:b0:40f:d71f:bdf5 with SMTP id 4-20020a508e44000000b0040fd71fbdf5mr4288467edx.166.1645738515987; Thu, 24 Feb 2022 13:35:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645738515; cv=none; d=google.com; s=arc-20160816; b=usgc5qKTzL40iovDTrcRsxbapQSZr+qcRBW/tOfXhb0vgaVSeaB/bWH7khR6B0o3Z+ rrpaElU2LbAc33OOzD+63U6yQOOk7h4nkl+iRuo8HiIZnOGYaf4PZY13ITSIsmnFLQNJ OVQY0cFoQfnYlOy21MKezNSdRq8q1fuhjeTJnE3ooe5KsxcBnmcNbvhspGg9tfYQUeZB g2E1VmiQlheb2jAvgwoNZ+ZikFGMhdorZqgq7L4yepYRwZT/RIHotygP0dZWPepCq42n MryMul1em3iKjyikeP31kHCl3dEZlmZBcJOARgriCLj2uhJqaPm0lDFIMrDW6AeE1iuC 820Q== 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:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=4CVnChcGhP0RsrUm0n+8P09AFynRNgcBwlYtCzIZS50=; b=LxwytmgcgILTktuG/9JlQUbv7L7jgDVmMl7ZC4aWr0R8qJcozN2PLyrFHvfNUjg9RK opK4mj4K7otqNGTZr6enWEYNjpXH/Vc69bDl8C7tuSfDjbJulaxxlX33Ud0e/Fs4ssYd M+FCvE0Qptlm/o22H4VE98SNsXhZOrHviCY0gD4RlR7yQI1dyjAeeoprs/MKmedc6u/2 q14mUuNNq8M9eVsOAGNUDAuRhIS5J/Z7lO4A9Ks07KqgdX2/PVocNdRvpsUxmh9D8wnA 39PGPsVuHl5F+jSRYlksGDe4Bh8m7KMHbgh4aZ4iX1AzTNi30nTiY3eMxiPiTplwFr/P jo5A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=v7RiC3Xs; spf=pass (google.com: domain of mptcp+bounces-4021-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4021-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id o3-20020a170906974300b006d0908847d4si421182ejy.682.2022.02.24.13.35.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 13:35:15 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4021-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=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=v7RiC3Xs; spf=pass (google.com: domain of mptcp+bounces-4021-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4021-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 249DD1C0BED for ; Thu, 24 Feb 2022 21:35:14 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 81BC86956; Thu, 24 Feb 2022 21:35:08 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2496F6AA3 for ; Thu, 24 Feb 2022 21:35:05 +0000 (UTC) Received: by mail-ed1-f47.google.com with SMTP id z22so4764500edd.1 for ; Thu, 24 Feb 2022 13:35:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4CVnChcGhP0RsrUm0n+8P09AFynRNgcBwlYtCzIZS50=; b=v7RiC3XsDvfMQPiIvGBwVh/FZiktYM9I9u8NLRN7TiEN+N6JVB3IW8OE9mDUdCFbtr 6KoXSv7JpLQz3iXpWAFCLYhnPkGeWA0oht4/lemobZ96xITcplT7ecquUg3HFhaf0FV+ o94g5+aESLEGa3qPi9SZ122DqBvGv99Ywomp460UwfP6iG0hPLcm1pddLiFBEksV4jt1 iIEvzynTP8FB6HG7bloGNkmd5FMWLGHGbAd6icjXpt7gfeKgOMd3zDZoLluTGsWkm2kZ Kb8uE0e8Ftp88kXNAJwvdtUJevBhRaaBX1FyCh9+Oy49HA0B1Osr5a2dOA472YQJsGbv 382g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4CVnChcGhP0RsrUm0n+8P09AFynRNgcBwlYtCzIZS50=; b=b6x7/1VJe5ZhzKKd8pGxlyO59DZIDEfifjxaBv4t4m50VzcSmujcpVNip2b9MSPsRi AesZKNyf08HVaDsXnPZ9ClNLlBc5MSvOMabyxXQhNbVWUghjhkHfvq1RYkd2i8wI7zR/ 3h21lmbHWbZwgaCrYXT3a09lAY2+R69lLmJKJ3HlhNFYT9RoSDhpf2OL0dt5jGS6ce16 9BAdcF02MGhvOa3sm5gSdGc1D0j7nB8bn6WfmqC6uChuLqBRzNngs54THmHEYCpnEVCz PNG6Phtgt3bh7BqOOACS6EWAyMm1Tx5Lw/rkTwWd3aZL9JMpbT9eeY+W2+pbN/4RZw0H Yg5Q== X-Gm-Message-State: AOAM532zXfTIZ9SNKorozojkg5h4qSbNHR4F4UUxop3NtmqAbhusbg3Z QDjBih2Z2hXQDShzXM4LwyetpuxNKyjFEIpII6U= X-Received: by 2002:aa7:cad3:0:b0:410:b188:a49a with SMTP id l19-20020aa7cad3000000b00410b188a49amr4193533edt.416.1645738502476; Thu, 24 Feb 2022 13:35:02 -0800 (PST) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id z22-20020a17090655d600b006d229436793sm175195ejp.223.2022.02.24.13.35.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 13:35:02 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v4 07/12] selftests: mptcp: join: alt. to exec specific tests Date: Thu, 24 Feb 2022 22:34:01 +0100 Message-Id: <20220224213406.3127061-8-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224213406.3127061-1-matthieu.baerts@tessares.net> References: <20220224213406.3127061-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Running a specific test by giving the ID is often what we want: the CI reports an issue with the Nth test, it is reproducible with: ./mptcp_join.sh N But this might not work when there is a need to find which commit has introduced a regression making a test unstable: failing from time to time. Indeed, a specific test is not attached to one ID: the ID is in fact a counter. It means the same test can have a different ID if other tests have been added/removed before this unstable one. Remembering the current test can also help listing failed tests at the end. Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts --- .../testing/selftests/net/mptcp/mptcp_join.sh | 491 +++++++++--------- 1 file changed, 254 insertions(+), 237 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 0ece39f306d2..cd21170fa33e 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -20,8 +20,10 @@ validate_checksum=3D0 init=3D0 =20 declare -A all_tests -declare -a only_tests +declare -a only_tests_ids +declare -a only_tests_names TEST_COUNT=3D0 +TEST_NAME=3D"" nr_blank=3D40 =20 export FAILING_LINKS=3D"" @@ -153,22 +155,30 @@ cleanup() =20 skip_test() { - if [ "${#only_tests[@]}" -eq 0 ]; then + if [ "${#only_tests_ids[@]}" -eq 0 ] && [ "${#only_tests_names[@]}" -eq 0= ]; then return 1 fi =20 local i - for i in "${only_tests[@]}"; do + for i in "${only_tests_ids[@]}"; do if [ "${TEST_COUNT}" -eq "${i}" ]; then return 1 fi done + for i in "${only_tests_names[@]}"; do + if [ "${TEST_NAME}" =3D "${i}" ]; then + return 1 + fi + done =20 return 0 } =20 +# $1: test name reset() { + TEST_NAME=3D"${1}" + TEST_COUNT=3D$((TEST_COUNT+1)) =20 if skip_test; then @@ -186,27 +196,29 @@ reset() return 0 } =20 +# $1: test name reset_with_cookies() { - reset || return 1 + reset "${1}" || return 1 =20 for netns in "$ns1" "$ns2";do ip netns exec $netns sysctl -q net.ipv4.tcp_syncookies=3D2 done } =20 +# $1: test name reset_with_add_addr_timeout() { - local ip=3D"${1:-4}" + local ip=3D"${2:-4}" local tables =20 + reset "${1}" || return 1 + tables=3D"iptables" if [ $ip -eq 6 ]; then tables=3D"ip6tables" fi =20 - reset || return 1 - ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=3D1 ip netns exec $ns2 $tables -A OUTPUT -p tcp \ -m tcp --tcp-option 30 \ @@ -215,12 +227,13 @@ reset_with_add_addr_timeout() -j DROP } =20 +# $1: test name reset_with_checksum() { local ns1_enable=3D$1 local ns2_enable=3D$2 =20 - reset || return 1 + reset "checksum test ${1} ${2}" || return 1 =20 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=3D$ns1_enable ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=3D$ns2_enable @@ -228,10 +241,10 @@ reset_with_checksum() =20 reset_with_allow_join_id0() { - local ns1_enable=3D$1 - local ns2_enable=3D$2 + local ns1_enable=3D$2 + local ns2_enable=3D$3 =20 - reset || return 1 + reset "${1}" || return 1 =20 ip netns exec $ns1 sysctl -q net.mptcp.allow_join_initial_addr_port=3D$ns= 1_enable ip netns exec $ns2 sysctl -q net.mptcp.allow_join_initial_addr_port=3D$ns= 2_enable @@ -255,15 +268,15 @@ reset_with_allow_join_id0() # Netfilter is used to mark packets with enough data. reset_with_fail() { - reset || return 1 + reset "${1}" || return 1 =20 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=3D1 ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=3D1 =20 check_invert=3D1 validate_checksum=3D1 - local i=3D"$1" - local ip=3D"${2:-4}" + local i=3D"$2" + local ip=3D"${3:-4}" local tables =20 tables=3D"iptables" @@ -512,7 +525,7 @@ pm_nl_change_endpoint() pm_nl_check_endpoint() { local line expected_line - local title=3D"$1" + local need_title=3D$1 local msg=3D"$2" local ns=3D$3 local addr=3D$4 @@ -524,8 +537,8 @@ pm_nl_check_endpoint() local _id local id =20 - if [ -n "${title}" ]; then - printf "%03u %-36s %s" "${TEST_COUNT}" "${title}" "${msg}" + if [ "${need_title}" =3D 1 ]; then + printf "%03u %-36s %s" "${TEST_COUNT}" "${TEST_NAME}" "${msg}" else printf "%-${nr_blank}s %s" " " "${msg}" fi @@ -953,8 +966,9 @@ chk_csum_nr() csum_ns2=3D${csum_ns2:1} fi =20 - if [ ! -z "$msg" ]; then + if [ "${msg}" =3D 1 ]; then printf "%03u" "$TEST_COUNT" + msg=3D"${TEST_NAME}" else echo -n " " fi @@ -1125,20 +1139,25 @@ chk_infi_nr() =20 chk_join_nr() { - local msg=3D"$1" - local syn_nr=3D$2 - local syn_ack_nr=3D$3 - local ack_nr=3D$4 - local csum_ns1=3D${5:-0} - local csum_ns2=3D${6:-0} - local fail_nr=3D${7:-0} - local rst_nr=3D${8:-0} - local infi_nr=3D${9:-0} + local syn_nr=3D$1 + local syn_ack_nr=3D$2 + local ack_nr=3D$3 + local csum_ns1=3D${4:-0} + local csum_ns2=3D${5:-0} + local fail_nr=3D${6:-0} + local rst_nr=3D${7:-0} + local infi_nr=3D${8:-0} + local corrupted_pkts=3D${9:-0} local count local dump_stats local with_cookie + local title=3D"${TEST_NAME}" + + if [ "${corrupted_pkts}" -gt 0 ]; then + title+=3D": ${corrupted_pkts} corrupted pkts" + fi =20 - printf "%03u %-36s %s" "$TEST_COUNT" "$msg" "syn" + printf "%03u %-36s %s" "${TEST_COUNT}" "${title}" "syn" count=3D`ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinSynRx | awk '{= print $2}'` [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$syn_nr" ]; then @@ -1503,65 +1522,65 @@ set_userspace_pm() =20 subflows_tests() { - if reset; then + if reset "no JOIN"; then run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "no JOIN" 0 0 0 + chk_join_nr 0 0 0 fi =20 # subflow limited by client - if reset; then + if reset "single subflow, limited by client"; then pm_nl_set_limits $ns1 0 0 pm_nl_set_limits $ns2 0 0 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow, limited by client" 0 0 0 + chk_join_nr 0 0 0 fi =20 # subflow limited by server - if reset; then + if reset "single subflow, limited by server"; then pm_nl_set_limits $ns1 0 0 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow, limited by server" 1 1 0 + chk_join_nr 1 1 0 fi =20 # subflow - if reset; then + if reset "single subflow"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow" 1 1 1 + chk_join_nr 1 1 1 fi =20 # multiple subflows - if reset; then + if reset "multiple subflows"; then pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 0 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "multiple subflows" 2 2 2 + chk_join_nr 2 2 2 fi =20 # multiple subflows limited by server - if reset; then + if reset "multiple subflows, limited by server"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "multiple subflows, limited by server" 2 2 1 + chk_join_nr 2 2 1 fi =20 # single subflow, dev - if reset; then + if reset "single subflow, dev"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow dev ns2eth3 run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow, dev" 1 1 1 + chk_join_nr 1 1 1 fi } =20 @@ -1569,40 +1588,40 @@ subflows_error_tests() { # If a single subflow is configured, and matches the MPC src # address, no additional subflow should be created - if reset; then + if reset "no MPC reuse with single endpoint"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow - chk_join_nr "no MPC reuse with single endpoint" 0 0 0 + chk_join_nr 0 0 0 fi =20 # multiple subflows, with subflow creation error - if reset; then + if reset "multi subflows, with failing subflow"; then pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 0 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j REJECT run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow - chk_join_nr "multi subflows, with failing subflow" 1 1 1 + chk_join_nr 1 1 1 fi =20 # multiple subflows, with subflow timeout on MPJ - if reset; then + if reset "multi subflows, with subflow timeout"; then pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 0 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j DROP run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow - chk_join_nr "multi subflows, with subflow timeout" 1 1 1 + chk_join_nr 1 1 1 fi =20 # multiple subflows, check that the endpoint corresponding to # closed subflow (due to reset) is not reused if additional # subflows are added later - if reset; then + if reset "multi subflows, fair usage on close"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow @@ -1616,27 +1635,27 @@ subflows_error_tests() =20 # additional subflow could be created only if the PM select # the later endpoint, skipping the already used one - chk_join_nr "multi subflows, fair usage on close" 1 1 1 + chk_join_nr 1 1 1 fi } =20 signal_address_tests() { # add_address, unused - if reset; then + if reset "unused signal address"; then pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "unused signal address" 0 0 0 + chk_join_nr 0 0 0 chk_add_nr 1 1 fi =20 # accept and use add_addr - if reset; then + if reset "signal address"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal address" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 fi =20 @@ -1644,54 +1663,54 @@ signal_address_tests() # note: signal address in server ns and local addresses in client ns must # belong to different subnets or one of the listed local address could be # used for 'add_addr' subflow - if reset; then + if reset "subflow and signal"; then pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 1 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflow and signal" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 1 1 fi =20 # accept and use add_addr with additional subflows - if reset; then + if reset "multiple subflows and signal"; then pm_nl_set_limits $ns1 0 3 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_set_limits $ns2 1 3 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "multiple subflows and signal" 3 3 3 + chk_join_nr 3 3 3 chk_add_nr 1 1 fi =20 # signal addresses - if reset; then + if reset "signal addresses"; then pm_nl_set_limits $ns1 3 3 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_add_endpoint $ns1 10.0.3.1 flags signal pm_nl_add_endpoint $ns1 10.0.4.1 flags signal pm_nl_set_limits $ns2 3 3 run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal addresses" 3 3 3 + chk_join_nr 3 3 3 chk_add_nr 3 3 fi =20 # signal invalid addresses - if reset; then + if reset "signal invalid addresses"; then pm_nl_set_limits $ns1 3 3 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal pm_nl_add_endpoint $ns1 10.0.3.1 flags signal pm_nl_add_endpoint $ns1 10.0.14.1 flags signal pm_nl_set_limits $ns2 3 3 run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal invalid addresses" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 3 3 fi =20 # signal addresses race test - if reset; then + if reset "signal addresses race test"; then pm_nl_set_limits $ns1 4 4 pm_nl_set_limits $ns2 4 4 pm_nl_add_endpoint $ns1 10.0.1.1 flags signal @@ -1706,7 +1725,7 @@ signal_address_tests() # the peer could possibly miss some addr notification, allow retransmiss= ion ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=3D1 run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow - chk_join_nr "signal addresses race test" 3 3 3 + chk_join_nr 3 3 3 =20 # the server will not signal the address terminating # the MPC subflow @@ -1717,7 +1736,7 @@ signal_address_tests() link_failure_tests() { # accept and use add_addr with additional subflows and link loss - if reset; then + if reset "multiple flows, signal, link failure"; then # without any b/w limit each veth could spool the packets and get # them acked at xmit time, so that the corresponding subflow will # have almost always no outstanding pkts, the scheduler will pick @@ -1731,14 +1750,14 @@ link_failure_tests() pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow pm_nl_add_endpoint $ns2 10.0.4.2 dev ns2eth4 flags subflow run_tests $ns1 $ns2 10.0.1.1 1 - chk_join_nr "multiple flows, signal, link failure" 3 3 3 + chk_join_nr 3 3 3 chk_add_nr 1 1 chk_stale_nr $ns2 1 5 1 fi =20 # accept and use add_addr with additional subflows and link loss # for bidirectional transfer - if reset; then + if reset "multi flows, signal, bidi, link fail"; then init_shapers pm_nl_set_limits $ns1 0 3 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal @@ -1746,14 +1765,14 @@ link_failure_tests() pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow pm_nl_add_endpoint $ns2 10.0.4.2 dev ns2eth4 flags subflow run_tests $ns1 $ns2 10.0.1.1 2 - chk_join_nr "multi flows, signal, bidi, link fail" 3 3 3 + chk_join_nr 3 3 3 chk_add_nr 1 1 chk_stale_nr $ns2 1 -1 1 fi =20 # 2 subflows plus 1 backup subflow with a lossy link, backup # will never be used - if reset; then + if reset "backup subflow unused, link failure"; then init_shapers pm_nl_set_limits $ns1 0 2 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal @@ -1761,14 +1780,14 @@ link_failure_tests() FAILING_LINKS=3D"1" pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup run_tests $ns1 $ns2 10.0.1.1 1 - chk_join_nr "backup subflow unused, link failure" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 1 1 chk_link_usage $ns2 ns2eth3 $cinsent 0 fi =20 # 2 lossy links after half transfer, backup will get half of # the traffic - if reset; then + if reset "backup flow used, multi links fail"; then init_shapers pm_nl_set_limits $ns1 0 2 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal @@ -1776,7 +1795,7 @@ link_failure_tests() pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup FAILING_LINKS=3D"1 2" run_tests $ns1 $ns2 10.0.1.1 1 - chk_join_nr "backup flow used, multi links fail" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 1 1 chk_stale_nr $ns2 2 4 2 chk_link_usage $ns2 ns2eth3 $cinsent 50 @@ -1784,7 +1803,7 @@ link_failure_tests() =20 # use a backup subflow with the first subflow on a lossy link # for bidirectional transfer - if reset; then + if reset "backup flow used, bidi, link failure"; then init_shapers pm_nl_set_limits $ns1 0 2 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal @@ -1792,7 +1811,7 @@ link_failure_tests() pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup FAILING_LINKS=3D"1 2" run_tests $ns1 $ns2 10.0.1.1 2 - chk_join_nr "backup flow used, bidi, link failure" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 1 1 chk_stale_nr $ns2 1 -1 2 chk_link_usage $ns2 ns2eth3 $cinsent 50 @@ -1802,44 +1821,44 @@ link_failure_tests() add_addr_timeout_tests() { # add_addr timeout - if reset_with_add_addr_timeout; then + if reset_with_add_addr_timeout "signal address, ADD_ADDR timeout"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow - chk_join_nr "signal address, ADD_ADDR timeout" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 4 0 fi =20 # add_addr timeout IPv6 - if reset_with_add_addr_timeout 6; then + if reset_with_add_addr_timeout "signal address, ADD_ADDR6 timeout" 6; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow - chk_join_nr "signal address, ADD_ADDR6 timeout" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 4 0 fi =20 # signal addresses timeout - if reset_with_add_addr_timeout; then + if reset_with_add_addr_timeout "signal addresses, ADD_ADDR timeout"; then pm_nl_set_limits $ns1 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_add_endpoint $ns1 10.0.3.1 flags signal pm_nl_set_limits $ns2 2 2 run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10 - chk_join_nr "signal addresses, ADD_ADDR timeout" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 8 0 fi =20 # signal invalid addresses timeout - if reset_with_add_addr_timeout; then + if reset_with_add_addr_timeout "invalid address, ADD_ADDR timeout"; then pm_nl_set_limits $ns1 2 2 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal pm_nl_add_endpoint $ns1 10.0.3.1 flags signal pm_nl_set_limits $ns2 2 2 run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10 - chk_join_nr "invalid address, ADD_ADDR timeout" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 8 0 fi } @@ -1847,156 +1866,156 @@ add_addr_timeout_tests() remove_tests() { # single subflow, remove - if reset; then + if reset "remove single subflow"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow - chk_join_nr "remove single subflow" 1 1 1 + chk_join_nr 1 1 1 chk_rm_nr 1 1 fi =20 # multiple subflows, remove - if reset; then + if reset "remove multiple subflows"; then pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 0 2 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 0 -2 slow - chk_join_nr "remove multiple subflows" 2 2 2 + chk_join_nr 2 2 2 chk_rm_nr 2 2 fi =20 # single address, remove - if reset; then + if reset "remove single address"; then pm_nl_set_limits $ns1 0 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_set_limits $ns2 1 1 run_tests $ns1 $ns2 10.0.1.1 0 -1 0 slow - chk_join_nr "remove single address" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 chk_rm_nr 1 1 invert fi =20 # subflow and signal, remove - if reset; then + if reset "remove subflow and signal"; then pm_nl_set_limits $ns1 0 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_set_limits $ns2 1 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 -1 -1 slow - chk_join_nr "remove subflow and signal" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 1 1 chk_rm_nr 1 1 fi =20 # subflows and signal, remove - if reset; then + if reset "remove subflows and signal"; then pm_nl_set_limits $ns1 0 3 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_set_limits $ns2 1 3 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 -1 -2 slow - chk_join_nr "remove subflows and signal" 3 3 3 + chk_join_nr 3 3 3 chk_add_nr 1 1 chk_rm_nr 2 2 fi =20 # addresses remove - if reset; then + if reset "remove addresses"; then pm_nl_set_limits $ns1 3 3 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal id 250 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal pm_nl_add_endpoint $ns1 10.0.4.1 flags signal pm_nl_set_limits $ns2 3 3 run_tests $ns1 $ns2 10.0.1.1 0 -3 0 slow - chk_join_nr "remove addresses" 3 3 3 + chk_join_nr 3 3 3 chk_add_nr 3 3 chk_rm_nr 3 3 invert fi =20 # invalid addresses remove - if reset; then + if reset "remove invalid addresses"; then pm_nl_set_limits $ns1 3 3 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal pm_nl_add_endpoint $ns1 10.0.3.1 flags signal pm_nl_add_endpoint $ns1 10.0.14.1 flags signal pm_nl_set_limits $ns2 3 3 run_tests $ns1 $ns2 10.0.1.1 0 -3 0 slow - chk_join_nr "remove invalid addresses" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 3 3 chk_rm_nr 3 1 invert fi =20 # subflows and signal, flush - if reset; then + if reset "flush subflows and signal"; then pm_nl_set_limits $ns1 0 3 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_set_limits $ns2 1 3 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow - chk_join_nr "flush subflows and signal" 3 3 3 + chk_join_nr 3 3 3 chk_add_nr 1 1 chk_rm_nr 1 3 invert simult fi =20 # subflows flush - if reset; then + if reset "flush subflows"; then pm_nl_set_limits $ns1 3 3 pm_nl_set_limits $ns2 3 3 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow id 150 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow - chk_join_nr "flush subflows" 3 3 3 + chk_join_nr 3 3 3 chk_rm_nr 0 3 simult fi =20 # addresses flush - if reset; then + if reset "flush addresses"; then pm_nl_set_limits $ns1 3 3 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal id 250 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal pm_nl_add_endpoint $ns1 10.0.4.1 flags signal pm_nl_set_limits $ns2 3 3 run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow - chk_join_nr "flush addresses" 3 3 3 + chk_join_nr 3 3 3 chk_add_nr 3 3 chk_rm_nr 3 3 invert simult fi =20 # invalid addresses flush - if reset; then + if reset "flush invalid addresses"; then pm_nl_set_limits $ns1 3 3 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal pm_nl_add_endpoint $ns1 10.0.3.1 flags signal pm_nl_add_endpoint $ns1 10.0.14.1 flags signal pm_nl_set_limits $ns2 3 3 run_tests $ns1 $ns2 10.0.1.1 0 -8 0 slow - chk_join_nr "flush invalid addresses" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 3 3 chk_rm_nr 3 1 invert fi =20 # remove id 0 subflow - if reset; then + if reset "remove id 0 subflow"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 0 -9 slow - chk_join_nr "remove id 0 subflow" 1 1 1 + chk_join_nr 1 1 1 chk_rm_nr 1 1 fi =20 # remove id 0 address - if reset; then + if reset "remove id 0 address"; then pm_nl_set_limits $ns1 0 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_set_limits $ns2 1 1 run_tests $ns1 $ns2 10.0.1.1 0 -9 0 slow - chk_join_nr "remove id 0 address" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 chk_rm_nr 1 1 invert fi @@ -2005,44 +2024,44 @@ remove_tests() add_tests() { # add single subflow - if reset; then + if reset "add single subflow"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow - chk_join_nr "add single subflow" 1 1 1 + chk_join_nr 1 1 1 fi =20 # add signal address - if reset; then + if reset "add signal address"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 1 1 run_tests $ns1 $ns2 10.0.1.1 0 1 0 slow - chk_join_nr "add signal address" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 fi =20 # add multiple subflows - if reset; then + if reset "add multiple subflows"; then pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 0 2 run_tests $ns1 $ns2 10.0.1.1 0 0 2 slow - chk_join_nr "add multiple subflows" 2 2 2 + chk_join_nr 2 2 2 fi =20 # add multiple subflows IPv6 - if reset; then + if reset "add multiple subflows IPv6"; then pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 0 2 run_tests $ns1 $ns2 dead:beef:1::1 0 0 2 slow - chk_join_nr "add multiple subflows IPv6" 2 2 2 + chk_join_nr 2 2 2 fi =20 # add multiple addresses IPv6 - if reset; then + if reset "add multiple addresses IPv6"; then pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 2 2 run_tests $ns1 $ns2 dead:beef:1::1 0 2 0 slow - chk_join_nr "add multiple addresses IPv6" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 2 2 fi } @@ -2050,51 +2069,51 @@ add_tests() ipv6_tests() { # subflow IPv6 - if reset; then + if reset "single subflow IPv6"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 dead:beef:3::2 dev ns2eth3 flags subflow run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow - chk_join_nr "single subflow IPv6" 1 1 1 + chk_join_nr 1 1 1 fi =20 # add_address, unused IPv6 - if reset; then + if reset "unused signal address IPv6"; then pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow - chk_join_nr "unused signal address IPv6" 0 0 0 + chk_join_nr 0 0 0 chk_add_nr 1 1 fi =20 # signal address IPv6 - if reset; then + if reset "single address IPv6"; then pm_nl_set_limits $ns1 0 1 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal pm_nl_set_limits $ns2 1 1 run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow - chk_join_nr "single address IPv6" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 fi =20 # single address IPv6, remove - if reset; then + if reset "remove single address IPv6"; then pm_nl_set_limits $ns1 0 1 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal pm_nl_set_limits $ns2 1 1 run_tests $ns1 $ns2 dead:beef:1::1 0 -1 0 slow - chk_join_nr "remove single address IPv6" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 chk_rm_nr 1 1 invert fi =20 # subflow and signal IPv6, remove - if reset; then + if reset "remove subflow and signal IPv6"; then pm_nl_set_limits $ns1 0 2 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal pm_nl_set_limits $ns2 1 2 pm_nl_add_endpoint $ns2 dead:beef:3::2 dev ns2eth3 flags subflow run_tests $ns1 $ns2 dead:beef:1::1 0 -1 -1 slow - chk_join_nr "remove subflow and signal IPv6" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 1 1 chk_rm_nr 1 1 fi @@ -2103,120 +2122,120 @@ ipv6_tests() v4mapped_tests() { # subflow IPv4-mapped to IPv4-mapped - if reset; then + if reset "single subflow IPv4-mapped"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 "::ffff:10.0.3.2" flags subflow run_tests $ns1 $ns2 "::ffff:10.0.1.1" - chk_join_nr "single subflow IPv4-mapped" 1 1 1 + chk_join_nr 1 1 1 fi =20 # signal address IPv4-mapped with IPv4-mapped sk - if reset; then + if reset "signal address IPv4-mapped"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns1 "::ffff:10.0.2.1" flags signal run_tests $ns1 $ns2 "::ffff:10.0.1.1" - chk_join_nr "signal address IPv4-mapped" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 fi =20 # subflow v4-map-v6 - if reset; then + if reset "single subflow v4-map-v6"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 "::ffff:10.0.1.1" - chk_join_nr "single subflow v4-map-v6" 1 1 1 + chk_join_nr 1 1 1 fi =20 # signal address v4-map-v6 - if reset; then + if reset "signal address v4-map-v6"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 "::ffff:10.0.1.1" - chk_join_nr "signal address v4-map-v6" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 fi =20 # subflow v6-map-v4 - if reset; then + if reset "single subflow v6-map-v4"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 "::ffff:10.0.3.2" flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow v6-map-v4" 1 1 1 + chk_join_nr 1 1 1 fi =20 # signal address v6-map-v4 - if reset; then + if reset "signal address v6-map-v4"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns1 "::ffff:10.0.2.1" flags signal run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal address v6-map-v4" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 fi =20 # no subflow IPv6 to v4 address - if reset; then + if reset "no JOIN with diff families v4-v6"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 dead:beef:2::2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "no JOIN with diff families v4-v6" 0 0 0 + chk_join_nr 0 0 0 fi =20 # no subflow IPv6 to v4 address even if v6 has a valid v4 at the end - if reset; then + if reset "no JOIN with diff families v4-v6-2"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 dead:beef:2::10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "no JOIN with diff families v4-v6-2" 0 0 0 + chk_join_nr 0 0 0 fi =20 # no subflow IPv4 to v6 address, no need to slow down too then - if reset; then + if reset "no JOIN with diff families v6-v4"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 dead:beef:1::1 - chk_join_nr "no JOIN with diff families v6-v4" 0 0 0 + chk_join_nr 0 0 0 fi } =20 backup_tests() { # single subflow, backup - if reset; then + if reset "single subflow, backup"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow,backup run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow nobackup - chk_join_nr "single subflow, backup" 1 1 1 + chk_join_nr 1 1 1 chk_prio_nr 0 1 fi =20 # single address, backup - if reset; then + if reset "single address, backup"; then pm_nl_set_limits $ns1 0 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_set_limits $ns2 1 1 run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup - chk_join_nr "single address, backup" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 chk_prio_nr 1 1 fi =20 # single address with port, backup - if reset; then + if reset "single address with port, backup"; then pm_nl_set_limits $ns1 0 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 pm_nl_set_limits $ns2 1 1 run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup - chk_join_nr "single address with port, backup" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 chk_prio_nr 1 1 fi @@ -2225,81 +2244,81 @@ backup_tests() add_addr_ports_tests() { # signal address with port - if reset; then + if reset "signal address with port"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal address with port" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 1 fi =20 # subflow and signal with port - if reset; then + if reset "subflow and signal with port"; then pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 1 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflow and signal with port" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 1 1 1 fi =20 # single address with port, remove - if reset; then + if reset "remove single address with port"; then pm_nl_set_limits $ns1 0 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 pm_nl_set_limits $ns2 1 1 run_tests $ns1 $ns2 10.0.1.1 0 -1 0 slow - chk_join_nr "remove single address with port" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 1 chk_rm_nr 1 1 invert fi =20 # subflow and signal with port, remove - if reset; then + if reset "remove subflow and signal with port"; then pm_nl_set_limits $ns1 0 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 pm_nl_set_limits $ns2 1 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 -1 -1 slow - chk_join_nr "remove subflow and signal with port" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 1 1 1 chk_rm_nr 1 1 fi =20 # subflows and signal with port, flush - if reset; then + if reset "flush subflows and signal with port"; then pm_nl_set_limits $ns1 0 3 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 pm_nl_set_limits $ns2 1 3 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 -8 -2 slow - chk_join_nr "flush subflows and signal with port" 3 3 3 + chk_join_nr 3 3 3 chk_add_nr 1 1 chk_rm_nr 1 3 invert simult fi =20 # multiple addresses with port - if reset; then + if reset "multiple addresses with port"; then pm_nl_set_limits $ns1 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal port 10100 pm_nl_set_limits $ns2 2 2 run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "multiple addresses with port" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 2 2 2 fi =20 # multiple addresses with ports - if reset; then + if reset "multiple addresses with ports"; then pm_nl_set_limits $ns1 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal port 10101 pm_nl_set_limits $ns2 2 2 run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "multiple addresses with ports" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 2 2 2 fi } @@ -2307,64 +2326,64 @@ add_addr_ports_tests() syncookies_tests() { # single subflow, syncookies - if reset_with_cookies; then + if reset_with_cookies "single subflow with syn cookies"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow with syn cookies" 1 1 1 + chk_join_nr 1 1 1 fi =20 # multiple subflows with syn cookies - if reset_with_cookies; then + if reset_with_cookies "multiple subflows with syn cookies"; then pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 0 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "multiple subflows with syn cookies" 2 2 2 + chk_join_nr 2 2 2 fi =20 # multiple subflows limited by server - if reset_with_cookies; then + if reset_with_cookies "subflows limited by server w cookies"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflows limited by server w cookies" 2 1 1 + chk_join_nr 2 1 1 fi =20 # test signal address with cookies - if reset_with_cookies; then + if reset_with_cookies "signal address with syn cookies"; then pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal address with syn cookies" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 fi =20 # test cookie with subflow and signal - if reset_with_cookies; then + if reset_with_cookies "subflow and signal w cookies"; then pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 1 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflow and signal w cookies" 2 2 2 + chk_join_nr 2 2 2 chk_add_nr 1 1 fi =20 # accept and use add_addr with additional subflows - if reset_with_cookies; then + if reset_with_cookies "subflows and signal w. cookies"; then pm_nl_set_limits $ns1 0 3 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_set_limits $ns2 1 3 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflows and signal w. cookies" 3 3 3 + chk_join_nr 3 3 3 chk_add_nr 1 1 fi } @@ -2376,7 +2395,7 @@ checksum_tests() pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 run_tests $ns1 $ns2 10.0.1.1 - chk_csum_nr "checksum test 0 0" + chk_csum_nr 1 fi =20 # checksum test 1 1 @@ -2384,7 +2403,7 @@ checksum_tests() pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 run_tests $ns1 $ns2 10.0.1.1 - chk_csum_nr "checksum test 1 1" + chk_csum_nr 1 fi =20 # checksum test 0 1 @@ -2392,7 +2411,7 @@ checksum_tests() pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 run_tests $ns1 $ns2 10.0.1.1 - chk_csum_nr "checksum test 0 1" + chk_csum_nr 1 fi =20 # checksum test 1 0 @@ -2400,70 +2419,70 @@ checksum_tests() pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 run_tests $ns1 $ns2 10.0.1.1 - chk_csum_nr "checksum test 1 0" + chk_csum_nr 1 fi } =20 deny_join_id0_tests() { # subflow allow join id0 ns1 - if reset_with_allow_join_id0 1 0; then + if reset_with_allow_join_id0 "single subflow allow join id0 ns1" 1 0; then pm_nl_set_limits $ns1 1 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow allow join id0 ns1" 1 1 1 + chk_join_nr 1 1 1 fi =20 # subflow allow join id0 ns2 - if reset_with_allow_join_id0 0 1; then + if reset_with_allow_join_id0 "single subflow allow join id0 ns2" 0 1; then pm_nl_set_limits $ns1 1 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "single subflow allow join id0 ns2" 0 0 0 + chk_join_nr 0 0 0 fi =20 # signal address allow join id0 ns1 # ADD_ADDRs are not affected by allow_join_id0 value. - if reset_with_allow_join_id0 1 0; then + if reset_with_allow_join_id0 "signal address allow join id0 ns1" 1 0; then pm_nl_set_limits $ns1 1 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal address allow join id0 ns1" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 fi =20 # signal address allow join id0 ns2 # ADD_ADDRs are not affected by allow_join_id0 value. - if reset_with_allow_join_id0 0 1; then + if reset_with_allow_join_id0 "signal address allow join id0 ns2" 0 1; then pm_nl_set_limits $ns1 1 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "signal address allow join id0 ns2" 1 1 1 + chk_join_nr 1 1 1 chk_add_nr 1 1 fi =20 # subflow and address allow join id0 ns1 - if reset_with_allow_join_id0 1 0; then + if reset_with_allow_join_id0 "subflow and address allow join id0 1" 1 0; = then pm_nl_set_limits $ns1 2 2 pm_nl_set_limits $ns2 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflow and address allow join id0 1" 2 2 2 + chk_join_nr 2 2 2 fi =20 # subflow and address allow join id0 ns2 - if reset_with_allow_join_id0 0 1; then + if reset_with_allow_join_id0 "subflow and address allow join id0 2" 0 1; = then pm_nl_set_limits $ns1 2 2 pm_nl_set_limits $ns2 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "subflow and address allow join id0 2" 1 1 1 + chk_join_nr 1 1 1 fi } =20 @@ -2472,37 +2491,37 @@ fullmesh_tests() # fullmesh 1 # 2 fullmesh addrs in ns2, added before the connection, # 1 non-fullmesh addr in ns1, added during the connection. - if reset; then + if reset "fullmesh test 2x1"; then pm_nl_set_limits $ns1 0 4 pm_nl_set_limits $ns2 1 4 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow,fullmesh pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow,fullmesh run_tests $ns1 $ns2 10.0.1.1 0 1 0 slow - chk_join_nr "fullmesh test 2x1" 4 4 4 + chk_join_nr 4 4 4 chk_add_nr 1 1 fi =20 # fullmesh 2 # 1 non-fullmesh addr in ns1, added before the connection, # 1 fullmesh addr in ns2, added during the connection. - if reset; then + if reset "fullmesh test 1x1"; then pm_nl_set_limits $ns1 1 3 pm_nl_set_limits $ns2 1 3 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_1 slow - chk_join_nr "fullmesh test 1x1" 3 3 3 + chk_join_nr 3 3 3 chk_add_nr 1 1 fi =20 # fullmesh 3 # 1 non-fullmesh addr in ns1, added before the connection, # 2 fullmesh addrs in ns2, added during the connection. - if reset; then + if reset "fullmesh test 1x2"; then pm_nl_set_limits $ns1 2 5 pm_nl_set_limits $ns2 1 5 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_2 slow - chk_join_nr "fullmesh test 1x2" 5 5 5 + chk_join_nr 5 5 5 chk_add_nr 1 1 fi =20 @@ -2510,53 +2529,53 @@ fullmesh_tests() # 1 non-fullmesh addr in ns1, added before the connection, # 2 fullmesh addrs in ns2, added during the connection, # limit max_subflows to 4. - if reset; then + if reset "fullmesh test 1x2, limited"; then pm_nl_set_limits $ns1 2 4 pm_nl_set_limits $ns2 1 4 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_2 slow - chk_join_nr "fullmesh test 1x2, limited" 4 4 4 + chk_join_nr 4 4 4 chk_add_nr 1 1 fi =20 # set fullmesh flag - if reset; then + if reset "set fullmesh flag test"; then pm_nl_set_limits $ns1 4 4 pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow pm_nl_set_limits $ns2 4 4 run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow fullmesh - chk_join_nr "set fullmesh flag test" 2 2 2 + chk_join_nr 2 2 2 chk_rm_nr 0 1 fi =20 # set nofullmesh flag - if reset; then + if reset "set nofullmesh flag test"; then pm_nl_set_limits $ns1 4 4 pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow,fullmesh pm_nl_set_limits $ns2 4 4 run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_1 slow nofullmesh - chk_join_nr "set nofullmesh flag test" 2 2 2 + chk_join_nr 2 2 2 chk_rm_nr 0 1 fi =20 # set backup,fullmesh flags - if reset; then + if reset "set backup,fullmesh flags test"; then pm_nl_set_limits $ns1 4 4 pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow pm_nl_set_limits $ns2 4 4 run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow backup,fullmesh - chk_join_nr "set backup,fullmesh flags test" 2 2 2 + chk_join_nr 2 2 2 chk_prio_nr 0 1 chk_rm_nr 0 1 fi =20 # set nobackup,nofullmesh flags - if reset; then + if reset "set nobackup,nofullmesh flags test"; then pm_nl_set_limits $ns1 4 4 pm_nl_set_limits $ns2 4 4 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow,backup,fullmesh run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow nobackup,nofullmesh - chk_join_nr "set nobackup,nofullmesh flags test" 2 2 2 + chk_join_nr 2 2 2 chk_prio_nr 0 1 chk_rm_nr 0 1 fi @@ -2564,9 +2583,9 @@ fullmesh_tests() =20 fastclose_tests() { - if reset; then + if reset "fastclose test"; then run_tests $ns1 $ns2 10.0.1.1 1024 0 fastclose_2 - chk_join_nr "fastclose test" 0 0 0 + chk_join_nr 0 0 0 chk_fclose_nr 1 1 chk_rst_nr 1 1 invert fi @@ -2581,88 +2600,86 @@ pedit_action_pkts() fail_tests() { # multiple subflows - if reset_with_fail 2; then + if reset_with_fail "MP_FAIL MP_RST" 2; then tc -n $ns2 qdisc add dev ns2eth1 root netem rate 20mbit delay 1 pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.2.2 dev ns2eth2 flags subflow run_tests $ns1 $ns2 10.0.1.1 1024 - chk_join_nr "MP_FAIL MP_RST: $(pedit_action_pkts) corrupted pkts" \ - 1 1 1 +1 +0 1 1 + chk_join_nr 1 1 1 +1 +0 1 1 0 "$(pedit_action_pkts)" fi =20 # single subflow - if reset_with_fail 1; then + if reset_with_fail "Infinite map" 1; then run_tests $ns1 $ns2 10.0.1.1 128 - chk_join_nr "Infinite map: $(pedit_action_pkts) corrupted pkts" \ - 0 0 0 +1 +0 1 0 1 + chk_join_nr 0 0 0 +1 +0 1 0 1 "$(pedit_action_pkts)" fi } =20 userspace_tests() { # userspace pm type prevents add_addr - if reset; then + if reset "userspace pm type prevents add_addr"; then set_userspace_pm $ns1 pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 0 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "userspace pm type prevents add_addr" 0 0 0 + chk_join_nr 0 0 0 chk_add_nr 0 0 fi =20 # userspace pm type echoes add_addr - if reset; then + if reset "userspace pm type echoes add_addr"; then set_userspace_pm $ns2 pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 0 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "userspace pm type echoes add_addr" 0 0 0 + chk_join_nr 0 0 0 chk_add_nr 1 1 fi =20 # userspace pm type rejects join - if reset; then + if reset "userspace pm type rejects join"; then set_userspace_pm $ns1 pm_nl_set_limits $ns1 1 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "userspace pm type rejects join" 1 1 0 + chk_join_nr 1 1 0 fi =20 # userspace pm type does not send join - if reset; then + if reset "userspace pm type does not send join"; then set_userspace_pm $ns2 pm_nl_set_limits $ns1 1 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr "userspace pm type does not send join" 0 0 0 + chk_join_nr 0 0 0 fi =20 # userspace pm type prevents mp_prio - if reset; then + if reset "userspace pm type prevents mp_prio"; then set_userspace_pm $ns1 pm_nl_set_limits $ns1 1 1 pm_nl_set_limits $ns2 1 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup - chk_join_nr "userspace pm type prevents mp_prio" 1 1 0 + chk_join_nr 1 1 0 chk_prio_nr 0 0 fi =20 # userspace pm type prevents rm_addr - if reset; then + if reset "userspace pm type prevents rm_addr"; then set_userspace_pm $ns1 set_userspace_pm $ns2 pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow - chk_join_nr "userspace pm type prevents rm_addr" 0 0 0 + chk_join_nr 0 0 0 chk_rm_nr 0 0 fi } @@ -2670,22 +2687,22 @@ userspace_tests() implicit_tests() { # userspace pm type prevents add_addr - if reset; then + if reset "implicit EP"; then pm_nl_set_limits $ns1 2 2 pm_nl_set_limits $ns2 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow & =20 wait_mpj $ns1 - pm_nl_check_endpoint "implicit EP" "creation" \ + pm_nl_check_endpoint 1 "creation" \ $ns2 10.0.2.2 id 1 flags implicit =20 pm_nl_add_endpoint $ns2 10.0.2.2 id 33 - pm_nl_check_endpoint "" "ID change is prevented" \ + pm_nl_check_endpoint 0 "ID change is prevented" \ $ns2 10.0.2.2 id 1 flags implicit =20 pm_nl_add_endpoint $ns2 10.0.2.2 flags signal - pm_nl_check_endpoint "" "modif is allowed" \ + pm_nl_check_endpoint 0 "modif is allowed" \ $ns2 10.0.2.2 id 1 flags signal wait fi @@ -2711,7 +2728,7 @@ usage() echo " -i use ip mptcp" echo " -h help" =20 - echo "[test ids]" + echo "[test ids|names]" =20 exit ${ret} } @@ -2779,9 +2796,9 @@ shift $((OPTIND - 1)) =20 for arg in "${@}"; do if [[ "${arg}" =3D~ ^[0-9]+$ ]]; then - only_tests+=3D("${arg}") + only_tests_ids+=3D("${arg}") else - usage "Unknown argument: ${arg}" + only_tests_names+=3D("${arg}") fi done =20 --=20 2.34.1 From nobody Fri May 3 01:43:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1953182jad; Thu, 24 Feb 2022 13:35:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJyp7OrgQ4dhjtyqd+wzMZEO6Y880/RZP+nXMdIPrCZMpQtB3SE51O6IJqc3023EzFhPbNcK X-Received: by 2002:a17:906:9449:b0:6d0:9f3b:a6a3 with SMTP id z9-20020a170906944900b006d09f3ba6a3mr3906920ejx.383.1645738511365; Thu, 24 Feb 2022 13:35:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645738511; cv=none; d=google.com; s=arc-20160816; b=GaIVtOVzVrbBTABwvx5dq37iSi2kAuhU5aUvHcZDHNDzbGWaPvVqIvdIQu0uLieLkZ 5f6JEf0Hpelke2Poz497JZUVnh9R5OSWcj69azkjbylT9OrDREiGSFNXkgYe7Q0X7OJN po00lcT++Yacld1Zpz3DPh2TU9ux4WEv8wFpqOTSgj3HgDwKBIK9RUZSjPXKGM5AuqAJ RCGVXROjqnM3LddSlxS9rKD/h2sEV4skLDvKeHWAb93oQ1bNqjgoKycKOdbZrpCEGJEW l9pEZb+ImcJcILAuzIRpxtyu1WMmHjUohQBEtlwbexI3IKPoQM2d0zF6+6+rAEDMsUgL loJQ== 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:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=jNrOHL1jtLgS/p1j3Ni2rsfbE859ozdpReKBEN0UcWI=; b=aMIIilAAhpOAUdP213ggGneENQMH61PfKbJk5oOwxcbk1YJie3pcQn8PZtk2gkSY5N Ocbxhue4vWpvNEWl6eH/HVyE/zLKIxlTs3nkGHJaPXsRBNrC0QXliranKhEmm7VPPyUO 7VZjsfdUchxBykK9rbhMtFJIXfWwrqXQmIKe2g7e80mtuXmU6HwiWVa60Lhl1eto6DY9 sMaXGt20ROJt7yMdxCggyijpKDnOZU7fQdPR3LZHqpeN0DfI1YySdyvhZ3cJOIiu45Xo /kDw8M3D44e+wYbP24lI9Vod60albk96OiaJ5Wh5H0MwBJPz5MSlf/NliK359dieGutz QNEw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=xqrLew9Q; spf=pass (google.com: domain of mptcp+bounces-4018-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4018-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id ly19-20020a170906af5300b0069f051e0b3dsi375797ejb.26.2022.02.24.13.35.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 13:35:11 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4018-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=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=xqrLew9Q; spf=pass (google.com: domain of mptcp+bounces-4018-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4018-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 380151C0EDD for ; Thu, 24 Feb 2022 21:35:10 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BF0546AA5; Thu, 24 Feb 2022 21:35:06 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EBE8A6959 for ; Thu, 24 Feb 2022 21:35:04 +0000 (UTC) Received: by mail-ed1-f49.google.com with SMTP id q17so4743907edd.4 for ; Thu, 24 Feb 2022 13:35:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jNrOHL1jtLgS/p1j3Ni2rsfbE859ozdpReKBEN0UcWI=; b=xqrLew9Qtp2x1IcYCxDkKw4CbdbEt+30lomyFoJsHqCY2nag10d3SFLbTvKuwYVVOu iEOd2k2Q9JNfPOx3I1AERcfiQsU5ifnkcNrQa/mRZatQ4TEoNcxVwdByVbY0NrtcGMjt BxQ9IbC9gewr8ZPcGCe+7eOIEoLZafEtNq+tY+WmxUjYpBjLz4+p5Ka47YJa2ujbmNdu +l85crl3qlmLWXtc1ZpGcC0NGGwwola0dKIkci5q92ZVg2WohZ4lgoOLeDyUyLMCWaiQ w7LxpVs9uDb4QbZzMZh1ycyXDFPwXa63FCqBHmL8wzwYdgdjtNxwj8+gSl8n+CJF4tJr 3ZuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jNrOHL1jtLgS/p1j3Ni2rsfbE859ozdpReKBEN0UcWI=; b=dYj/OF8/k8E6h8Ag7Ddc5gTaU5Ee85oTNi/dO8LSZgqVr+NUqQDkbUFjkrg80XlR65 2tC6KUs/cB7QOWs3j1inWPsfDeKYNxJJTVLhW/DDerCHHAwQnNGy7JD1Zk82M7mjX33W /rrFSe+D+0guJFPdB/+i616VGN4Ld94POEl5okyW7V4SiPrZuSqvcW0o/6Zz7Xm0WN7T 42qSMBmBAuH0YR3NtThTZUGSznwSqxE4TWuAXgiHY40jFMty/ebh41MVKdfRtEb345Hg CIY1c5O6AmzrNR69H0/tE5/28VsBhlqDuTRtw9ncWWSBvk16yfJ1oeLe4lWRqiX7bxiM 4ikQ== X-Gm-Message-State: AOAM5300QzN3pkHmx+dtbdv1w4M0pLALbkt7f28WNUD5IHRp4YSmL368 x43Ui2npAgsb8uo+xVHccvZ28/UoCQ2/TnZk8BA= X-Received: by 2002:aa7:d499:0:b0:409:4e74:92c6 with SMTP id b25-20020aa7d499000000b004094e7492c6mr4283575edr.124.1645738502956; Thu, 24 Feb 2022 13:35:02 -0800 (PST) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id z22-20020a17090655d600b006d229436793sm175195ejp.223.2022.02.24.13.35.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 13:35:02 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v4 08/12] selftests: mptcp: join: list failure at the end Date: Thu, 24 Feb 2022 22:34:02 +0100 Message-Id: <20220224213406.3127061-9-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224213406.3127061-1-matthieu.baerts@tessares.net> References: <20220224213406.3127061-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" With ~100 tests, it helps to have this summary at the end not to scroll to find which one has failed. It is especially interseting when looking at the output produced by the CI where the kernel logs from the serial are mixed together. Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts --- .../testing/selftests/net/mptcp/mptcp_join.sh | 89 ++++++++++++------- 1 file changed, 57 insertions(+), 32 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index cd21170fa33e..5be9168dd7a5 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -22,6 +22,7 @@ init=3D0 declare -A all_tests declare -a only_tests_ids declare -a only_tests_names +declare -A failed_tests TEST_COUNT=3D0 TEST_NAME=3D"" nr_blank=3D40 @@ -302,6 +303,21 @@ reset_with_fail() index 100 || exit 1 } =20 +fail_test() +{ + ret=3D1 + failed_tests[${TEST_COUNT}]=3D"${TEST_NAME}" +} + +get_failed_tests_ids() +{ + # sorted + local i + for i in "${!failed_tests[@]}"; do + echo "${i}" + done | sort -n +} + print_file_err() { ls -l "$1" 1>&2 @@ -323,7 +339,7 @@ check_transfer() echo "[ FAIL ] $what does not match (in, out):" print_file_err "$in" print_file_err "$out" - ret=3D1 + fail_test =20 return 1 else @@ -343,7 +359,7 @@ do_ping() ip netns exec ${connector_ns} ping -q -c 1 $connect_addr >/dev/null if [ $? -ne 0 ] ; then echo "$listener_ns -> $connect_addr connectivity [ FAIL ]" 1>&2 - ret=3D1 + fail_test fi } =20 @@ -592,7 +608,7 @@ pm_nl_check_endpoint() echo "[ ok ]" else echo "[fail] expected '$expected_line' found '$line'" - ret=3D1 + fail_test fi } =20 @@ -846,7 +862,7 @@ do_transfer() cat /tmp/${connector_ns}.out =20 cat "$capout" - ret=3D1 + fail_test return 1 fi =20 @@ -978,7 +994,7 @@ chk_csum_nr() if [ "$count" !=3D $csum_ns1 -a $allow_multi_errors_ns1 -eq 0 ] || [ "$count" -lt $csum_ns1 -a $allow_multi_errors_ns1 -eq 1 ]; then echo "[fail] got $count data checksum error[s] expected $csum_ns1" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -989,7 +1005,7 @@ chk_csum_nr() if [ "$count" !=3D $csum_ns2 -a $allow_multi_errors_ns2 -eq 0 ] || [ "$count" -lt $csum_ns2 -a $allow_multi_errors_ns2 -eq 1 ]; then echo "[fail] got $count data checksum error[s] expected $csum_ns2" - ret=3D1 + fail_test dump_stats=3D1 else echo "[ ok ]" @@ -1009,7 +1025,7 @@ chk_fail_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$fail_tx" ]; then echo "[fail] got $count MP_FAIL[s] TX expected $fail_tx" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1020,7 +1036,7 @@ chk_fail_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$fail_rx" ]; then echo "[fail] got $count MP_FAIL[s] RX expected $fail_rx" - ret=3D1 + fail_test dump_stats=3D1 else echo "[ ok ]" @@ -1041,7 +1057,7 @@ chk_fclose_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$fclose_tx" ]; then echo "[fail] got $count MP_FASTCLOSE[s] TX expected $fclose_tx" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1052,7 +1068,7 @@ chk_fclose_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$fclose_rx" ]; then echo "[fail] got $count MP_FASTCLOSE[s] RX expected $fclose_rx" - ret=3D1 + fail_test dump_stats=3D1 else echo "[ ok ]" @@ -1083,7 +1099,7 @@ chk_rst_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$rst_tx" ]; then echo "[fail] got $count MP_RST[s] TX expected $rst_tx" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1094,7 +1110,7 @@ chk_rst_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$rst_rx" ]; then echo "[fail] got $count MP_RST[s] RX expected $rst_rx" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1117,7 +1133,7 @@ chk_infi_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$infi_tx" ]; then echo "[fail] got $count infinite map[s] TX expected $infi_tx" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1128,7 +1144,7 @@ chk_infi_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$infi_rx" ]; then echo "[fail] got $count infinite map[s] RX expected $infi_rx" - ret=3D1 + fail_test dump_stats=3D1 else echo "[ ok ]" @@ -1162,7 +1178,7 @@ chk_join_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$syn_nr" ]; then echo "[fail] got $count JOIN[s] syn expected $syn_nr" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1180,7 +1196,7 @@ chk_join_nr() echo -n "[ ok ]" else echo "[fail] got $count JOIN[s] synack expected $syn_ack_nr" - ret=3D1 + fail_test dump_stats=3D1 fi else @@ -1192,7 +1208,7 @@ chk_join_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$ack_nr" ]; then echo "[fail] got $count JOIN[s] ack expected $ack_nr" - ret=3D1 + fail_test dump_stats=3D1 else echo "[ ok ]" @@ -1233,7 +1249,7 @@ chk_stale_nr() echo "[fail] got $stale_nr stale[s] $recover_nr recover[s], " \ " expected stale in range [$stale_min..$stale_max]," \ " stale-recover delta $stale_delta " - ret=3D1 + fail_test dump_stats=3D1 else echo "[ ok ]" @@ -1270,7 +1286,7 @@ chk_add_nr() # add addrs options, due to retransmissions if [ "$count" !=3D "$add_nr" ] && [ "$timeout" -gt 1 -o "$count" -lt "$ad= d_nr" ]; then echo "[fail] got $count ADD_ADDR[s] expected $add_nr" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1281,7 +1297,7 @@ chk_add_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$echo_nr" ]; then echo "[fail] got $count ADD_ADDR echo[s] expected $echo_nr" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1293,7 +1309,7 @@ chk_add_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$port_nr" ]; then echo "[fail] got $count ADD_ADDR[s] with a port-number expected $port_n= r" - ret=3D1 + fail_test dump_stats=3D1 else echo "[ ok ]" @@ -1306,7 +1322,7 @@ chk_add_nr() if [ "$count" !=3D "$syn_nr" ]; then echo "[fail] got $count JOIN[s] syn with a different \ port-number expected $syn_nr" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1319,7 +1335,7 @@ chk_add_nr() if [ "$count" !=3D "$syn_ack_nr" ]; then echo "[fail] got $count JOIN[s] synack with a different \ port-number expected $syn_ack_nr" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1332,7 +1348,7 @@ chk_add_nr() if [ "$count" !=3D "$ack_nr" ]; then echo "[fail] got $count JOIN[s] ack with a different \ port-number expected $ack_nr" - ret=3D1 + fail_test dump_stats=3D1 else echo "[ ok ]" @@ -1345,7 +1361,7 @@ chk_add_nr() if [ "$count" !=3D "$mis_syn_nr" ]; then echo "[fail] got $count JOIN[s] syn with a mismatched \ port-number expected $mis_syn_nr" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1358,7 +1374,7 @@ chk_add_nr() if [ "$count" !=3D "$mis_ack_nr" ]; then echo "[fail] got $count JOIN[s] ack with a mismatched \ port-number expected $mis_ack_nr" - ret=3D1 + fail_test dump_stats=3D1 else echo "[ ok ]" @@ -1403,7 +1419,7 @@ chk_rm_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$rm_addr_nr" ]; then echo "[fail] got $count RM_ADDR[s] expected $rm_addr_nr" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1426,14 +1442,14 @@ chk_rm_nr() echo "[ ok ] $suffix" else echo "[fail] got $count RM_SUBFLOW[s] expected in range [$rm_subflow_nr= :$((rm_subflow_nr*2))]" - ret=3D1 + fail_test dump_stats=3D1 fi return fi if [ "$count" !=3D "$rm_subflow_nr" ]; then echo "[fail] got $count RM_SUBFLOW[s] expected $rm_subflow_nr" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1456,7 +1472,7 @@ chk_prio_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$mp_prio_nr_tx" ]; then echo "[fail] got $count MP_PRIO[s] TX expected $mp_prio_nr_tx" - ret=3D1 + fail_test dump_stats=3D1 else echo -n "[ ok ]" @@ -1467,7 +1483,7 @@ chk_prio_nr() [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$mp_prio_nr_rx" ]; then echo "[fail] got $count MP_PRIO[s] RX expected $mp_prio_nr_rx" - ret=3D1 + fail_test dump_stats=3D1 else echo "[ ok ]" @@ -1491,7 +1507,7 @@ chk_link_usage() if [ $tx_rate -lt $((expected_rate - $tolerance)) -o \ $tx_rate -gt $((expected_rate + $tolerance)) ]; then echo "[fail] got $tx_rate% usage, expected $expected_rate%" - ret=3D1 + fail_test else echo "[ ok ]" fi @@ -2810,4 +2826,13 @@ for subtests in "${tests[@]}"; do "${subtests}" done =20 +if [ ${ret} -ne 0 ]; then + echo + echo "${#failed_tests[@]} failure(s) has(ve) been detected:" + for i in $(get_failed_tests_ids); do + echo -e "\t- ${i}: ${failed_tests[${i}]}" + done + echo +fi + exit $ret --=20 2.34.1 From nobody Fri May 3 01:43:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1953187jad; Thu, 24 Feb 2022 13:35:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJzz/CvutI4cGuBB/1WoLVr+wCVfSECP+bb76YU8BzcMi830CegHHfUZaNXLef5kaJdPU9hg X-Received: by 2002:a63:6d46:0:b0:373:c08a:eca8 with SMTP id i67-20020a636d46000000b00373c08aeca8mr3701758pgc.429.1645738511518; Thu, 24 Feb 2022 13:35:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645738511; cv=none; d=google.com; s=arc-20160816; b=pJtOwLC2W+ubIWjFfgQco81iiidzGhosSY2YjkBXlhW4N0GRPAKJzazDaGmEP/hWQV C4O+qgnWhPJVwOEK0Pt/QkKRVK3BQJ/eQ4jdwjLIZ/Ry86bAGBVLMSIWQ4nlGdM0nSV6 t4tEzZ4CLG/heUTE0Zq5p5ZzR7ekpb3ZRsepw8PqYbSZgbl9S1IqlSOOBGfqEB4YM9YC NRP5LNMWe5l/JzZRffcGNu6jCLrOe0+UH83IVn3P/vW7o2Emz+q5T9zmfJN/QNI65pGx uyaTP4qx3ujW7vDaSM5CrQIxFhyFAt1/13yt6R0iSYXbCmSPPLoI+h0h6UDbLHzhYLV+ 1brg== 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:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=j+R+ymD23qsxjKFAuKBBrGlPBm/WI7osxpNx6Vr9Wdo=; b=pJnDJ3TSGDW7Nae4217S1FQyIv5DJx5GGQ7ym2uJmbIWsG0MXkkapEshljpynMlq2f bU1xLOOBRLht2MROgmBqwN8lPqKa7T6xZHQ6f0LiZfOttklQ10dbiGKNT7MyAXykYP1l wfVHSV2KgXYWMu+HbJomzR10n1+P2qmCQLawJD/DakRLnzbqKQmLufs5f8wBXzaAhSMH ecvAydnlYrISp8TTePQyaCx82wLfS0I+jWUplSI07hbfaJ5RQP9uuEyJad1pULzRdLcL gwO0CH5oVxIXeoltKofzjdOF935hRarEjX+4+Lfp+89beBcepPuAEwHyjnEmZLSp19Hy q4gA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=ikvjkV2p; spf=pass (google.com: domain of mptcp+bounces-4019-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4019-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id j7-20020a17090aeb0700b001b92319aba4si432032pjz.58.2022.02.24.13.35.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 13:35:11 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4019-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=ikvjkV2p; spf=pass (google.com: domain of mptcp+bounces-4019-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4019-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 sjc.edge.kernel.org (Postfix) with ESMTPS id 158673E0F6A for ; Thu, 24 Feb 2022 21:35:11 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 139A76959; Thu, 24 Feb 2022 21:35:07 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B9A6D1373 for ; Thu, 24 Feb 2022 21:35:05 +0000 (UTC) Received: by mail-ed1-f42.google.com with SMTP id g20so4726304edw.6 for ; Thu, 24 Feb 2022 13:35:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=j+R+ymD23qsxjKFAuKBBrGlPBm/WI7osxpNx6Vr9Wdo=; b=ikvjkV2poEBngeX+xjxVnmsS7bBH4EUdNI86QFqro3XPdWHSMM/EZrDeGhT7tNcvAd sIgvr6dPEe78ohgLTIQQJ3hLlJAPOfcANhQvw8L3InDbqIFdyJPdkywlzrCY58STR2pa jO3okIoI7VYKF8V2uzn/5uC4GVjdf+Kkd8AXUj13RGkfjvlKrfS8dMngQ37SPmUMg/NI rx6nP+QSsNAENVh496oQvs+wTIS1EymQ0gOVam/51KpYsRtdo/645nJ53AxMyZiBmD8y 4tJC9H04L6hgZRsYUCoK2n+X1Slhpe5vrxcTe4q9xWTGL8Y2/vsWIb6lfo+z7yQGA/QG ptEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=j+R+ymD23qsxjKFAuKBBrGlPBm/WI7osxpNx6Vr9Wdo=; b=uRw3alL+q6SuFvzg/Kb53b3Uo4XkViSKjAvBj9coIoBW+/hTmw4P0dc9CzBuHt1Jww ghjgOWgUt2f68xfq68A7OMfzXAsZ2RTne5nTyJ4JMR6O8tkANk0AhhId3rFsvJzJ7rqn BovwCcmu2z6uqa9thzdyajLftmZmlQ6VVT0eZJXPyUHquMwTpsk05JEfXFz7m0MnbKtC 76ZXaII/D5BXQtmHbd82Ml1TyDB+TIwbhD2bLnvjgwN9ERguXXMqyUvpTFnQzl74WTsW VDKtC64jjtU71VKa1w/gbezp288w9vte0n+bL4z6K01Bi+XyBY8pHXuB5qXHnDByp51H nE2g== X-Gm-Message-State: AOAM5303C6EukMgQQXHe58/evmdbP/KJ830o2lmMtOU+JXFweKpGadfY FWv8/l4Ez/aMTe/J+hbMyc7SQs7DfMr3ds0eCp4= X-Received: by 2002:aa7:d453:0:b0:410:d407:da20 with SMTP id q19-20020aa7d453000000b00410d407da20mr4265048edr.351.1645738503860; Thu, 24 Feb 2022 13:35:03 -0800 (PST) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id z22-20020a17090655d600b006d229436793sm175195ejp.223.2022.02.24.13.35.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 13:35:03 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-next v4 09/12] selftests: mptcp: join: helper to filter TCP Date: Thu, 24 Feb 2022 22:34:03 +0100 Message-Id: <20220224213406.3127061-10-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224213406.3127061-1-matthieu.baerts@tessares.net> References: <20220224213406.3127061-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This is more readable and reduces duplicated commands. This might also be useful to add v6 support and switch to nftables. Signed-off-by: Matthieu Baerts Reviewed-by: Mat Martineau --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 5be9168dd7a5..31fa04c257d5 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -612,6 +612,15 @@ pm_nl_check_endpoint() fi } =20 +filter_tcp_from() +{ + local ns=3D"${1}" + local src=3D"${2}" + local target=3D"${3}" + + ip netns exec "${ns}" iptables -A INPUT -s "${src}" -p tcp -j "${target}" +} + do_transfer() { listener_ns=3D"$1" @@ -1618,7 +1627,7 @@ subflows_error_tests() pm_nl_set_limits $ns2 0 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow - ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j REJECT + filter_tcp_from $ns1 10.0.3.2 REJECT run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow chk_join_nr 1 1 1 fi @@ -1629,7 +1638,7 @@ subflows_error_tests() pm_nl_set_limits $ns2 0 2 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow - ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j DROP + filter_tcp_from $ns1 10.0.3.2 DROP run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow chk_join_nr 1 1 1 fi @@ -1641,7 +1650,7 @@ subflows_error_tests() pm_nl_set_limits $ns1 0 1 pm_nl_set_limits $ns2 0 1 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow - ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j REJECT + filter_tcp_from $ns1 10.0.3.2 REJECT run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow & =20 # mpj subflow will be in TW after the reset --=20 2.34.1 From nobody Fri May 3 01:43:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1953203jad; Thu, 24 Feb 2022 13:35:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJzpnoQOTEXQ68oJpri/wEJriXbze1R5Lhd3qqAyM3R+h2pCqZmT3cWJN85kUn3D2a4sVzhw X-Received: by 2002:a17:902:7b8d:b0:14b:8884:b4ad with SMTP id w13-20020a1709027b8d00b0014b8884b4admr4491375pll.120.1645738513112; Thu, 24 Feb 2022 13:35:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645738513; cv=none; d=google.com; s=arc-20160816; b=HKPuQlGUpAeGu3ZdJAkE3+BB9eJiIySZsGutxd9axGYxHbKT8l8E92L1uxdfB+PISh Kw0eiee50ZFxa4isvU/u1oJ7162oBLouLV6LQzqQIoGExESrTwz94jDE4BDJtf2+AVSP 6uD8+dwrLIQXETVkgL4sm7tgzDhumYDXKxA2feNizo+O2IdbTW9tH4FrVfBOFDD4EHAZ fYQhk11Da4kligiJl7vUEFIVCA9fMk65W94IzfQYfuROdVpJiITCQXeJEqYYPeN2of6g vfkm0TYmXP1VI2QMS3e43U+6rGxTbPtgmUFwau+SVGfUwXSpFo1hbgRMNz28CM0RjdMp bGeQ== 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:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=Ryg2Upr6WLKKIg2SFgFjnyrGnDz3fwnRrYki1ilO3yM=; b=YwEJB2NaJzWrquyFVc2PJBgFNu4SPmRQQOXoitRfj57VqvuVeiSzUEVOFlGBGp/+7c pKyE801TQDJjW26V5Qt9BgVHOEpfeLRjBYw6wMqmUL/vxT3zYi3GFJ9tTH19qCmufliM SaUEXZnPAELiWCEH5JdeJs1E9sIfMUNqGPT81ysSqODT1CrCGTFMKH2ZNSvv4/1lyczp PIq27bfnbv/hONNStokWG4d11F1oTzSbyyWnuwNpVuESkxJsr7QXw6SEx9RY9gqiQzpk fMGxvG/4f3uzcligvxxLAlBWvY8n48M9NZ15dhWXbB++1zoNR5JUYrAjlVPABQA8t5DT Q8nA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=THOyIYpk; spf=pass (google.com: domain of mptcp+bounces-4020-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4020-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id u8-20020a170902bf4800b00149e3fd2fd2si226283pls.332.2022.02.24.13.35.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 13:35:13 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4020-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=THOyIYpk; spf=pass (google.com: domain of mptcp+bounces-4020-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4020-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 sjc.edge.kernel.org (Postfix) with ESMTPS id 5CA983E0FEE for ; Thu, 24 Feb 2022 21:35:12 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5EED76AA8; Thu, 24 Feb 2022 21:35:08 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 75F8D6956 for ; Thu, 24 Feb 2022 21:35:06 +0000 (UTC) Received: by mail-ed1-f46.google.com with SMTP id z22so4764569edd.1 for ; Thu, 24 Feb 2022 13:35:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Ryg2Upr6WLKKIg2SFgFjnyrGnDz3fwnRrYki1ilO3yM=; b=THOyIYpkttsjy8PhSx0hyPZU4F5FsEtbKLjiojiVV3dYFL8JtmtG4z1L5BLkettdT+ VgRs7EjWUX/r/UlrIZil1Hi4j5JED8e6q6OO7SnKUt6DfpEyyis+Ec26Hai36S9bWweA qKos4acVqPKL6AWDcWZqPz4bRBA52Y295urYCBtdVjHImZByhRczCsVUrfEy0Hc+dTz8 WrmYX6aoS1JziAoEnYMfcOeYKVV8D3kdLEaouyIMC9tMamQSe1jxwxiJRkjMcHnPB8Oj azop7slos9YE+G6YNVilvWOiGNEqPXQuAM2cLO8Bmi8FXTeS8ZnaL00eDhape3sIEAg5 hO6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Ryg2Upr6WLKKIg2SFgFjnyrGnDz3fwnRrYki1ilO3yM=; b=ZBpWWE4bSKuB79xqUzDHl+YVSEEO2StxROrvF1cn8IZWA30K+kIIVuWkx0zNNtOgch VMap9cxWQVUV4Oe8oOCwecRdS3dRJw/GQ99bZE+GUfBNL4sHPI2afBpwfrV0SGL4IEKQ ABEliVKEnJ9BwGUc7KFtYVf5lJrAyfMA8WfPwtGenTvqu8y3CCBmXWcB42h0gqnRS2kX C5AGXtL/7L61Ki01DKkZG3giY0noAX40YTY7i/JTZOc0A+lWDRHrOjFravnacsPKftav NsdLsPpm0zodBjfWysrpZCnmkFD/y+VOx0L7uvR6VPkiHUQxnj3SZxdDp4pzIQtmGcSc 56/g== X-Gm-Message-State: AOAM532lEqd2ox8IupXvLow9sqF2Um6TRQlnqUaH6XRnWaEK4nPNBdwP 3E6ya0SoXEJP77AQ65MAyc1AMKTILJQ1EfLQC30= X-Received: by 2002:a50:ec95:0:b0:413:4d34:642d with SMTP id e21-20020a50ec95000000b004134d34642dmr4372392edr.3.1645738504456; Thu, 24 Feb 2022 13:35:04 -0800 (PST) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id z22-20020a17090655d600b006d229436793sm175195ejp.223.2022.02.24.13.35.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 13:35:04 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v4 10/12] selftests: mptcp: join: clarify local/global vars Date: Thu, 24 Feb 2022 22:34:04 +0100 Message-Id: <20220224213406.3127061-11-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224213406.3127061-1-matthieu.baerts@tessares.net> References: <20220224213406.3127061-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Some vars are redefined in different places. Best to avoid this classical Bash pitfall where variables are accidentally overridden by other functions because the proper scope has not been defined. Most issues are with loops: typically 'i' is used in for-loops but if it is not global, calling a function from a for-loop also doing a for-loop with the same non local 'i' variable causes troubles because the first 'i' will be assigned to another value. To prevent such issues, the iterator variable is now declared as local just before the loop. If it is always done like this, issues are avoided. To distinct between local and non local variables, all non local ones are defined at the beginning of the script. The others are now defined with the "local" keyword. Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts --- Notes: v2: - non local variables no longer have capital letter: this can be usef= ul but create a lot of modifications everywhere, making backports harders. - add missing local - explicitly define a 'local' with the iterator before 'for' and 'whi= le' loops .../testing/selftests/net/mptcp/mptcp_join.sh | 133 +++++++++++------- 1 file changed, 82 insertions(+), 51 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 31fa04c257d5..869d021ef30b 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -9,6 +9,9 @@ cin=3D"" cinfail=3D"" cinsent=3D"" cout=3D"" +capout=3D"" +ns1=3D"" +ns2=3D"" ksft_skip=3D4 timeout_poll=3D30 timeout_test=3D$((timeout_poll * 2 + 1)) @@ -51,12 +54,14 @@ init_partial() { capout=3D$(mktemp) =20 + local rndh rndh=3D$(mktemp -u XXXXXX) =20 ns1=3D"ns1-$rndh" ns2=3D"ns2-$rndh" =20 - for netns in "$ns1" "$ns2";do + local netns + for netns in "$ns1" "$ns2"; do ip netns add $netns || exit $ksft_skip ip -net $netns link set lo up ip netns exec $netns sysctl -q net.mptcp.enabled=3D1 @@ -78,6 +83,7 @@ init_partial() # ns1eth3 ns2eth3 # ns1eth4 ns2eth4 =20 + local i for i in `seq 1 4`; do ip link add ns1eth$i netns "$ns1" type veth peer name ns2eth$i netns "$n= s2" ip -net "$ns1" addr add 10.0.$i.1/24 dev ns1eth$i @@ -96,6 +102,7 @@ init_partial() =20 init_shapers() { + local i for i in `seq 1 4`; do tc -n $ns1 qdisc add dev ns1eth$i root netem rate 20mbit delay 1 tc -n $ns2 qdisc add dev ns2eth$i root netem rate 20mbit delay 1 @@ -106,6 +113,7 @@ cleanup_partial() { rm -f "$capout" =20 + local netns for netns in "$ns1" "$ns2"; do ip netns del $netns rm -f /tmp/$netns.{nstat,out} @@ -202,7 +210,8 @@ reset_with_cookies() { reset "${1}" || return 1 =20 - for netns in "$ns1" "$ns2";do + local netns + for netns in "$ns1" "$ns2"; do ip netns exec $netns sysctl -q net.ipv4.tcp_syncookies=3D2 done } @@ -327,10 +336,11 @@ print_file_err() =20 check_transfer() { - in=3D$1 - out=3D$2 - what=3D$3 + local in=3D$1 + local out=3D$2 + local what=3D$3 =20 + local line cmp -l "$in" "$out" | while read line; do local arr=3D($line) =20 @@ -352,9 +362,9 @@ check_transfer() =20 do_ping() { - listener_ns=3D"$1" - connector_ns=3D"$2" - connect_addr=3D"$3" + local listener_ns=3D"$1" + local connector_ns=3D"$2" + local connect_addr=3D"$3" =20 ip netns exec ${connector_ns} ping -q -c 1 $connect_addr >/dev/null if [ $? -ne 0 ] ; then @@ -365,15 +375,16 @@ do_ping() =20 link_failure() { - ns=3D"$1" + local ns=3D"$1" =20 if [ -z "$FAILING_LINKS" ]; then l=3D$((RANDOM%4)) FAILING_LINKS=3D$((l+1)) fi =20 + local l for l in $FAILING_LINKS; do - veth=3D"ns1eth$l" + local veth=3D"ns1eth$l" ip -net "$ns" link set "$veth" down done } @@ -390,9 +401,10 @@ wait_local_port_listen() local listener_ns=3D"${1}" local port=3D"${2}" =20 - local port_hex i - + local port_hex port_hex=3D"$(printf "%04X" "${port}")" + + local i 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}" && @@ -403,7 +415,7 @@ wait_local_port_listen() =20 rm_addr_count() { - ns=3D${1} + local ns=3D${1} =20 ip netns exec ${ns} nstat -as | grep MPTcpExtRmAddr | awk '{print $2}' } @@ -414,8 +426,8 @@ wait_rm_addr() local ns=3D"${1}" local old_cnt=3D"${2}" local cnt - local i =20 + local i for i in $(seq 10); do cnt=3D$(rm_addr_count ${ns}) [ "$cnt" =3D "${old_cnt}" ] || break @@ -455,12 +467,13 @@ pm_nl_add_endpoint() { local ns=3D$1 local addr=3D$2 - local flags - local port - local dev - local id + local flags _flags + local port _port + local dev _dev + local id _id local nr=3D2 =20 + local p for p in $@ do if [ $p =3D "flags" ]; then @@ -623,24 +636,26 @@ filter_tcp_from() =20 do_transfer() { - listener_ns=3D"$1" - connector_ns=3D"$2" - cl_proto=3D"$3" - srv_proto=3D"$4" - connect_addr=3D"$5" - test_link_fail=3D"$6" - addr_nr_ns1=3D"$7" - addr_nr_ns2=3D"$8" - speed=3D"$9" - sflags=3D"${10}" + local listener_ns=3D"$1" + local connector_ns=3D"$2" + local cl_proto=3D"$3" + local srv_proto=3D"$4" + local connect_addr=3D"$5" + local test_link_fail=3D"$6" + local addr_nr_ns1=3D"$7" + local addr_nr_ns2=3D"$8" + local speed=3D"$9" + local sflags=3D"${10}" =20 - port=3D$((10000+$TEST_COUNT-1)) + local port=3D$((10000 + TEST_COUNT - 1)) + local cappid =20 :> "$cout" :> "$sout" :> "$capout" =20 if [ $capture -eq 1 ]; then + local capuser if [ -z $SUDO_USER ] ; then capuser=3D"" else @@ -694,7 +709,7 @@ do_transfer() ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \ $extra_args ${local_addr} < "$sin" > "$sout" & fi - spid=3D$! + local spid=3D$! =20 wait_local_port_listen "${listener_ns}" "${port}" =20 @@ -717,15 +732,16 @@ do_transfer() ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ $extra_args $connect_addr > "$cout" & fi - cpid=3D$! + local 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 =20 if [ $addr_nr_ns1 -gt 0 ]; then + local counter=3D2 + local add_nr_ns1 let add_nr_ns1=3Daddr_nr_ns1 - counter=3D2 while [ $add_nr_ns1 -gt 0 ]; do local addr if is_v6 "${connect_addr}"; then @@ -738,13 +754,16 @@ do_transfer() let add_nr_ns1-=3D1 done elif [ $addr_nr_ns1 -lt 0 ]; then + local rm_nr_ns1 let rm_nr_ns1=3D-addr_nr_ns1 if [ $rm_nr_ns1 -lt 8 ]; then - counter=3D0 + local counter=3D0 + local line pm_nl_show_endpoints ${listener_ns} | while read line; do local arr=3D($line) local nr=3D0 =20 + local i for i in ${arr[@]}; do if [ $i =3D "id" ]; then if [ $counter -eq $rm_nr_ns1 ]; then @@ -766,7 +785,7 @@ do_transfer() fi fi =20 - flags=3D"subflow" + local flags=3D"subflow" if [[ "${addr_nr_ns2}" =3D "fullmesh_"* ]]; then flags=3D"${flags},fullmesh" addr_nr_ns2=3D${addr_nr_ns2:9} @@ -777,8 +796,9 @@ do_transfer() [ $addr_nr_ns1 -gt 0 -a $addr_nr_ns2 -lt 0 ] && sleep 1 =20 if [ $addr_nr_ns2 -gt 0 ]; then + local add_nr_ns2 let add_nr_ns2=3Daddr_nr_ns2 - counter=3D3 + local counter=3D3 while [ $add_nr_ns2 -gt 0 ]; do local addr if is_v6 "${connect_addr}"; then @@ -791,18 +811,21 @@ do_transfer() let add_nr_ns2-=3D1 done elif [ $addr_nr_ns2 -lt 0 ]; then - let rm_nr_ns2=3D-addr_nr_ns2 + local rm_nr_ns2 if [ $rm_nr_ns2 -lt 8 ]; then - counter=3D0 + local counter=3D0 + local line pm_nl_show_endpoints ${connector_ns} | while read line; do local arr=3D($line) local nr=3D0 =20 + local i for i in ${arr[@]}; do if [ $i =3D "id" ]; then if [ $counter -eq $rm_nr_ns2 ]; then break fi + local id rm_addr # rm_addr are serialized, allow the previous one to # complete id=3D${arr[$nr+1]} @@ -829,12 +852,16 @@ do_transfer() =20 if [ ! -z $sflags ]; then sleep 1 + + local netns for netns in "$ns1" "$ns2"; do + local line pm_nl_show_endpoints $netns | while read line; do local arr=3D($line) local nr=3D0 local id =20 + local i for i in ${arr[@]}; do if [ $i =3D "id" ]; then id=3D${arr[$nr+1]} @@ -847,9 +874,9 @@ do_transfer() fi =20 wait $cpid - retc=3D$? + local retc=3D$? wait $spid - rets=3D$? + local rets=3D$? =20 if [ $capture -eq 1 ]; then sleep 1 @@ -899,9 +926,9 @@ do_transfer() =20 make_file() { - name=3D$1 - who=3D$2 - size=3D$3 + local name=3D$1 + local who=3D$2 + local size=3D$3 =20 dd if=3D/dev/urandom of=3D"$name" bs=3D1024 count=3D$size 2> /dev/null echo -e "\nMPTCP_TEST_FILE_END_MARKER" >> "$name" @@ -911,14 +938,16 @@ make_file() =20 run_tests() { - listener_ns=3D"$1" - connector_ns=3D"$2" - connect_addr=3D"$3" - test_linkfail=3D"${4:-0}" - addr_nr_ns1=3D"${5:-0}" - addr_nr_ns2=3D"${6:-0}" - speed=3D"${7:-fast}" - sflags=3D"${8:-""}" + local listener_ns=3D"$1" + local connector_ns=3D"$2" + local connect_addr=3D"$3" + local test_linkfail=3D"${4:-0}" + local addr_nr_ns1=3D"${5:-0}" + local addr_nr_ns2=3D"${6:-0}" + local speed=3D"${7:-fast}" + local sflags=3D"${8:-""}" + + local size =20 # The values above 2 are reused to make test files # with the given sizes (KB) @@ -1529,7 +1558,9 @@ wait_attempt_fail() local ns=3D$1 =20 while [ $time -lt $timeout_ms ]; do - local cnt=3D$(ip netns exec $ns nstat -as TcpAttemptFails | grep TcpAtte= mptFails | awk '{print $2}') + local cnt + + cnt=3D$(ip netns exec $ns nstat -as TcpAttemptFails | grep TcpAttemptFai= ls | awk '{print $2}') =20 [ "$cnt" =3D 1 ] && return 1 time=3D$((time + 100)) --=20 2.34.1 From nobody Fri May 3 01:43:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1953257jad; Thu, 24 Feb 2022 13:35:17 -0800 (PST) X-Google-Smtp-Source: ABdhPJzyIxkfyPX5zm9TVlKwhJh7SX44r015avhou4lqillGOCtoxI3joVFte5TesMX0Q1W/NTfH X-Received: by 2002:a17:906:9c02:b0:6cf:93f:f781 with SMTP id ff2-20020a1709069c0200b006cf093ff781mr3629278ejc.312.1645738517411; Thu, 24 Feb 2022 13:35:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645738517; cv=none; d=google.com; s=arc-20160816; b=DHlpO85V4qU9aG500cT6KzdCbwDASc0Prz5RROSOXKRs9w/JVKPV016MhiwQavONxF /DuYLTneRxmHKn/noEnFkSjJu7+egZv6PR0Jg7TbzSOorDsq2n6NQRHpe0EChN3bC24e Wz9Usgf1RhTg+TF3JPMWxszFXNF31X6GpVYPjFuBz/8jge9SB13IS69wGyMxtM6ip24a o5rtLpkVI3xMDbWXLVyK+TagFMyVAwjViTVtx1Igm1D8ff26hnaboqXxXwHRAkbqRHiH qjOXFcNNXlwWTW31Ibng3Ts2cQzKMs4QcEtdcO/ZmaDzbKIsfc7gCusBCNW/R/WEL1A6 gc8g== 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:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=AHKjjsNy+Cm80cELdy1dV4rKQxXIKfx40jKXCVSHStU=; b=ZKdKs5ZA4FOH0ZehTTiOGGgNocuIomnoduYa1ZIBAoXUBKxfBi3+1uUV++3uBaWPpV KXdOGKgGPqt4QJjYRRKMVJmd0DGYZ7w3KgJe37v4513yvv0dVQDAZZgWWtKMmsKb2Lqo EszbIAayjqQFZrVfgxxZRdjKgiSSHDyGqwcTyIHYaJhgWBiEkaqbSXyEP+M731AlItO1 afu6icI8eFQ9dnbzV2VylXYlPOhZskuK/FUyQ+T3iqCglLfMsxO+2YwMIXS4qB+/P9An mzFqN0KjAlQ8100Eg1r3Te1niHYcEqC5MFV7pCaSjbBgxtnrMExbnDCchE96ntXYbkfF Xwmw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=6YHtDE7f; spf=pass (google.com: domain of mptcp+bounces-4023-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4023-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id o3-20020a170906600300b006af868c7e8dsi319168ejj.536.2022.02.24.13.35.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 13:35:17 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4023-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=6YHtDE7f; spf=pass (google.com: domain of mptcp+bounces-4023-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4023-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 D89BA1C0EDD for ; Thu, 24 Feb 2022 21:35:16 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DA4B16955; Thu, 24 Feb 2022 21:35:08 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3189D1373 for ; Thu, 24 Feb 2022 21:35:07 +0000 (UTC) Received: by mail-ej1-f54.google.com with SMTP id lw4so7004504ejb.12 for ; Thu, 24 Feb 2022 13:35:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=AHKjjsNy+Cm80cELdy1dV4rKQxXIKfx40jKXCVSHStU=; b=6YHtDE7fqMWbPbgV+WGwLII91fMp8TkgfKHQ4DaxJsbuSfR8gM63vaNup1EsP2ae6p v+DEC0pwr9rvO7CPCJVXIrebAprOEoeH8jGJ9MrNM/OWXRtMEUyHFjjEHu5AZC+ltd2c mPK4kb1Gr4h0VjD/Cpm9ZXDm9m98rK+lGyFpLEpJemkoP0j0APK+8kCMDcE1uYKuX9Le sYm8o2QbPkmMVPRRnAbgH1RGvs5w+3iTK7giz9k26kda/WPqbKLWmsOVhar3+ahuggUE uLD67hGai8c6uu6Yd8ZoO2jUqsP1px2vUGbJjzxUSg7q2kU04zDMT8Yvz3PKh5z3aCnc y6AA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=AHKjjsNy+Cm80cELdy1dV4rKQxXIKfx40jKXCVSHStU=; b=nd5jWxMo00QDDVcGLwuAIVh8hNTeLYpfz5wS/qpW7K8KpksgHfNUBvgfFq6gkwIhIv 8GXPLuwZ84jlbkvTEy+aomIoTN7fHo++A43UZFk97YqDqu43Pco0fuxlRt7F75hCUh0p ebKggeCQzhNOxCDIAj7WCDUSDvsRsvTe9LeVf2GzLSN4RsnSqXhbbpVufihl+bgqxNxu hHkXnU9pk7D1fuw7UTtMBmADiRsHFFjrbnNz0zk/ezohz9Nuw8O+/Y+Qik7UmraJ327w 3Fj/RaSJa32ll0HIxmTWtfulYVkxQooZBqa7tCra5DdBqnm4Do8RGYvyhBNeZ19fbqer H7rA== X-Gm-Message-State: AOAM533qRtQdjic/jScXLz8mlB0BtmNCXLNSy9x/r+mMTcSeA5MdeuK8 phh2vpYO0Jrf08vEB6pN7/s0wfDbeBDWS/DRcAE= X-Received: by 2002:a17:906:231a:b0:6cf:276a:e838 with SMTP id l26-20020a170906231a00b006cf276ae838mr3719633eja.412.1645738505264; Thu, 24 Feb 2022 13:35:05 -0800 (PST) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id z22-20020a17090655d600b006d229436793sm175195ejp.223.2022.02.24.13.35.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 13:35:04 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v4 11/12] selftests: mptcp: join: avoid backquotes Date: Thu, 24 Feb 2022 22:34:05 +0100 Message-Id: <20220224213406.3127061-12-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224213406.3127061-1-matthieu.baerts@tessares.net> References: <20220224213406.3127061-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" As explained on ShellCheck's wiki [1], it is recommended to avoid backquotes `...` in favour of parenthesis $(...): > Backtick command substitution `...` is legacy syntax with several > issues. > > - It has a series of undefined behaviors related to quoting in POSIX. > - It imposes a custom escaping mode with surprising results. > - It's exceptionally hard to nest. > > $(...) command substitution has none of these problems, and is > therefore strongly encouraged. [1] https://www.shellcheck.net/wiki/SC2006 Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts --- .../testing/selftests/net/mptcp/mptcp_join.sh | 66 ++++++++++--------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 869d021ef30b..9ff5de1098d6 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -84,7 +84,7 @@ init_partial() # ns1eth4 ns2eth4 =20 local i - for i in `seq 1 4`; do + for i in $(seq 1 4); do ip link add ns1eth$i netns "$ns1" type veth peer name ns2eth$i netns "$n= s2" ip -net "$ns1" addr add 10.0.$i.1/24 dev ns1eth$i ip -net "$ns1" addr add dead:beef:$i::1/64 dev ns1eth$i nodad @@ -103,7 +103,7 @@ init_partial() init_shapers() { local i - for i in `seq 1 4`; do + for i in $(seq 1 4); do tc -n $ns1 qdisc add dev ns1eth$i root netem rate 20mbit delay 1 tc -n $ns2 qdisc add dev ns2eth$i root netem rate 20mbit delay 1 done @@ -1027,7 +1027,7 @@ chk_csum_nr() echo -n " " fi printf " %-36s %s" "$msg" "sum" - count=3D`ip netns exec $ns1 nstat -as | grep MPTcpExtDataCsumErr | awk '{= print $2}'` + count=3D$(ip netns exec $ns1 nstat -as | grep MPTcpExtDataCsumErr | awk '= {print $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D $csum_ns1 -a $allow_multi_errors_ns1 -eq 0 ] || [ "$count" -lt $csum_ns1 -a $allow_multi_errors_ns1 -eq 1 ]; then @@ -1038,7 +1038,7 @@ chk_csum_nr() echo -n "[ ok ]" fi echo -n " - csum " - count=3D`ip netns exec $ns2 nstat -as | grep MPTcpExtDataCsumErr | awk '{= print $2}'` + count=3D$(ip netns exec $ns2 nstat -as | grep MPTcpExtDataCsumErr | awk '= {print $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D $csum_ns2 -a $allow_multi_errors_ns2 -eq 0 ] || [ "$count" -lt $csum_ns2 -a $allow_multi_errors_ns2 -eq 1 ]; then @@ -1059,7 +1059,7 @@ chk_fail_nr() local dump_stats =20 printf "%-${nr_blank}s %s" " " "ftx" - count=3D`ip netns exec $ns1 nstat -as | grep MPTcpExtMPFailTx | awk '{pri= nt $2}'` + count=3D$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPFailTx | awk '{pr= int $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$fail_tx" ]; then echo "[fail] got $count MP_FAIL[s] TX expected $fail_tx" @@ -1070,7 +1070,7 @@ chk_fail_nr() fi =20 echo -n " - failrx" - count=3D`ip netns exec $ns2 nstat -as | grep MPTcpExtMPFailRx | awk '{pri= nt $2}'` + count=3D$(ip netns exec $ns2 nstat -as | grep MPTcpExtMPFailRx | awk '{pr= int $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$fail_rx" ]; then echo "[fail] got $count MP_FAIL[s] RX expected $fail_rx" @@ -1212,7 +1212,7 @@ chk_join_nr() fi =20 printf "%03u %-36s %s" "${TEST_COUNT}" "${title}" "syn" - count=3D`ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinSynRx | awk '{= print $2}'` + count=3D$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinSynRx | awk '= {print $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$syn_nr" ]; then echo "[fail] got $count JOIN[s] syn expected $syn_nr" @@ -1223,8 +1223,8 @@ chk_join_nr() fi =20 echo -n " - synack" - with_cookie=3D`ip netns exec $ns2 sysctl -n net.ipv4.tcp_syncookies` - count=3D`ip netns exec $ns2 nstat -as | grep MPTcpExtMPJoinSynAckRx | awk= '{print $2}'` + with_cookie=3D$(ip netns exec $ns2 sysctl -n net.ipv4.tcp_syncookies) + count=3D$(ip netns exec $ns2 nstat -as | grep MPTcpExtMPJoinSynAckRx | aw= k '{print $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$syn_ack_nr" ]; then # simult connections exceeding the limit with cookie enabled could go up= to @@ -1242,7 +1242,7 @@ chk_join_nr() fi =20 echo -n " - ack" - count=3D`ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinAckRx | awk '{= print $2}'` + count=3D$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinAckRx | awk '= {print $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$ack_nr" ]; then echo "[fail] got $count JOIN[s] ack expected $ack_nr" @@ -1276,9 +1276,9 @@ chk_stale_nr() local recover_nr =20 printf "%-${nr_blank}s %-18s" " " "stale" - stale_nr=3D`ip netns exec $ns nstat -as | grep MPTcpExtSubflowStale | awk= '{print $2}'` + stale_nr=3D$(ip netns exec $ns nstat -as | grep MPTcpExtSubflowStale | aw= k '{print $2}') [ -z "$stale_nr" ] && stale_nr=3D0 - recover_nr=3D`ip netns exec $ns nstat -as | grep MPTcpExtSubflowRecover |= awk '{print $2}'` + recover_nr=3D$(ip netns exec $ns nstat -as | grep MPTcpExtSubflowRecover = | awk '{print $2}') [ -z "$recover_nr" ] && recover_nr=3D0 =20 if [ $stale_nr -lt $stale_min ] || @@ -1314,10 +1314,10 @@ chk_add_nr() local dump_stats local timeout =20 - timeout=3D`ip netns exec $ns1 sysctl -n net.mptcp.add_addr_timeout` + timeout=3D$(ip netns exec $ns1 sysctl -n net.mptcp.add_addr_timeout) =20 printf "%-${nr_blank}s %s" " " "add" - count=3D`ip netns exec $ns2 nstat -as MPTcpExtAddAddr | grep MPTcpExtAddA= ddr | awk '{print $2}'` + count=3D$(ip netns exec $ns2 nstat -as MPTcpExtAddAddr | grep MPTcpExtAdd= Addr | awk '{print $2}') [ -z "$count" ] && count=3D0 =20 # if the test configured a short timeout tolerate greater then expected @@ -1331,7 +1331,7 @@ chk_add_nr() fi =20 echo -n " - echo " - count=3D`ip netns exec $ns1 nstat -as | grep MPTcpExtEchoAdd | awk '{prin= t $2}'` + count=3D$(ip netns exec $ns1 nstat -as | grep MPTcpExtEchoAdd | awk '{pri= nt $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$echo_nr" ]; then echo "[fail] got $count ADD_ADDR echo[s] expected $echo_nr" @@ -1343,7 +1343,7 @@ chk_add_nr() =20 if [ $port_nr -gt 0 ]; then echo -n " - pt " - count=3D`ip netns exec $ns2 nstat -as | grep MPTcpExtPortAdd | awk '{pri= nt $2}'` + count=3D$(ip netns exec $ns2 nstat -as | grep MPTcpExtPortAdd | awk '{pr= int $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$port_nr" ]; then echo "[fail] got $count ADD_ADDR[s] with a port-number expected $port_n= r" @@ -1354,8 +1354,8 @@ chk_add_nr() fi =20 printf "%-${nr_blank}s %s" " " "syn" - count=3D`ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinPortSynRx | - awk '{print $2}'` + count=3D$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinPortSynRx | + awk '{print $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$syn_nr" ]; then echo "[fail] got $count JOIN[s] syn with a different \ @@ -1367,8 +1367,8 @@ chk_add_nr() fi =20 echo -n " - synack" - count=3D`ip netns exec $ns2 nstat -as | grep MPTcpExtMPJoinPortSynAckRx | - awk '{print $2}'` + count=3D$(ip netns exec $ns2 nstat -as | grep MPTcpExtMPJoinPortSynAckRx= | + awk '{print $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$syn_ack_nr" ]; then echo "[fail] got $count JOIN[s] synack with a different \ @@ -1380,8 +1380,8 @@ chk_add_nr() fi =20 echo -n " - ack" - count=3D`ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinPortAckRx | - awk '{print $2}'` + count=3D$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinPortAckRx | + awk '{print $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$ack_nr" ]; then echo "[fail] got $count JOIN[s] ack with a different \ @@ -1393,8 +1393,8 @@ chk_add_nr() fi =20 printf "%-${nr_blank}s %s" " " "syn" - count=3D`ip netns exec $ns1 nstat -as | grep MPTcpExtMismatchPortSynRx | - awk '{print $2}'` + count=3D$(ip netns exec $ns1 nstat -as | grep MPTcpExtMismatchPortSynRx | + awk '{print $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$mis_syn_nr" ]; then echo "[fail] got $count JOIN[s] syn with a mismatched \ @@ -1406,8 +1406,8 @@ chk_add_nr() fi =20 echo -n " - ack " - count=3D`ip netns exec $ns1 nstat -as | grep MPTcpExtMismatchPortAckRx | - awk '{print $2}'` + count=3D$(ip netns exec $ns1 nstat -as | grep MPTcpExtMismatchPortAckRx | + awk '{print $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$mis_ack_nr" ]; then echo "[fail] got $count JOIN[s] ack with a mismatched \ @@ -1453,7 +1453,7 @@ chk_rm_nr() fi =20 printf "%-${nr_blank}s %s" " " "rm " - count=3D`ip netns exec $addr_ns nstat -as | grep MPTcpExtRmAddr | awk '{p= rint $2}'` + count=3D$(ip netns exec $addr_ns nstat -as | grep MPTcpExtRmAddr | awk '{= print $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$rm_addr_nr" ]; then echo "[fail] got $count RM_ADDR[s] expected $rm_addr_nr" @@ -1464,7 +1464,7 @@ chk_rm_nr() fi =20 echo -n " - rmsf " - count=3D`ip netns exec $subflow_ns nstat -as | grep MPTcpExtRmSubflow | a= wk '{print $2}'` + count=3D$(ip netns exec $subflow_ns nstat -as | grep MPTcpExtRmSubflow | = awk '{print $2}') [ -z "$count" ] && count=3D0 if [ -n "$simult" ]; then local cnt=3D$(ip netns exec $addr_ns nstat -as | grep MPTcpExtRmSubflow = | awk '{print $2}') @@ -1506,7 +1506,7 @@ chk_prio_nr() local dump_stats =20 printf "%-${nr_blank}s %s" " " "ptx" - count=3D`ip netns exec $ns1 nstat -as | grep MPTcpExtMPPrioTx | awk '{pri= nt $2}'` + count=3D$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPPrioTx | awk '{pr= int $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$mp_prio_nr_tx" ]; then echo "[fail] got $count MP_PRIO[s] TX expected $mp_prio_nr_tx" @@ -1517,7 +1517,7 @@ chk_prio_nr() fi =20 echo -n " - prx " - count=3D`ip netns exec $ns1 nstat -as | grep MPTcpExtMPPrioRx | awk '{pri= nt $2}'` + count=3D$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPPrioRx | awk '{pr= int $2}') [ -z "$count" ] && count=3D0 if [ "$count" !=3D "$mp_prio_nr_rx" ]; then echo "[fail] got $count MP_PRIO[s] RX expected $mp_prio_nr_rx" @@ -1536,8 +1536,10 @@ chk_link_usage() local link=3D$2 local out=3D$3 local expected_rate=3D$4 - local tx_link=3D`ip netns exec $ns cat /sys/class/net/$link/statistics/tx= _bytes` - local tx_total=3D`ls -l $out | awk '{print $5}'` + + local tx_link tx_total + tx_link=3D$(ip netns exec $ns cat /sys/class/net/$link/statistics/tx_byte= s) + tx_total=3D$(ls -l $out | awk '{print $5}') local tx_rate=3D$((tx_link * 100 / $tx_total)) local tolerance=3D5 =20 --=20 2.34.1 From nobody Fri May 3 01:43:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1953284jad; Thu, 24 Feb 2022 13:35:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJwqO8b+nycRZSDPXjFYwh11PKOxX/25tYarckEDbG/cSeaP4/hlif7E6CekBgsshWFhjAbD X-Received: by 2002:a17:906:3ad1:b0:6ce:a880:7745 with SMTP id z17-20020a1709063ad100b006cea8807745mr3820747ejd.46.1645738519235; Thu, 24 Feb 2022 13:35:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645738519; cv=none; d=google.com; s=arc-20160816; b=yv2nLbyJGRodn9VvkVoUQKeqv5nveaLDfF2xsC5SQtGVHmhsFEQYo2p5WBojODUyhH wkp67JO0OwFvoZvj5E4AoPTiYTkEGK3+iS0kTo5yJHSUuOwFjDs/mfDe/ntmIDHbkArT k3lzxqVUG6sbtwbWKSEx6aXIfh5zgFQ9u0Xh4QZ0dP/1XKgH59M84aWT+481rlUZjrai irk+xOX/pSmxxlICZs9E0uwnSdP1uL8Nw8/rmtsemtQ65zn+f6IngZsIsjUt3FRZTvX1 EwbsxgSDqBd5gqxnCRvuk/Pq7PW0AXGRd7FF8qXuu9CQprM6M5CvQmnFzeg34KBqnv0p hZuw== 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:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=nUxcc2eH2FOiBwRi+KL6iAhjA9g1CqhP8UubWldtUMo=; b=JH4ynlR41H9uO/OiKwv0xiljUAfm/uoQfd3P5Brb7coaKue1VGWZOK4pX5bofL4sih MzTk3hwdWp7zl3n8sw4EA2eplNMlyenkptj/aE/3HXVURE/ghDIr0uY0qGR9V0D+3Gna Srgi+LmGznGX3BMDx6pRemrUKiTK0rz8w0LGswmtY5WQYQAAV3aparfC2Lt9CYHzsqvx rN96LzmFDFETG3C8WHQBaWae/Y+NU1r2HBFXly4WqHHsY2KpaCr0I3Habu37h3bljsPa 42fIV3POouxHFD74XqcaPvXoUfmBbl4q1QuUqcnwX2Nd3veI45VvoXr7f7QYDu6tz5us URbQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=4ZI+PEw6; spf=pass (google.com: domain of mptcp+bounces-4024-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4024-wpasupplicant.patchew=gmail.com@lists.linux.dev" Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id l6-20020a170906a40600b006cf091f7c6esi348011ejz.102.2022.02.24.13.35.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 13:35:19 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4024-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=4ZI+PEw6; spf=pass (google.com: domain of mptcp+bounces-4024-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4024-wpasupplicant.patchew=gmail.com@lists.linux.dev" 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 0DD5D1C0E71 for ; Thu, 24 Feb 2022 21:35:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C94071373; Thu, 24 Feb 2022 21:35:09 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 01BBA6957 for ; Thu, 24 Feb 2022 21:35:07 +0000 (UTC) Received: by mail-ed1-f50.google.com with SMTP id cm8so4753002edb.3 for ; Thu, 24 Feb 2022 13:35:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tessares-net.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nUxcc2eH2FOiBwRi+KL6iAhjA9g1CqhP8UubWldtUMo=; b=4ZI+PEw6IbnH03NyNXzj92i2o+7HAl7PdgSRLE7XFcs3PQm5b8SAJKq5mDX6uvLMxV XobzRgplChjiaGThU2Yqs9/PRoXfa6F2BjTqvS4zor6rK0Ow3qn2mthTxEo8sCQr4GOw PAonuuOuIrkU1oAS5j9FyTsy+/DqdRy+WsnYrvC4r19sPDsCafXYqFyi3uZ0mSccgluq CRJs4G9MT0VuKP65UQzSj9gQ+M2+ZmcTxd2KHOIZ8j6s/7PNF6sTNbeJjqAIDpBeozzy J507ip5LJxpk4Ka103EhPK+VYOPX8dShKNDjb8czQyAfSPEvv5FbxFiWMN+5/Y9EQ6nz +q+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nUxcc2eH2FOiBwRi+KL6iAhjA9g1CqhP8UubWldtUMo=; b=o4ucJJ6+jOXGHrKoyB2t8wRuUiF6HsIydDcBebAulFqSIqr+RR/sXQdkkhkNEdxC4x uy5GK0Bov3WijWvNHLIDJZdlYR9l7z8HR5869aHrKQ1tL7ffC6/WaCZaUUCUGT5Y03co RmzW0n5pJdjfh6SFJP+FsUg46zwTE4Xy36VyzqzhVu8lEAdBvH1UEfnuowpd/KyEoAzh 2CjCs7lUSQkshFboeIrPTAQSMEYJlOtBecPml8ayi40pc3rmYKn1w/l1jWReA2Jgcvd5 uIqwZJ4DvCqekCnsuysNuoO7KRR6aItAFd6tuSS7LoA9RSxu+ZWXnsssZxl7OdUF2ECr Somw== X-Gm-Message-State: AOAM533hKNH2DlwqLjj9lETHLsE3Bu4VUaI1meK88I3t7crZQ7zx7nAY s/EiCPN239+u3AIXuCJ8KLrDqn7r59mYy7jx5HI= X-Received: by 2002:aa7:d3d9:0:b0:410:7a81:c0cf with SMTP id o25-20020aa7d3d9000000b004107a81c0cfmr4217946edr.177.1645738505966; Thu, 24 Feb 2022 13:35:05 -0800 (PST) Received: from tsr-vdi-mbaerts.nix.tessares.net (static.23.216.130.94.clients.your-server.de. [94.130.216.23]) by smtp.gmail.com with ESMTPSA id z22-20020a17090655d600b006d229436793sm175195ejp.223.2022.02.24.13.35.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 13:35:05 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v4 12/12] selftests: mptcp: join: make it shellcheck compliant Date: Thu, 24 Feb 2022 22:34:06 +0100 Message-Id: <20220224213406.3127061-13-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224213406.3127061-1-matthieu.baerts@tessares.net> References: <20220224213406.3127061-1-matthieu.baerts@tessares.net> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This fixes a few issues reported by ShellCheck: - SC2068: Double quote array expansions to avoid re-splitting elements. - SC2206: Quote to prevent word splitting/globbing, or split robustly with mapfile or read -a. - SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined. - SC2155: Declare and assign separately to avoid masking return values. - SC2162: read without -r will mangle backslashes. - SC2219: Instead of 'let expr', prefer (( expr )) . - SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly with $?. - SC2236: Use -n instead of ! -z. - SC2004: $/${} is unnecessary on arithmetic variables. - SC2012: Use find instead of ls to better handle non-alphanumeric filenames. - SC2002: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead. SC2086 (Double quotes to prevent globbing and word splitting) is ignored because it is controlled for the moment and there are too many to change. While at it, also fixed the alignment in one comment. Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts --- .../testing/selftests/net/mptcp/mptcp_join.sh | 126 +++++++++--------- 1 file changed, 66 insertions(+), 60 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 9ff5de1098d6..ceca16541d0a 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1,6 +1,11 @@ #!/bin/bash # SPDX-License-Identifier: GPL-2.0 =20 +# Double quotes to prevent globbing and word splitting is recommended in n= ew +# code but we accept it, especially because there were too many before hav= ing +# address all other issues detected by shellcheck. +#shellcheck disable=3DSC2086 + ret=3D0 sin=3D"" sinfail=3D"" @@ -77,7 +82,7 @@ init_partial() validate_checksum=3D$checksum FAILING_LINKS=3D"" =20 - # ns1 ns2 + # ns1 ns2 # ns1eth1 ns2eth1 # ns1eth2 ns2eth2 # ns1eth3 ns2eth3 @@ -339,12 +344,11 @@ check_transfer() local in=3D$1 local out=3D$2 local what=3D$3 + local i a b =20 local line - cmp -l "$in" "$out" | while read line; do - local arr=3D($line) - - let sum=3D0${arr[1]}+0${arr[2]} + cmp -l "$in" "$out" | while read -r i a b; do + local sum=3D$((0${a} + 0${b})) if [ $check_invert -eq 0 ] || [ $sum -ne $((0xff)) ]; then echo "[ FAIL ] $what does not match (in, out):" print_file_err "$in" @@ -353,7 +357,7 @@ check_transfer() =20 return 1 else - echo "$what has inverted byte at ${arr[0]}" + echo "$what has inverted byte at ${i}" fi done =20 @@ -366,8 +370,7 @@ do_ping() local connector_ns=3D"$2" local connect_addr=3D"$3" =20 - ip netns exec ${connector_ns} ping -q -c 1 $connect_addr >/dev/null - if [ $? -ne 0 ] ; then + if ! ip netns exec ${connector_ns} ping -q -c 1 $connect_addr >/dev/null;= then echo "$listener_ns -> $connect_addr connectivity [ FAIL ]" 1>&2 fail_test fi @@ -474,26 +477,26 @@ pm_nl_add_endpoint() local nr=3D2 =20 local p - for p in $@ + for p in "${@}" do if [ $p =3D "flags" ]; then eval _flags=3D\$"$nr" - [ ! -z $_flags ]; flags=3D"flags $_flags" + [ -n "$_flags" ]; flags=3D"flags $_flags" fi if [ $p =3D "dev" ]; then eval _dev=3D\$"$nr" - [ ! -z $_dev ]; dev=3D"dev $_dev" + [ -n "$_dev" ]; dev=3D"dev $_dev" fi if [ $p =3D "id" ]; then eval _id=3D\$"$nr" - [ ! -z $_id ]; id=3D"id $_id" + [ -n "$_id" ]; id=3D"id $_id" fi if [ $p =3D "port" ]; then eval _port=3D\$"$nr" - [ ! -z $_port ]; port=3D"port $_port" + [ -n "$_port" ]; port=3D"port $_port" fi =20 - let nr+=3D1 + nr=3D$((nr + 1)) done =20 if [ $ip_mptcp -eq 1 ]; then @@ -576,18 +579,18 @@ pm_nl_check_endpoint() while [ -n "$1" ]; do if [ $1 =3D "flags" ]; then _flags=3D$2 - [ ! -z $_flags ]; flags=3D"flags $_flags" + [ -n "$_flags" ]; flags=3D"flags $_flags" shift elif [ $1 =3D "dev" ]; then - [ ! -z $2 ]; dev=3D"dev $1" + [ -n "$2" ]; dev=3D"dev $1" shift elif [ $1 =3D "id" ]; then _id=3D$2 - [ ! -z $_id ]; id=3D"id $_id" + [ -n "$_id" ]; id=3D"id $_id" shift elif [ $1 =3D "port" ]; then _port=3D$2 - [ ! -z $_port ]; port=3D" port $_port" + [ -n "$_port" ]; port=3D" port $_port" shift fi =20 @@ -726,7 +729,7 @@ do_transfer() ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ $extra_args $connect_addr > "$cout" & else - cat "$cinfail" | tee "$cinsent" | \ + tee "$cinsent" < "$cinfail" | \ timeout ${timeout_test} \ ip netns exec ${connector_ns} \ ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ @@ -736,12 +739,13 @@ do_transfer() =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 !=3D "0" ] || [ $addr_nr_ns2 !=3D "0" ]; then + sleep 1 + fi =20 if [ $addr_nr_ns1 -gt 0 ]; then local counter=3D2 - local add_nr_ns1 - let add_nr_ns1=3Daddr_nr_ns1 + local add_nr_ns1=3D${addr_nr_ns1} while [ $add_nr_ns1 -gt 0 ]; do local addr if is_v6 "${connect_addr}"; then @@ -750,21 +754,21 @@ do_transfer() addr=3D"10.0.$counter.1" fi pm_nl_add_endpoint $ns1 $addr flags signal - let counter+=3D1 - let add_nr_ns1-=3D1 + counter=3D$((counter + 1)) + add_nr_ns1=3D$((add_nr_ns1 - 1)) done elif [ $addr_nr_ns1 -lt 0 ]; then - local rm_nr_ns1 - let rm_nr_ns1=3D-addr_nr_ns1 + local rm_nr_ns1=3D$((-addr_nr_ns1)) if [ $rm_nr_ns1 -lt 8 ]; then local counter=3D0 local line - pm_nl_show_endpoints ${listener_ns} | while read line; do + pm_nl_show_endpoints ${listener_ns} | while read -r line; do + # shellcheck disable=3DSC2206 # we do want to split per word local arr=3D($line) local nr=3D0 =20 local i - for i in ${arr[@]}; do + for i in "${arr[@]}"; do if [ $i =3D "id" ]; then if [ $counter -eq $rm_nr_ns1 ]; then break @@ -773,9 +777,9 @@ do_transfer() rm_addr=3D$(rm_addr_count ${connector_ns}) pm_nl_del_endpoint ${listener_ns} $id wait_rm_addr ${connector_ns} ${rm_addr} - let counter+=3D1 + counter=3D$((counter + 1)) fi - let nr+=3D1 + nr=3D$((nr + 1)) done done elif [ $rm_nr_ns1 -eq 8 ]; then @@ -793,11 +797,10 @@ do_transfer() =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 + [ $addr_nr_ns1 -gt 0 ] && [ $addr_nr_ns2 -lt 0 ] && sleep 1 =20 if [ $addr_nr_ns2 -gt 0 ]; then - local add_nr_ns2 - let add_nr_ns2=3Daddr_nr_ns2 + local add_nr_ns2=3D${addr_nr_ns2} local counter=3D3 while [ $add_nr_ns2 -gt 0 ]; do local addr @@ -807,20 +810,21 @@ do_transfer() addr=3D"10.0.$counter.2" fi pm_nl_add_endpoint $ns2 $addr flags $flags - let counter+=3D1 - let add_nr_ns2-=3D1 + counter=3D$((counter + 1)) + add_nr_ns2=3D$((add_nr_ns2 - 1)) done elif [ $addr_nr_ns2 -lt 0 ]; then - local rm_nr_ns2 + local rm_nr_ns2=3D$((-addr_nr_ns2)) if [ $rm_nr_ns2 -lt 8 ]; then local counter=3D0 local line - pm_nl_show_endpoints ${connector_ns} | while read line; do + pm_nl_show_endpoints ${connector_ns} | while read -r line; do + # shellcheck disable=3DSC2206 # we do want to split per word local arr=3D($line) local nr=3D0 =20 local i - for i in ${arr[@]}; do + for i in "${arr[@]}"; do if [ $i =3D "id" ]; then if [ $counter -eq $rm_nr_ns2 ]; then break @@ -832,9 +836,9 @@ do_transfer() rm_addr=3D$(rm_addr_count ${listener_ns}) pm_nl_del_endpoint ${connector_ns} $id wait_rm_addr ${listener_ns} ${rm_addr} - let counter+=3D1 + counter=3D$((counter + 1)) fi - let nr+=3D1 + nr=3D$((nr + 1)) done done elif [ $rm_nr_ns2 -eq 8 ]; then @@ -850,23 +854,24 @@ do_transfer() fi fi =20 - if [ ! -z $sflags ]; then + if [ -n "${sflags}" ]; then sleep 1 =20 local netns for netns in "$ns1" "$ns2"; do local line - pm_nl_show_endpoints $netns | while read line; do + pm_nl_show_endpoints $netns | while read -r line; do + # shellcheck disable=3DSC2206 # we do want to split per word local arr=3D($line) local nr=3D0 local id =20 local i - for i in ${arr[@]}; do + for i in "${arr[@]}"; do if [ $i =3D "id" ]; then id=3D${arr[$nr+1]} fi - let nr+=3D1 + nr=3D$((nr + 1)) done pm_nl_change_endpoint $netns $id $sflags done @@ -960,14 +965,14 @@ run_tests() make_file "$cinfail" "client" $size # create the input file for the failure test when # the first failure test run - elif [ "$test_linkfail" -ne 0 -a -z "$cinfail" ]; then + elif [ "$test_linkfail" -ne 0 ] && [ -z "$cinfail" ]; then # the client file must be considerably larger # of the maximum expected cwin value, or the # link utilization will be not predicable size=3D$((RANDOM%2)) size=3D$((size+1)) size=3D$((size*8192)) - size=3D$((size + ( $RANDOM % 8192) )) + size=3D$((size + ( RANDOM % 8192) )) =20 cinfail=3D$(mktemp) make_file "$cinfail" "client" $size @@ -980,7 +985,7 @@ run_tests() sinfail=3D$(mktemp) fi make_file "$sinfail" "server" $size - elif [ "$test_linkfail" -eq 2 -a -z "$sinfail" ]; then + elif [ "$test_linkfail" -eq 2 ] && [ -z "$sinfail" ]; then size=3D$((RANDOM%16)) size=3D$((size+1)) size=3D$((size*2048)) @@ -1029,8 +1034,8 @@ chk_csum_nr() printf " %-36s %s" "$msg" "sum" count=3D$(ip netns exec $ns1 nstat -as | grep MPTcpExtDataCsumErr | awk '= {print $2}') [ -z "$count" ] && count=3D0 - if [ "$count" !=3D $csum_ns1 -a $allow_multi_errors_ns1 -eq 0 ] || - [ "$count" -lt $csum_ns1 -a $allow_multi_errors_ns1 -eq 1 ]; then + if { [ "$count" !=3D $csum_ns1 ] && [ $allow_multi_errors_ns1 -eq 0 ]; } = || + { [ "$count" -lt $csum_ns1 ] && [ $allow_multi_errors_ns1 -eq 1 ]; }; = then echo "[fail] got $count data checksum error[s] expected $csum_ns1" fail_test dump_stats=3D1 @@ -1040,8 +1045,8 @@ chk_csum_nr() echo -n " - csum " count=3D$(ip netns exec $ns2 nstat -as | grep MPTcpExtDataCsumErr | awk '= {print $2}') [ -z "$count" ] && count=3D0 - if [ "$count" !=3D $csum_ns2 -a $allow_multi_errors_ns2 -eq 0 ] || - [ "$count" -lt $csum_ns2 -a $allow_multi_errors_ns2 -eq 1 ]; then + if { [ "$count" !=3D $csum_ns2 ] && [ $allow_multi_errors_ns2 -eq 0 ]; } = || + { [ "$count" -lt $csum_ns2 ] && [ $allow_multi_errors_ns2 -eq 1 ]; }; = then echo "[fail] got $count data checksum error[s] expected $csum_ns2" fail_test dump_stats=3D1 @@ -1282,8 +1287,8 @@ chk_stale_nr() [ -z "$recover_nr" ] && recover_nr=3D0 =20 if [ $stale_nr -lt $stale_min ] || - [ $stale_max -gt 0 -a $stale_nr -gt $stale_max ] || - [ $((stale_nr - $recover_nr)) -ne $stale_delta ]; then + { [ $stale_max -gt 0 ] && [ $stale_nr -gt $stale_max ]; } || + [ $((stale_nr - recover_nr)) -ne $stale_delta ]; then echo "[fail] got $stale_nr stale[s] $recover_nr recover[s], " \ " expected stale in range [$stale_min..$stale_max]," \ " stale-recover delta $stale_delta " @@ -1322,7 +1327,7 @@ chk_add_nr() =20 # if the test configured a short timeout tolerate greater then expected # add addrs options, due to retransmissions - if [ "$count" !=3D "$add_nr" ] && [ "$timeout" -gt 1 -o "$count" -lt "$ad= d_nr" ]; then + if [ "$count" !=3D "$add_nr" ] && { [ "$timeout" -gt 1 ] || [ "$count" -l= t "$add_nr" ]; }; then echo "[fail] got $count ADD_ADDR[s] expected $add_nr" fail_test dump_stats=3D1 @@ -1467,8 +1472,9 @@ chk_rm_nr() count=3D$(ip netns exec $subflow_ns nstat -as | grep MPTcpExtRmSubflow | = awk '{print $2}') [ -z "$count" ] && count=3D0 if [ -n "$simult" ]; then - local cnt=3D$(ip netns exec $addr_ns nstat -as | grep MPTcpExtRmSubflow = | awk '{print $2}') - local suffix + local cnt suffix + + cnt=3D$(ip netns exec $addr_ns nstat -as | grep MPTcpExtRmSubflow | awk = '{print $2}') =20 # in case of simult flush, the subflow removal count on each side is # unreliable @@ -1539,13 +1545,13 @@ chk_link_usage() =20 local tx_link tx_total tx_link=3D$(ip netns exec $ns cat /sys/class/net/$link/statistics/tx_byte= s) - tx_total=3D$(ls -l $out | awk '{print $5}') - local tx_rate=3D$((tx_link * 100 / $tx_total)) + tx_total=3D$(stat --format=3D%s $out) + local tx_rate=3D$((tx_link * 100 / tx_total)) local tolerance=3D5 =20 printf "%-${nr_blank}s %-18s" " " "link usage" - if [ $tx_rate -lt $((expected_rate - $tolerance)) -o \ - $tx_rate -gt $((expected_rate + $tolerance)) ]; then + if [ $tx_rate -lt $((expected_rate - tolerance)) ] || \ + [ $tx_rate -gt $((expected_rate + tolerance)) ]; then echo "[fail] got $tx_rate% usage, expected $expected_rate%" fail_test else --=20 2.34.1