From nobody Sun May 5 15:38:32 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1565867jad; Thu, 24 Feb 2022 05:56:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJyK3cd9KaxpWVKYF2ffdknCuoxzsZEbYzUJurFty+l2j9PVfsyPRXTTpXIVlAAkGcDvz1cg X-Received: by 2002:a17:902:8a96:b0:150:1756:b1ff with SMTP id p22-20020a1709028a9600b001501756b1ffmr1995816plo.157.1645711011849; Thu, 24 Feb 2022 05:56:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645711011; cv=none; d=google.com; s=arc-20160816; b=C3yGxtpUhjPM6TWaKkzoVd1eOfao9vslET+XYfLzj6di5ymGMNmod9PqZitTMcSJzD kbxpIjsbPMbpXsfqH+Xcof12Uk3/qG01XmikozrcXVs+4QgQfnJFUhknx9l82ztA2YHy JLwEdK5hCyOknRB4Ty1/+wk1/QhZr/CVCQugio/Ct5DxwIz8rQYknkXxp+rCHVxBstLv OK7hJuClmhht1rYe02j5bsKJ34Zwyo+B9SyMAXdWfveDtEZEoYoCxBfDdHvBqvrkPxbd aB82HtWxCAieghQO2oa/+xdHk2Coo90WqvxFxgwrRH0BJn6IW0tJgGjLVJLH7/QcWomo cgyQ== 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=m6gMrbgSw2Uv7xOviqgGSBeOBaX7909AoRdp0H64DM8Rx7uQr/mtjNWDUB6CYELGmu BhtIaJvuIwlW1JteS/BYKxjbAw7CJam9xY/v6HSqxGfZvjL6mh3HLlzfYTSdbKXM/UGH uTkRBMaqeFXoNHDd+qmyDrSu0gjS/4HvQnICGf+Gid2UGKHGqKdGYsd6LrD8sjmpsfDc xF+SOcFr3J9Iz0NvmlWiuCIHOQTMvNhgcpJI5pwAs2ljle3qY13S+dKT1xke5ofZZ54E Tb7gDLS666luWu7KWRUtYOVmF54UiaBDV8N+beMDl83iy29M2ywbDBR2JROcYo35Uwra EjeA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=RKch9nfP; spf=pass (google.com: domain of mptcp+bounces-3980-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3980-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 b5si2442458pfm.93.2022.02.24.05.56.51 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 05:56:51 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3980-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=RKch9nfP; spf=pass (google.com: domain of mptcp+bounces-3980-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3980-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 84AF33E0FB0 for ; Thu, 24 Feb 2022 13:56:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 01CD87473; Thu, 24 Feb 2022 13:56:50 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.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 ACA5A1B62 for ; Thu, 24 Feb 2022 13:56:47 +0000 (UTC) Received: by mail-ej1-f41.google.com with SMTP id p9so4525464ejd.6 for ; Thu, 24 Feb 2022 05:56:47 -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=RKch9nfPVIht74tNF5yexDqMFfOzlVeiE00hSjZd0CdNNVOXeIS2o2UFsew6Vtp3uP /CoHCBYsbo+dibqSQBp4cCEAH/L9RntLB969nLa9CWSTwLDyBM++Lyyu4h81PgAUVCgM CGFOpqYcL4TwacfXRkAnCHwrmNOQlzZzqf2zQSQxWZkdlhY5amHimCsCu1e1/Ge5bxDO GFpq8dNZump7KGpH/ygWkyMS2NyuUqDTUy0za4IciTZjmDcWTjxjUtTdyjIaqzZlq4DJ CA5m+On2LTZiVx8X9kGfME44T7dkYSOy/znK9gE02PjPoS3Hd16uLz2YgchpjyN/dP5f DsrQ== 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=ZM+NmKk3Lu7vxTHk0hXH2TUYsskG1fWYYQzX0H572qIHkUjSOmgl62Wgo9orz+DBTB dncvVs825p2HCGQq5zo6zQuxVx3YRSMCdefwz+Y/kxtUaAnfk4GnmnNeWGsgINe5hDyq f79sjOWUOD+2pt3ZNBw2/I3HdE8NrcgdHV2oQiw/WeDYWxdcn2nKUndhpgQ5JVa2DzcJ DcsgC+wBKRcbMiFP3NIqDq1a/Tcm/teXdjisfPNrQ2460kCl5x5Ek2sdX8iSu6C2I8IB qQIXPRK5G0t6bGIDA6ceuhFLI78ppdz5QekmHuGSVFYau8AHJGCRTFOYWtTZpP+Jus4V RMhg== X-Gm-Message-State: AOAM531r7WOsPmPTwIO521Nrb9hf/qvE0lGaswhUCsalzOtEwSoBbzDb Wx9NCuW2fKZ2aiXzxIsWyxGjNcD0GLQVqZe8P9I= X-Received: by 2002:a17:906:684a:b0:6ce:c1b4:b503 with SMTP id a10-20020a170906684a00b006cec1b4b503mr2437384ejs.355.1645711005667; Thu, 24 Feb 2022 05:56:45 -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 7sm1360733edw.37.2022.02.24.05.56.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 05:56:45 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-next v3 01/12] Squash to "selftests: mptcp: Add tests for userspace PM type" Date: Thu, 24 Feb 2022 14:56:08 +0100 Message-Id: <20220224135619.2523272-2-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224135619.2523272-1-matthieu.baerts@tessares.net> References: <20220224135619.2523272-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 Acked-by: Geliang Tang --- 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 Sun May 5 15:38:32 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1565884jad; Thu, 24 Feb 2022 05:56:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJwSqH1ktN8LO1dIPlhTprzkedQvBH6UrFwy8LOfZ8bkbDAfxv/GuEeVju1i0jBNAea+Rhqb X-Received: by 2002:a81:7004:0:b0:2ca:287c:6bc6 with SMTP id l4-20020a817004000000b002ca287c6bc6mr2378408ywc.107.1645711013409; Thu, 24 Feb 2022 05:56:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645711013; cv=none; d=google.com; s=arc-20160816; b=wU+vGfF7XCep5sIqm13w4sAQMGNa3g8jsns7PviuPzlYEKfEQXs5SUbcVnoHl42yYz gz8NyG2SmdE4JyLUVOFfjwZviVrrtGSEurqbkzaY4a4DCvPHP11HLLfkiGUNcysJUS2w XcJLDiOrvrbieBXvWAWSaT7a3vt2XK9wubpXzzr9/Ru7/kwW3dQtAasaj7aKU5s7VsT4 uWn1ms3wgrWPiQlrWBKUhS6/j5/OzNCMA5mMov7IB63wKoC1ZC+yh6upyEKKrLZwgmpV SKbAAFpiFWxzw6WBcbzmaPIeXVrbirN4Q0bp1tj9dCpuZT4nMEB0wLeFAnGVVq0A4EP6 1Kgw== 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=PDoRd5pV1qAiA8BIkYwaSilO+uUflUCMYfzehKD+M8zn4Bs6OZDCk2c9abfwYxqpyf /OHWqh6iFn6mt4qXpO05EpfCibfepCuNy8p82bVV7sf8kgyviGZqiQjN2l6shYRSHmiY C/PDqlc/8CTcAchdpn4hln1zuXTjgfyblGA53RnWwviEEySa62q7YfQO4wduMxkFMCqk vV2nGue0nboRV0TDCYsio3XOdcmOwuEiYRUfJ8UksIkNTnZQg6smczW/kxYqJBox4tO5 5FCU//656+rhEFof2IB6qlCAqXgB50MU9ARmyVMvT6BwqmiajYEIDU0Q3evs/+UZaBVb UEYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=5Le2O2Ay; spf=pass (google.com: domain of mptcp+bounces-3981-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3981-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 f129si1916672ywf.361.2022.02.24.05.56.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 05:56:53 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3981-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=5Le2O2Ay; spf=pass (google.com: domain of mptcp+bounces-3981-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3981-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 DBB001C0D08 for ; Thu, 24 Feb 2022 13:56:52 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C424F7479; Thu, 24 Feb 2022 13:56:50 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) (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 1CB121B63 for ; Thu, 24 Feb 2022 13:56:48 +0000 (UTC) Received: by mail-ed1-f44.google.com with SMTP id w3so2940812edu.8 for ; Thu, 24 Feb 2022 05:56:47 -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=5Le2O2Ay5LngzgMRsKmMBzlujdsgtz5tfhMzW9Zbz7nZKyJETrIR19dlvGhglJYziL NE6O3gI7zA6H6eGRMptioaoNKY+qqPdtnU8JXBei4k4Aiy14SRd41cioLad+j2cFo/vK 9gB0MA4EwpYJ8dB6BAbjMZUI/FyaBE2YNkeQHlE6b+SdOe4zeTfJ0qazxRe/lPuLxN/N CwUMu45EneJNnzsQgWC+Vsjw1GEp5YUNoHmIuxvLCi7b8ernDKVUwmZmKtzqqsYrr6ww REc5Gnh8I8hsGb03zwY3JVVs//YZYSyeoA/IXJFlB6cnxEPPRJYSiY+NOoKkre1Cy1AQ L6/A== 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=c6+pYwY6shZdSC5pXvExmAIviANfvAVUmqkwsYvaaPcKjMHHYKTO3XzfcBWehcl401 FaaaA4SPxRP5dbbkb/GxcC24KL/MxD6FE3UDVMbyGkGRFa1ro4VGDN33fxgzx3cXOg1t EOXny06eEkt34jLVHIF9qxZEezE/viO7V4F4OnKPexmUOstI4g9BxX3uxYXAuhkresDM 9PAEhfFzXWEDDqhKkXHCWCBRsUJeU50aCYIlb6M9P/PlG3WJAAyc995OasgXU0sNUIk3 4lOn+DK32xDkrkm7u94dLuB7eyV3YO/3yEaANRftRj0xOBgSbZ3lOvFjS0xNCaaAnnYc 2LLA== X-Gm-Message-State: AOAM533D16DF1vogbwIqETmb31DSgRiRSzylHMWus7jt7v9FUEo1Wm1L Nc4flLvunxFka0TAS07YjNfzovUkqfzwgbfTJEs= X-Received: by 2002:aa7:d2da:0:b0:410:b9f1:ff35 with SMTP id k26-20020aa7d2da000000b00410b9f1ff35mr2439956edr.217.1645711006245; Thu, 24 Feb 2022 05:56:46 -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 7sm1360733edw.37.2022.02.24.05.56.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 05:56:45 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v3 02/12] Squash to "selftests: mptcp: join: allow running -cCi" Date: Thu, 24 Feb 2022 14:56:09 +0100 Message-Id: <20220224135619.2523272-3-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224135619.2523272-1-matthieu.baerts@tessares.net> References: <20220224135619.2523272-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 Sun May 5 15:38:32 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1565896jad; Thu, 24 Feb 2022 05:56:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJxuv6IyptA2IzUAtcMsM+wSJJgV+GcMgHb/cNpx5V16rElmDsAN429s5bI123F+fTChS47L X-Received: by 2002:a65:4348:0:b0:375:9840:b064 with SMTP id k8-20020a654348000000b003759840b064mr1155096pgq.270.1645711014442; Thu, 24 Feb 2022 05:56:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645711014; cv=none; d=google.com; s=arc-20160816; b=K0CbBuPV9gIomzzUQbxNO+rJm0+4f9OMEaKmAQBkzPav4ElUPXq97G2MoViqKeNf8e O/bX1jEYudkLXqSN71VuDM1uBwVJSv5npnwIH06hgf5yYNPkHxSBSdP7bULxfRd9cFls ewSbefpIaeXaYNDdcexz1NgRy1CSwfGwuJ6d7KjVBvB4nyQ/fgXWJLEbLCaZoNKVUAxF 5MS1Go6ZMu6iSrItSivl6354jttc/dPMMwjjWNKhoxVTxXUsDRmnzp/NYgvBt71NlWvZ Hp1yFmRRUj9tlwuY1Gm2LjjI96hZqj3w1QoGH2UI4tqQfutRkXmtjOZ85twKgiUP7RCA KSJw== 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=qffqFYZaczUvEfRFJIoTzyQeopr7ViT5TCmTw+r70kw=; b=sA5eUJWFDlGASxL5b++jcLd7Wq4FoO2eHel4fTzjpU4KoOJZcEkpSvgdMpXqPMClzS rDfBS2A0pqoW2rq0IV12VQSMUGG5n6nMhdZSs5h3w+ArKvLMWWhoeCTpgIC1SZmG12ZK H5u5Ms+7K5OvgjC44UTZ0FUO4uHDcJ+3Zq01PTpv0hT/qkkAZ18h34lVVdYEhb96aKwW GCc6qaywul1MjWX0M3eRolV+h6SVUUH/wPEg2A4pPj44Zp7OKpFEmYQVNA+SDLBaQLN2 0c3B/clB8nc/wkc2RiA8KTbICpFhDm/h6bs6RO/gYRnj+S93WnrD1GxLdpahSStVtaz4 a1NA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=FEjH4E1o; spf=pass (google.com: domain of mptcp+bounces-3982-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-3982-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 s22si2578653pfg.76.2022.02.24.05.56.54 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 05:56:54 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3982-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=FEjH4E1o; spf=pass (google.com: domain of mptcp+bounces-3982-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-3982-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 B1F323E0F1D for ; Thu, 24 Feb 2022 13:56:53 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EEFC7747A; Thu, 24 Feb 2022 13:56:50 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (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 DA7C71B64 for ; Thu, 24 Feb 2022 13:56:48 +0000 (UTC) Received: by mail-ej1-f48.google.com with SMTP id bg10so4536594ejb.4 for ; Thu, 24 Feb 2022 05:56:48 -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=qffqFYZaczUvEfRFJIoTzyQeopr7ViT5TCmTw+r70kw=; b=FEjH4E1ooyIjSWF2AeLyMwKIKl0gQ4z+T2zQBMswnb/QN3+c36a45AbXgZT+YMuJqL s8fqiNkSlLNpt6VOGpuZ5+OCUFEfJkNLedSw+yCeEf3NhmEoliaSRV1b/ZHaSwZ4UmWo 1HdJL/V6aEisGFLuOTDo22Wd8aluJb61DXQLjflEc+dbcjEgnTza/4r2jqk6YIaVicVG 5se1KVMbb7VQZDUNxZ4CbH2CvNGFt7f7ZLOzmww7NuSj/gNuoYVfgpVpO6nvmazoCSl9 cgJTwAWdqZTxbnzbDndMyVcWwdhvUNAoMhvDhCsChaR6ZUTu3RRkOYdkzQWMElntY1/w xk2Q== 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=qffqFYZaczUvEfRFJIoTzyQeopr7ViT5TCmTw+r70kw=; b=L7udwmgfdPSys0W2tTO5683yrsQICDBHerftue7HY8UcVLB9DK6PmPYQEMclpXye6A QFs/K/OR+amlJLfQS9lATserYscwPSatuPVphcLY4TwM9ZsQTdZEDcsaN1w5mlMbGJab HHFzQFB+dSbmy6FrO9OdobthWcO4074FkDfLPkQ+XqAa1Q7sWai5DXZ8ulafLJZCaqMG KK3wVUOm70C6zuTVeIGq1d+eCDajNEtHxGBuPOzJJQk77hJUQ2S17iJ2Nc6q5LAK4Xft DF7n3/tlnsVl1Zx7btT0hA1zWVb8iqAFuVYFdOtF5PKXPzae6t2PfrjM51tr1e+9XtoJ Gjlw== X-Gm-Message-State: AOAM5322xKcSr94gAaDvl1spaNI7nhttfutQAqzgoW4is/gWfU8P9GfE WFash/J/+/IoxWaGDSBMSTwdTm033+lRNi4pQeg= X-Received: by 2002:a17:906:9547:b0:6d5:b3de:11e2 with SMTP id g7-20020a170906954700b006d5b3de11e2mr2476641ejy.630.1645711006956; Thu, 24 Feb 2022 05:56:46 -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 7sm1360733edw.37.2022.02.24.05.56.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 05:56:46 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-next v3 03/12] Squash to "selftests: mptcp: add implicit endpoint test case" Date: Thu, 24 Feb 2022 14:56:10 +0100 Message-Id: <20220224135619.2523272-4-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224135619.2523272-1-matthieu.baerts@tessares.net> References: <20220224135619.2523272-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. Signed-off-by: Matthieu Baerts --- Notes: to be squashed in "selftests: mptcp: add implicit endpoint test case" =20 to be squashed in "selftests: mptcp: join: allow running -cCi" .../testing/selftests/net/mptcp/mptcp_join.sh | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 02ae2692f7fc..231bd8322415 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 @@ -2532,21 +2547,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 --=20 2.34.1 From nobody Sun May 5 15:38:32 2024 X-Google-Smtp-Source: ABdhPJybzs57ggRFn09yH4Fx2G1Vnu7wAqLnRk1fCE/CNhPojcq3FrgttoMZ6bDNL7tFA4mBhb36 X-Received: by 2002:a17:90a:66c3:b0:1bc:cfab:86ec with SMTP id z3-20020a17090a66c300b001bccfab86ecmr1749026pjl.74.1645711016512; Thu, 24 Feb 2022 05:56:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645711016; cv=none; d=google.com; s=arc-20160816; b=MrPm5LhzIrfJPTiwAR5fx4Z8cdngkW1eufH6Gvia1689Ozp7xXYAST3QAx/Ti5TWPI /nqnjEx998EbKSIC4cS0iY1ZuNShbgtnEn9bfc+jTogrRxhBBMDHPPsRjkn62Kn3qOVU GC/5sjBkSxpdV8H2MJ1d5xKWgfz0vpTI0xEMhkVI2nqqJkw7Br6mOlYCZsSyFap5Q3HA mzmYEIJRUHXac/wwByvsOzO73/1QqkaIrAFxVcFUZ9j4r5aIRCGsmLkp5JfhEhTPVOXd VOs5A4/V3fTJtIRKHkO5lhBxCvdA5SZabzxXJhhwB0ZSLq6m/X8fabj2A3Ic+QCBxjsF swkg== 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=IM3ezoKqlGUT30t3MQnIKM93Q8CPZvsnhdW5dqzlcpQ=; b=Y2VKrlAHm8pcXMH2V1av79MWEFiXZUJ8rcyPyghGSgagi4c2mhYsIgW92hoxrV6eEY 0ubyLuFPR6ecP7i9r0q7yaeXB1bp2wpx0gZwLt4DMlvdnZloCjf3Bl5uAuFI8gjgucA5 nZBCr/48J35ZubuP1e8qFosbfwDdoIeSggkd1rhttsk27x1ncMBj/GprUe11xskl+OHj x1hZYnb7SmcKfDOcAc1ilSa6lqSgLZmSnjNnaNXDwz2Q7i1ugeVYONLug0CmmmbKpYjh yBo2oAoCH8BZWDboQ+1crHv0TwLxMCm8gjL9rgaHwouk9dPoxIo1RIklEHrE3nEhMiDb MPPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=ng9DymuC; spf=pass (google.com: domain of mptcp+bounces-3984-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-3984-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 u17si2374264plq.411.2022.02.24.05.56.56 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 05:56:56 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3984-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=ng9DymuC; spf=pass (google.com: domain of mptcp+bounces-3984-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-3984-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 0571E3E102E for ; Thu, 24 Feb 2022 13:56:56 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 936E9747B; Thu, 24 Feb 2022 13:56:51 +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 7B68F1B65 for ; Thu, 24 Feb 2022 13:56:49 +0000 (UTC) Received: by mail-ed1-f49.google.com with SMTP id m3so2927333eda.10 for ; Thu, 24 Feb 2022 05:56:49 -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=IM3ezoKqlGUT30t3MQnIKM93Q8CPZvsnhdW5dqzlcpQ=; b=ng9DymuCjDd1mDIa41a0Ti7zGlvqdzg9ZuuCqhW+Qcre4xeQXzP36RiHEHLPlX1gln yjzvt1ef5aN9qghls8Vgu27Wh2orpvyJLxToHBBKqgR5b7VeCpnr1Rq+67xvWXt1MW8D LcVv3oETHuLrFSrRE/q8vFPoUYn8jxeIYIQXSpV0qX5Fwjq3tiG+WueWZn7LGclpy+x/ mwOuxXdRBtxVUW/aqSYbr2gB9YOxfF2VPaaln4lO1zRz86jJZrJVNYWDm4trZDUd10fe LfeXpH+2GN25ADTvMegOKXw75wtVsV/Q0NPVd7GnLUo8Mp2AtOmy9mMBhiLfcJXiFkeN pTGQ== 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=IM3ezoKqlGUT30t3MQnIKM93Q8CPZvsnhdW5dqzlcpQ=; b=j7k9nnkJYHaNTzD/qdPWbZyFGBPGEFS5O6U67oZd2fF6WhamiLdlLHNdDdo7wfBrAF liT/4Sa9pNutvCs68eD0e5+PS1Kmb7ZIGmH7QOSdl+i0MlkBasa3FSLg3q+2wWTSd+gd UG1NJzu8wbJw2zQc0dz3fkMRxE/S1WOXg5Lyu9wshyE3iDKz3zS9gop9+sWg/yxsf3SX ftynpADb//cVoVTwyko9pUW7m3oAp7xzpk4Z3j1K/XQPHLTwONRp9/Pq61DtyQA+jGJb lWnDXPOGUBBdaYsS7rvsyKdcugny89QvCEfxu23qhaYwxNt1A4z3SzJM1mBQQR5PRotp 9QoQ== X-Gm-Message-State: AOAM531SRK1HcvegKBXLk77fd1/cX4uw7SxhX+MhMOe6ea3adHJdUo1S RkSnakcPcyouBWpSdWdIBb8eKhA8rn8FhZSCEKs= X-Received: by 2002:a05:6402:35c9:b0:413:1602:2c46 with SMTP id z9-20020a05640235c900b0041316022c46mr2477689edc.222.1645711007464; Thu, 24 Feb 2022 05:56:47 -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 7sm1360733edw.37.2022.02.24.05.56.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 05:56:47 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v3 04/12] selftests: mptcp: join: define tests groups once Date: Thu, 24 Feb 2022 14:56:11 +0100 Message-Id: <20220224135619.2523272-5-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224135619.2523272-1-matthieu.baerts@tessares.net> References: <20220224135619.2523272-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 defining a new tests group, it has to be define 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 231bd8322415..9d14851f9732 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 @@ -2570,29 +2571,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() { @@ -2602,25 +2580,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" @@ -2630,65 +2595,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 @@ -2709,11 +2654,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 Sun May 5 15:38:32 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1565910jad; Thu, 24 Feb 2022 05:56:55 -0800 (PST) X-Google-Smtp-Source: ABdhPJwXeSuSEUNpmQpOgljjev9hCK/WCnNOSxom0RQg0fMy6/vlfogW6K1Hz9WSmp2GrAWICRwJ X-Received: by 2002:a5b:603:0:b0:624:64e1:35c with SMTP id d3-20020a5b0603000000b0062464e1035cmr2499086ybq.455.1645711015578; Thu, 24 Feb 2022 05:56:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645711015; cv=none; d=google.com; s=arc-20160816; b=cwVTJ11VNNQB6pQm1yyBwmV/ZO9kCIjOuk67AiPK4SpQgC6EvM0W9n6gud3Lf6vvWk gqBIiu5PaFq/kiFhvWKHeg4QQ/6a0pzWp328vTd4ojkqlVecGRUGxbzmQBBdFllo9Z2W n7JDv/UWc44aFY5xRq10bqaExpJvW6XVzju+hIb1dvz9uCZVedf/hNSCFezugCfKTkKH G83YISl/FMfQfwsdafTcEm17IlgVNBhJt0C+T44jPaR4u1Ewx0VJ+tcanqa1AmRyL7L1 ILwM6IcI8Mse6RQk30yyzcJCN4ny/LH/1hSzsJbBFUNfPM5OFYt7oMUCtWP61g9jvnF6 Ubfw== 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=tt5AtZfDgzS7v94Fv77l+8XRNXqq9FkUAGIVf/7/K8I=; b=LWw3H/Tgnr+fGczR2WQeazCKWpF2U6vL3eCsHo3kliQ952cYc77c5RK6TQcHVYL2Vp g5pjHXS5M/7PckSyyd/fsRiOwVBEayAw65/Xz9DvRgkacsRfNcRhg59HAJTF4xNOOssi 8xxksOfTj6hlnlvSdrNP4bEo8M3SGwyNEZZsulV1brvj0vt1ErJObfpqPdgTao1xgjkK 0YAhTm95ZMcHasbkJU7Cdw7hWIfh3dbXEMLjJk5K+OwOXW+bOAgOrBIYe6Z/N4ysIu8O iVzmHKw5VNwOXeeMsNnkqLeGmCkD0lhuaKC6WxiuM2OsXO8mQZzJJpuRzwGX9ZtdhSbI mNMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=AC6pAb1B; spf=pass (google.com: domain of mptcp+bounces-3983-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3983-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 a82si2186618ybg.101.2022.02.24.05.56.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 05:56:55 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3983-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=AC6pAb1B; spf=pass (google.com: domain of mptcp+bounces-3983-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3983-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 2EA781C0E38 for ; Thu, 24 Feb 2022 13:56:55 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7BCB47478; Thu, 24 Feb 2022 13:56:51 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) (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 162361B62 for ; Thu, 24 Feb 2022 13:56:49 +0000 (UTC) Received: by mail-ed1-f48.google.com with SMTP id cm8so2974097edb.3 for ; Thu, 24 Feb 2022 05:56:49 -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=tt5AtZfDgzS7v94Fv77l+8XRNXqq9FkUAGIVf/7/K8I=; b=AC6pAb1BX0RYEi/0jVIp0YJU/g38we6kE/9tqkWeUTDiGyRdVyd/lFKwUpNXqW+K1V ggNA8F/osXzvm/VM27qrAZmvnizVXf+giwb+JZ3E2JW4nK/xqF74BESpiCvjV1y4/lYi U702dKIyqv6l8pDiSCjqagGFwGBZB9F9l+6i9DdTM0vnnYhIkTdVKS57T+GxL8oc/LYX ngB9Tpnx8QRLbRQdkRlLmr7+VaMbfCA2Aghowkg5bbLJ5Br2hmkC8+tQnCrnbob8Miz2 68bZBlJkMngOkQ/DUGdbz1HxK7obd7gg0e6VPI7tVu9k2djPH5RJ8AHDA9UcsfSrYpo5 cCtw== 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=tt5AtZfDgzS7v94Fv77l+8XRNXqq9FkUAGIVf/7/K8I=; b=XQRGn9Qe69wyR/5EXV03K5+LuiGgutpsN9+cqLmVtOFr0KDgRVYz+wr9ntm/JTsopK 7PDCFZ+cRVMvZvnUnMVM2p33aBW+byZexIeoSRIlHJmNvqnkI6b4ghdBc87fBAL9q8IK 9zBNnNVR0TOWYDATIOPPSgv95y8j8ZvBsap9i5mpvvJikK952o2UJBCoKRY1Htlwnttq w5QPDYBBy8u9mYtqbBMorHEbys0haKayqeObPlRttiMHcQC94wLOK49pVTc/tL+Jey46 Aw7ZvzLB94qOOPFz3QEtRwzWcDJs9SpCi4jH43CyOeaKIxFNznKh50tMNE7daY1mVjJM /78A== X-Gm-Message-State: AOAM5313V0Foy/cWn8X84zYlaMFNViPTbc2vR1vx7g5LJBO4coBv5Hhz vn7gWHoy2Ts4WxrAmwrriI3IFiWD+2kg6R+tU1Y= X-Received: by 2002:a05:6402:d0d:b0:412:d49c:74d3 with SMTP id eb13-20020a0564020d0d00b00412d49c74d3mr2389866edb.207.1645711007996; Thu, 24 Feb 2022 05:56:47 -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 7sm1360733edw.37.2022.02.24.05.56.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 05:56:47 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v3 05/12] selftests: mptcp: join: reset failing links Date: Thu, 24 Feb 2022 14:56:12 +0100 Message-Id: <20220224135619.2523272-6-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224135619.2523272-1-matthieu.baerts@tessares.net> References: <20220224135619.2523272-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 9d14851f9732..eb6735e2d570 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 @@ -1712,7 +1715,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 @@ -1727,7 +1730,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 @@ -1742,6 +1745,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 Sun May 5 15:38:32 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1565974jad; Thu, 24 Feb 2022 05:57:01 -0800 (PST) X-Google-Smtp-Source: ABdhPJzT0xdo0LKtHR+4vwBKu3ZRz2YLZgPL6vD5tjSLX26GFrjaP+yCub6s7IBNpJcL2fQWU7FV X-Received: by 2002:a17:902:edd5:b0:14f:9044:19f2 with SMTP id q21-20020a170902edd500b0014f904419f2mr2695919plk.74.1645711020820; Thu, 24 Feb 2022 05:57:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645711020; cv=none; d=google.com; s=arc-20160816; b=IZ4NOdX0oDkKMwuUtA8sq3yAktFChfFWO1V4LJ3eh3H+eRyXbFDUXQdPreP5fw5huq NEu8TzrwEUZCu2sVp4WtTK0g74UFyMgamflRV6G6/S3YX+wT+Pa1dATdkk+nM8ALXPVH GE38jKRxxLyEWbSjk/a/QhB+bvDTHQ5nvQdmeECqj5Ofw9UnFQuUUafmNIrflJlIPaQz lcC1nHnqKxOZcCT/pqLJfW3Q2h54JBd1HhvQYvIqvUmTf57yYeCkKnLtcUaEdfl4XodK UKmv6E9kPE9TemF4hgDzVS49iPdY9a32d/jOWU3Y+N5zoXh9VN+rN+IsedLNFUVVE6q1 dIHg== 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=zaGWALkh13/BoSSmh9Pj/vu5kI+R+MwsewvqHTtQyO8=; b=ZL5siKhJD/dPQIL72xsTbJ9b43pWiSQSHrQoEtpw/WL8tYgx0I2JOwhgSJUT8LdroI f6VIVaJK/69u5bKLTKgByVGt+tOscUi09tnvUj0w22caXNMPLmw3dRHWw9T/xWGcwMyt YIxg5FUvdlWdEjLBaITxRis1YQiup4oVkMow9WCeHNY3V12YFu3Yi8lw2B/UbF/qkU7Q 5crqkCFBlnROBjev5Xjd00P0o5w7aAQwxTmkPBVL/gIP6h50SAOLa3GMa3/4jHergA05 6N0sHLEQ7H2Hp70m/a1pIRWTm41i743khBx4Pz2MDSGWsOtOwEp+OMnl0ktutqsRqmeb Jt0A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=QGWjEL1L; spf=pass (google.com: domain of mptcp+bounces-3987-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3987-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 v11si2061653pjh.11.2022.02.24.05.57.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 05:57:00 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3987-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=QGWjEL1L; spf=pass (google.com: domain of mptcp+bounces-3987-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3987-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 CE9213E1046 for ; Thu, 24 Feb 2022 13:56:59 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 46B087478; Thu, 24 Feb 2022 13:56:56 +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 0D6B71B63 for ; Thu, 24 Feb 2022 13:56:51 +0000 (UTC) Received: by mail-ed1-f50.google.com with SMTP id m3so2927487eda.10 for ; Thu, 24 Feb 2022 05:56:51 -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=zaGWALkh13/BoSSmh9Pj/vu5kI+R+MwsewvqHTtQyO8=; b=QGWjEL1Ly0sDviqb0Ch44fhgbghAWfH/+Rv9dtp+OFI0Yvkvsgpf7CKubkGJqk9KHY 4F3nh4ib8YH9EXPjvz6JMjfWwYXFQBIirsLlwEF9i/yAmjssSJE/sszXHQ4eRL+vyfBX B1vFXgGOlMs57nvtf4166wgGngA8XCedZIl0jZTRFTwrxfdl8R2vERQyorIW+GcAWT+4 jjA+XNnm83Svb57IxhWBRZrTXkTsu+fTISyDZjaT8sfBu34meE7flq6/W614xU92f1sC 9knK5dtGKzCR8pAJgf3Sbi9YQVOG1812qb9GI8c4sdJ9US0HFQgCtuZOsvty/MJgkSEz ml/A== 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=zaGWALkh13/BoSSmh9Pj/vu5kI+R+MwsewvqHTtQyO8=; b=66ts7Ry7Ao2IoJW/35PDntY+NyCOrIKinJ5ZLS7OAof9uSTWU2di8LYTpW+YlCZBlr u5wIwQj2xmLyojnSMOXfulT98VFCKAObCBT6/zIV3DTcUlqXI4tLSPbd9ojS6pDvO3dn CSuHE0Fwf4jJZcsrlORyV+R0YTEkPdIDyGrxKi/u6RZLzQT5gyv90TGubwACto0o718q Tk1BmXgwMx7OWvz8zoltydJypDrvunaFmAPxOSW0AVhC845TrQRRubkLGy2+WaZWsVp9 98Z8AX141CpD18J+7rGAUOKzpT+LmF5zvbpnloJO9CgXccXladgLIPNMxyMEyl/mWsP9 Ey1g== X-Gm-Message-State: AOAM533BeUd9EY4UxvtEq05vyGvs1bkhkFSd6VWtXw5m85020ry/Uw3J WaRDYctO0w03nXEgIVwACnw1DJoG8jEeqBK/ANA= X-Received: by 2002:a50:fb02:0:b0:40f:bd67:205f with SMTP id d2-20020a50fb02000000b0040fbd67205fmr2399921edq.409.1645711008878; Thu, 24 Feb 2022 05:56:48 -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 7sm1360733edw.37.2022.02.24.05.56.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 05:56:48 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next v3 06/12] selftests: mptcp: join: option to execute specific tests Date: Thu, 24 Feb 2022 14:56:13 +0100 Message-Id: <20220224135619.2523272-7-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224135619.2523272-1-matthieu.baerts@tessares.net> References: <20220224135619.2523272-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 | 1754 +++++++++-------- 1 file changed, 939 insertions(+), 815 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index eb6735e2d570..b9d1b3508f1d 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 @@ -567,8 +592,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" @@ -1475,888 +1499,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() @@ -2364,95 +2468,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() @@ -2464,115 +2577,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 - 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 "implicit EP 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 "implicit EP 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" \ - $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 "implicit EP modification is allowed" \ + $ns2 10.0.2.2 id 1 flags signal + wait + fi } =20 # [$1: error message] @@ -2595,6 +2707,8 @@ usage() echo " -i use ip mptcp" echo " -h help" =20 + echo "[test ids]" + exit ${ret} } =20 @@ -2657,6 +2771,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 Sun May 5 15:38:32 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1566030jad; Thu, 24 Feb 2022 05:57:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJzauN13VMYlhlGLDK3pYx1bn6pZ5OHDtRzhcWDf8IbQXKj+gBf67eV6ZYx2XmQ2F1vLw8hJ X-Received: by 2002:a05:6a00:1c9c:b0:4c0:3e77:22ea with SMTP id y28-20020a056a001c9c00b004c03e7722eamr3050164pfw.74.1645711025560; Thu, 24 Feb 2022 05:57:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645711025; cv=none; d=google.com; s=arc-20160816; b=KnnLN/iE+wiaqDuTiEkL3h5gFm7RSPEhal84VlR59LQ/EgMi1YzqUONZaZnS80zcwr Knn2BR2xf8j4GaHinCc7swN0YAtBsIaQXSCmWB4rzVYWEA9gI/HvIwZtVe3TRIG8mbLR ulA7XlN31N9bfy7m+/JU+1SIvjsqHPLKbHbcdR/jgrZde4RO3SuNoOtA+kOkJ3m3+4PK OXI0q+i4sZh2TayxAY9deMtrAqznubYokAXvpfZFkz6tHjeXaG2uY+WByLN8I4w0pWK9 35+6ZtEWlb7dKZWjI3VlAO9WZXum4h21tpHf+4Cbqsiag0jupT60wXd08RMF5+Q2k/ug Jv7Q== 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=bd7ExWydbe2sJQsQue1RQamPMOs8R51+yrs80wIiOc4=; b=l/fsZ/2pjKomT8dCqO3NOcOgdrxxfk/H0O41Qr/W4yRIKaJCbzzTsvGuYDjMV+mBln tG57uPvASBivvY0G+Hf37ZI7hkNYXTnCJlpv8Gab8yCBIOq/foSQK/NZduiB4xL19VBC zuu9RwbbIjXi6+YNXfmaLYz9y60qUkn90apqIpp+9cg288SIrol4K4OmTBm5uoWlw5DX FOZbqqsc6JZnd1G5/ebSxPngyvb9cZkJafsl+fvej0MkgWHJWnJC+Q7nHQC60tBc0F1c 1yzoxI+kdKSnHp14bBu6UYsxA7Wui/doFG3TGKj7BTOPjC+RVHvGok1+D4N3ilch7HaX DF2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=4ys5P6FZ; spf=pass (google.com: domain of mptcp+bounces-3991-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-3991-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 w19si2555963pfu.293.2022.02.24.05.57.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 05:57:05 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3991-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=4ys5P6FZ; spf=pass (google.com: domain of mptcp+bounces-3991-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-3991-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 808653E1046 for ; Thu, 24 Feb 2022 13:57:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0E3C6747E; Thu, 24 Feb 2022 13:56:57 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) (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 543A91B64 for ; Thu, 24 Feb 2022 13:56:52 +0000 (UTC) Received: by mail-ed1-f53.google.com with SMTP id bq11so2980744edb.2 for ; Thu, 24 Feb 2022 05:56:52 -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=bd7ExWydbe2sJQsQue1RQamPMOs8R51+yrs80wIiOc4=; b=4ys5P6FZ4KhZfT56Thrgmm5/imB++tG6OeZD8ZI7SdtZYYa0qsFD7lAN/Owz8mexRI 4ic97Wq5JgkwWVOXjDNwZPgmwVDyKfbur4GWxXd4v+s914+2vk7p+OnwtmgZJgcBWcIf VRvlA5k7iMd5WR3l6O1YXJpzi6zlEoZ7yiT8fjDULlpVSdm8aYbMbBuECisfmtn7/ymW 7b6g/WeZfCkOlNQVYG9GJliH+UfyOjN7Xn6jV2s7P455/Hprw2nZKTxlW68WFUwIAG+q eHhaDIOqM+W/HgSZ7AmO+AyR4yJg4/q6c0fI+gSUWAiJE4oQSLL0yEVuqEphFt8skh75 2INQ== 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=bd7ExWydbe2sJQsQue1RQamPMOs8R51+yrs80wIiOc4=; b=iMTrU1XGjrvgNyEFfMoO5JWQE+I0f2SdNY7GZreS59bERVQyxL+rTMg5c0BlcFIoeF G52mwQqndx2J18v9vLbwHB4gq8p6rw85u4bukVPV/69+SjWqqVhg0uCrkKWvAJX9QwJ9 8xLFZgJVRQ99rUV0XobJbJ+1sqIThV4ZJTpHH1S4xecquZdnueodLQDEK7Ca3mqnHTh+ oJC10WDN32E5nmrzTom81NuMk+D15c60BRK2UtXChiNqkB7985j4efe0NsJFkwucnNYQ 2eYXTzAwZG54ludBKuF/a2cdBI30kDjM87p50LkRFjqjc9KUXqoQXLzOtqRRoZ5gGvrq bWGQ== X-Gm-Message-State: AOAM532Q6oNRbo5hiSubyv2+VWdgYDqA7xXRXPQBVkI4ctPc8j5hXUjS SK+eEQqew7rgCpFY+TKJ5+d7zQ2zyRvyKoIY/D4= X-Received: by 2002:a05:6402:190a:b0:408:9d75:eab6 with SMTP id e10-20020a056402190a00b004089d75eab6mr2379414edz.286.1645711009510; Thu, 24 Feb 2022 05:56:49 -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 7sm1360733edw.37.2022.02.24.05.56.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 05:56:49 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v3 07/12] selftests: mptcp: join: alt. to exec specific tests Date: Thu, 24 Feb 2022 14:56:14 +0100 Message-Id: <20220224135619.2523272-8-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224135619.2523272-1-matthieu.baerts@tessares.net> References: <20220224135619.2523272-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 | 473 +++++++++--------- 1 file changed, 245 insertions(+), 228 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index b9d1b3508f1d..c12b1baef29e 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" @@ -949,8 +962,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 @@ -1121,20 +1135,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}" =20 - printf "%03u %-36s %s" "$TEST_COUNT" "$msg" "syn" + if [ "${corrupted_pkts}" -gt 0 ]; then + title+=3D": ${corrupted_pkts} corrupted pkts" + fi + + 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 @@ -1499,65 +1518,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 @@ -1565,40 +1584,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 @@ -1612,27 +1631,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 @@ -1640,54 +1659,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 @@ -1702,7 +1721,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 @@ -1713,7 +1732,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 @@ -1727,14 +1746,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 @@ -1742,14 +1761,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 @@ -1757,14 +1776,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 @@ -1772,7 +1791,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 @@ -1780,7 +1799,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 @@ -1788,7 +1807,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 @@ -1798,44 +1817,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 } @@ -1843,156 +1862,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 @@ -2001,44 +2020,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 } @@ -2046,51 +2065,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 @@ -2099,120 +2118,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 @@ -2221,81 +2240,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 } @@ -2303,64 +2322,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 } @@ -2372,7 +2391,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 @@ -2380,7 +2399,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 @@ -2388,7 +2407,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 @@ -2396,70 +2415,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 @@ -2468,37 +2487,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 @@ -2506,53 +2525,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 @@ -2577,88 +2596,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 "$(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 } @@ -2707,7 +2724,7 @@ usage() echo " -i use ip mptcp" echo " -h help" =20 - echo "[test ids]" + echo "[test ids|names]" =20 exit ${ret} } @@ -2775,9 +2792,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 Sun May 5 15:38:32 2024 X-Google-Smtp-Source: ABdhPJxaYKoyBBB+EMYaNg7GSaqqa+MyxIUIp4EKEuK54UXdUSCG218u23VhFk9v/GEBrKPv3ujP X-Received: by 2002:a17:90a:16:b0:1bb:cfdc:b6a9 with SMTP id 22-20020a17090a001600b001bbcfdcb6a9mr14570768pja.5.1645711018117; Thu, 24 Feb 2022 05:56:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645711018; cv=none; d=google.com; s=arc-20160816; b=EqTdLlW2bipWBdflq7GB5/Qg6z+aWsdhsM2KHGMi8lYEnHhbnt1V82HqsD2o7JOEtT L5HhxawM88a/UgYNdviOzlhMPQ25sZCpJzq5s7bD8XtgDSaG65W10ZqP0inG6cA0sfnI 4n6KboPLCbR5oNPdm6T4WW/qYNMhGxZsQVh4GewQeEiU/UvQjHdI4iJuzSJJ0MBIfvq7 Ue6WVh8CbWeLPbpLojIwqoYO8OIl8PBAobkjLlxqt82WMf6aR3rCiiXO73rm3TY58xhD +3fTqhZJGT4fsDhjm1ozePYFSL4qz+8XzFyAzL2iDiFGBN2M5mBjq9JSeu4uuRb0/Fmw p6PA== 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=rjEg6dAukF/y+4vJZSobkREbn4j97c5KhvyHsPGTJNQ=; b=YqA0+agqg7/MKB6p3zr0Pvb0c+JKf36ud62a/x9BOWG++0html5TVG5dfyYVMoNarT g2UyFE5JfRLLVJ3wP42DnhPl6zvkH8vS7lBB599YayqLQfzRBVEiU4+pXupFE5pXa8WU MCakzCdyATR+4cH5gCPcaxr58nB39WZznEKi/uaNsgdZY8R1tYQRURHK7UV9Q24mNFYx czDXyd4C+Z0AA7OgOwsrTwBUgXtK1J9RGkw3fh+te0F/dmyv69YYAqbEcf9jhoZB7i9Y v7y4ua0eKFI4T2DTGnTf+ZUV9/r7yS8ECIPdFBxaL20Ag3iCQCsPG3wXlvuRD3i8+U6n axNw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=dUpRVyuq; spf=pass (google.com: domain of mptcp+bounces-3985-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-3985-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 il15si2529487pjb.91.2022.02.24.05.56.57 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 05:56:58 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3985-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=dUpRVyuq; spf=pass (google.com: domain of mptcp+bounces-3985-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-3985-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 5B1D73E102D for ; Thu, 24 Feb 2022 13:56:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 84F6B7473; Thu, 24 Feb 2022 13:56:53 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) (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 F03491B62 for ; Thu, 24 Feb 2022 13:56:51 +0000 (UTC) Received: by mail-ed1-f48.google.com with SMTP id bq11so2980710edb.2 for ; Thu, 24 Feb 2022 05:56:51 -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=rjEg6dAukF/y+4vJZSobkREbn4j97c5KhvyHsPGTJNQ=; b=dUpRVyuqbX3Ambrlm/K8Lqo59kzAdJny7SUrKiR5LN8dZbmd1gBu7dSOunMvEBemwA etQ6JuNkj1ZCAHOfk0ra2f1OJRwHH8IIEfp0nN8kiSDevs/EFJedZmy6LUV4U7mWRUCt tOUoqG2XSbTa8AXegirC5RKyUVr8fgP14zLBnce2lXweAOrFMwo0aMgoXIDYNrYLcP1V y36tcTWm7tcPit4R4WcYNasXXATX/Isz/RsD56oltCJirTVd9tZN8TlRKgf70iqyomRY /9TXNceTQfffZ23UuqWWm9yMwrFk4RVrX0nAskZsajbozCOhcbr0LQ8C42434fO8AdkK rqEg== 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=rjEg6dAukF/y+4vJZSobkREbn4j97c5KhvyHsPGTJNQ=; b=UxGPSCgPUYhOg2nMe4wlsgpEn0j9jVDc7pj5k8j7C2ZY/epqH3LWO/ZgRwKWiL9FeN t8UOrnfANglrZwt0DBdhP+rAn/K3DgCWGPIHixaa0+tZZb5LbE+wiR9i5Lob00ULLLrj /0/U4x20g/F8rDaiPwv8h+HD5tx8wU+DNiLwHBye0TNrsZF5mN4kUXixt3iTXEnpa8Hj sMC1JgPY0JBvx+mmaSHbY3Ndl5EkvZTuv5wKPX7FLGuzoUReJeLLa9Dsqc+5vFeAZwtp Z6I/jbQyXVm7NKncg/smOcUP/ibcTsj1zvdmAXv5/2b4QwVjkQIjUT5XJ/HDFgQ5E4hJ cj0w== X-Gm-Message-State: AOAM531yE2QgCr7RUqhWN/JJSLSNYCg9QglSQPzuwdv+n9gr3PcHF1fc fk1/dC8mF51YUjS5syz6SsThX5NpBouqNfIrMtY= X-Received: by 2002:a05:6402:492:b0:404:c4bf:8b7e with SMTP id k18-20020a056402049200b00404c4bf8b7emr2380670edv.318.1645711010043; Thu, 24 Feb 2022 05:56:50 -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 7sm1360733edw.37.2022.02.24.05.56.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 05:56:49 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v3 08/12] selftests: mptcp: join: list failure at the end Date: Thu, 24 Feb 2022 14:56:15 +0100 Message-Id: <20220224135619.2523272-9-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224135619.2523272-1-matthieu.baerts@tessares.net> References: <20220224135619.2523272-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 c12b1baef29e..b07cbf1a80ca 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 @@ -588,7 +604,7 @@ pm_nl_check_endpoint() echo "[ ok ]" else echo "[fail] expected '$expected_line' found '$line'" - ret=3D1 + fail_test fi } =20 @@ -842,7 +858,7 @@ do_transfer() cat /tmp/${connector_ns}.out =20 cat "$capout" - ret=3D1 + fail_test return 1 fi =20 @@ -974,7 +990,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 ]" @@ -985,7 +1001,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 ]" @@ -1005,7 +1021,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 ]" @@ -1016,7 +1032,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 ]" @@ -1037,7 +1053,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 ]" @@ -1048,7 +1064,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 ]" @@ -1079,7 +1095,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 ]" @@ -1090,7 +1106,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 ]" @@ -1113,7 +1129,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 ]" @@ -1124,7 +1140,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 ]" @@ -1158,7 +1174,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 ]" @@ -1176,7 +1192,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 @@ -1188,7 +1204,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 ]" @@ -1229,7 +1245,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 ]" @@ -1266,7 +1282,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 ]" @@ -1277,7 +1293,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 ]" @@ -1289,7 +1305,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 ]" @@ -1302,7 +1318,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 ]" @@ -1315,7 +1331,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 ]" @@ -1328,7 +1344,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 ]" @@ -1341,7 +1357,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 ]" @@ -1354,7 +1370,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 ]" @@ -1399,7 +1415,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 ]" @@ -1422,14 +1438,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 ]" @@ -1452,7 +1468,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 ]" @@ -1463,7 +1479,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 ]" @@ -1487,7 +1503,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 @@ -2806,4 +2822,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 Sun May 5 15:38:32 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1565963jad; Thu, 24 Feb 2022 05:57:00 -0800 (PST) X-Google-Smtp-Source: ABdhPJxpte2XxKUvUuh4YrkTFEVYPXob6NX01vUnjp+yI6WPtzT/tRvhK1iuG9YzpA4MHpsmILlB X-Received: by 2002:aa7:c391:0:b0:410:83fb:abab with SMTP id k17-20020aa7c391000000b0041083fbababmr2431808edq.435.1645711020149; Thu, 24 Feb 2022 05:57:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645711020; cv=none; d=google.com; s=arc-20160816; b=P10TRo3iJh5+2LBdYraoKHVe1FkBRJ6jeJgqfBX1XunNLsUexu7FrVqguIV1HxFGyC XHEEE4ukAEp3f2rcQmQOCkRs7pr6Wp05UHCbF9AVFK2Warlfy2/Nb5ckTbyoDIMBgFkL Hco9sC6Sj04ZzxHDtlrQOfnALz/sEtMhjAgn1/SCKbCeMTM5uUSK/PYHRUgG8r7LutAo sCC4uYSSvqz0+gaZCwygVgldZTLWBAk18EI0qlGyEZmKRtyxYsINjjh3jI0fpOXG/GKz mcfGnLdi21y3eZMvvc3RgAtFCb4Ruq5hEevjy5QvjWh4gLT0jsKWvUKvnDXpoDAVSexE +gpA== 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=02T14rJi1Rs5Q7HyrNykTziCtVUOiMJeAqh5/oYhA9k=; b=gUS5VGMSO/fUoez0jTVpY8n3Qim3ry+IUUkncK1U2YfWbdnhb/f1SJo7uULehEc1t1 rbld4p5Z4ltFtj3sNSiEdm7KNLXb148aJmY4gyL8LBT+OUWtTEzsQoI21OtFNKRUxQrk d0n29or0+8sq1OOiVNTCZKbNC0g8ax3tHmcPrgsnW5bJqPFFo44qHxpz5mr5v+svbuvi caqNlh1Stu3cePorixoexA1GkCWszHIlaBytrwFjhsDMCokZaoVpW/N6cjHApJEsQyyo MKfsEFD78y4hLo3zQKGhSlTGkbEXmelKFb9ylSF2oeT/UYPfAKKg6cRBgVM3ZLpIoNlq IgnQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=ZQfzMwIu; spf=pass (google.com: domain of mptcp+bounces-3986-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-3986-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 s5si1558340ejj.209.2022.02.24.05.56.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 05:57:00 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3986-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=ZQfzMwIu; spf=pass (google.com: domain of mptcp+bounces-3986-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-3986-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 DCCC11C0E38 for ; Thu, 24 Feb 2022 13:56:58 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2C8C67479; Thu, 24 Feb 2022 13:56:55 +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 5355F1B65 for ; Thu, 24 Feb 2022 13:56:52 +0000 (UTC) Received: by mail-ed1-f54.google.com with SMTP id s24so2954492edr.5 for ; Thu, 24 Feb 2022 05:56:52 -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=02T14rJi1Rs5Q7HyrNykTziCtVUOiMJeAqh5/oYhA9k=; b=ZQfzMwIu9oQ43DBcjTJ8MA06kh9yr86veIbNiKpbMYVAswDLfmwdHISa3GKLA/3CWy OKZs5gg3j1Zt+f4w7xDs6tttODvCJWyFqq2deJyOWq8e8WiB2cGcGBtnCyMcDqKsjMMA sd1fB+107x1XdSczaFg3o1uZu4Z96GFXvRmCl0bvknJPuEs0FJxmIdKmPkG83g949qu8 8cBfNjQIiueaZ7yEG6sVWAXWH2hpdic60fP/s2GraReWwEnByI9Uiwv37zrbO1ZnvEFl nN7G6SRr/8DQ0iThlmPLld1nNwMP61e9YqOEz5TywWDjBLh3DRh72WyqpSD31J+vG/1s tJ6g== 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=02T14rJi1Rs5Q7HyrNykTziCtVUOiMJeAqh5/oYhA9k=; b=QVBusIUBGQfD7f6hN62WdUlNieYvl9+/npLPZUE5zYCKpfhXpXgpr2e2id5vNNBqmI 06SdBafPhOzdw54yywzWEAz/W3uJl01YVl0XHbttbbKlebtMdN8bP+oRshGiMFsrisId AY3g11h5T8jWL1xql8OHspPjnIJOYvIru+JglPjXKlRm8nQng0gqMgnplXCgfNyt+hOu Q7HXyGvFvKm65hSwLw6i9qVqX82TNbZddeWoaesBo4hTYYmJqmju1aiCTBqRqAp/ZK3x IAyjFEaLU3E6sRvpZTmx2lzepemTlcWavR8seh7WzqSBYTodMidUp1PVAEJiuyMJwLbO U6Bw== X-Gm-Message-State: AOAM533jteV60bNczmOPZcGuAejPkEXhyvVa8DERMJizre/QD0Ixqhn0 zTiNC4obKcPlzSGA8FmD4mYB0kP1+0axsxaGYWo= X-Received: by 2002:a05:6402:c10:b0:40f:33cd:a39 with SMTP id co16-20020a0564020c1000b0040f33cd0a39mr2411862edb.234.1645711010929; Thu, 24 Feb 2022 05:56:50 -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 7sm1360733edw.37.2022.02.24.05.56.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 05:56:50 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v3 09/12] selftests: mptcp: join: clarify local/global vars Date: Thu, 24 Feb 2022 14:56:16 +0100 Message-Id: <20220224135619.2523272-10-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224135619.2523272-1-matthieu.baerts@tessares.net> References: <20220224135619.2523272-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 b07cbf1a80ca..f5e17cd2a7df 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 @@ -610,24 +623,26 @@ pm_nl_check_endpoint() =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 @@ -681,7 +696,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 @@ -704,15 +719,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 @@ -725,13 +741,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 @@ -753,7 +772,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} @@ -764,8 +783,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 @@ -778,18 +798,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]} @@ -816,12 +839,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]} @@ -834,9 +861,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 @@ -886,9 +913,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" @@ -898,14 +925,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) @@ -1516,7 +1545,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 Sun May 5 15:38:32 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1566005jad; Thu, 24 Feb 2022 05:57:03 -0800 (PST) X-Google-Smtp-Source: ABdhPJyj1XZULBsaz45VdW2sgUjeeX3oFCxniJlFh7SfRYwkMzfIIRX7r9wpo+f8hIRFGmJN9cix X-Received: by 2002:a17:906:8244:b0:6ce:7070:b485 with SMTP id f4-20020a170906824400b006ce7070b485mr2365383ejx.347.1645711023640; Thu, 24 Feb 2022 05:57:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645711023; cv=none; d=google.com; s=arc-20160816; b=OFhfrgqDvtZpJuotDe1v3GlUaXs7/RknmtWdFQq9bdiWG12+oDTV7FZueBeejx4lpA 6Nw0w6B2jkbeQSMUuV/O0GkbNlpBHYWH0idp9k5JRzLiWQLB/JXOs5FXBZ6SR0uWKAyn CCsmT24IEKdsbfN0/lsu4dtcvUQkMus75kPccZd57iwFmG60qyLxuPutcx3OeLck07Bc Rdkz6BCbVCUmPbHCcLcj82MJ9X7QVxDauyk14cBs59+iFBijS3D0eW6hVGIy893YewXj E+lwrCjXM0wSwsPx27aDwRTaYw12IjdWPctWAr2OeICkUOwgTiOFjJjGH3tuwnCyG4Ad uJJw== 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=S3Jrr7A6MiE8JCHkBT/ROfwZdMN2UJR8MM2XF951x4s=; b=SyGgvytI8GJjecKGba70wIy1HsE0CqOIFK9VuVZFaJnfZDVO0fKpwlHwipOPLeGgv4 7zL6051jmR8y3KBOdkmMWYpRNnvOdAvqdpKRU0Ncxz4nzSZyxbWy+ykQRBW5ihKJKp// 7pfnO5PJy4ajj+Lrgs4Wp1pEUAh4G+FQ/NT8dzQgkbLkk5QVW34IfDnsSZR/UbbtDFqW pAMYWT70hLeaknPYwjk2klcUq8Kl9meTuZVtXuxPN+9fc0ZRbkehNE0QSByKmJ5aJtWE qnwNWKGwc9cI30HiBTQ3AsacDf7943mun/4LgwnmgQMjrjtW4KjKsXBuBwd1sGQKPqmZ 4btA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=62ZqmZ+0; spf=pass (google.com: domain of mptcp+bounces-3989-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-3989-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 f11si1581643edr.39.2022.02.24.05.57.03 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 05:57:03 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3989-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=62ZqmZ+0; spf=pass (google.com: domain of mptcp+bounces-3989-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-3989-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 855481C0EE1 for ; Thu, 24 Feb 2022 13:57:02 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B38D1747C; Thu, 24 Feb 2022 13:56:56 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) (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 AA5681B62 for ; Thu, 24 Feb 2022 13:56:53 +0000 (UTC) Received: by mail-ed1-f48.google.com with SMTP id z22so2983757edd.1 for ; Thu, 24 Feb 2022 05:56:53 -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=S3Jrr7A6MiE8JCHkBT/ROfwZdMN2UJR8MM2XF951x4s=; b=62ZqmZ+0jj3Wj+F5BvyPo8cS/KRfdv4fhNFDGk4P10nCJVVEx2yBwLm/NkMvQgwIVx 9yEfGgmSVtcxtKNokz7ZaEcT9zgVB7ihWMhLRAsrPYGja40Wx6tWhHiVQYf3UIHkkSv2 E7BTkGjbEPN9vw31FX4fTfCbBYxoc+7fS4yIwGFJDCQxPbYYlzWMaDtbjLnus/PCrtlz lCdLgfjwGhoouqhbyIYuqQIYuAo2h1qfkZ85HgPDNTO5rJa66V9CRBitfZuuXOgXdgAc 8T7NRKH7nx/Rn2/D33hkM5UkGpG9jBcH/NccglyLMIYZbmUaYaBWOuOSnVJ08t5Tz1gD JNyw== 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=S3Jrr7A6MiE8JCHkBT/ROfwZdMN2UJR8MM2XF951x4s=; b=WBcAPAr3ONiFEL4BD/MAsDuLGMrJIp55qROtcjOBndln4TvrGjLxsrPMMGW1eQ+uQz Sw13Fwx3Bpq81i9lAHF87k1cl5io8LpCGi375LKpFrWQp+/e/O05Xy5Y3E7Sn5+6AIZ4 QrYrdtWnPcIkLhfygqElV0+1QKRcGOVxJqBttYVhQZ1YQSTkIUZbLu+7WfHR1/NgWcMP e4M5B0dU8Qj5bHy1HUHkiWJBj7qI0zvaeboMOm9mTnDfnHCC7wgnvIQc/tUknUDKmFM7 Rxv3NOelMZ0vwenrCTS7OVGK9ay2dD2/JndP9qKIbmw0oM9RUnpAPXVXencv9UY6/dz9 qvvA== X-Gm-Message-State: AOAM532VkK1GJkdsm1IWaSy9+LItTWEWsNrLnMshnjNqFUtX2z2z6snr Uw2SzmWVn0frX9C7UFzdnrNxiDAbkUqZ4MXRu4I= X-Received: by 2002:a05:6402:35c8:b0:410:dd43:3c09 with SMTP id z8-20020a05640235c800b00410dd433c09mr2414464edc.256.1645711011767; Thu, 24 Feb 2022 05:56:51 -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 7sm1360733edw.37.2022.02.24.05.56.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 05:56:51 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v3 10/12] selftests: mptcp: join: avoid backquotes Date: Thu, 24 Feb 2022 14:56:17 +0100 Message-Id: <20220224135619.2523272-11-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224135619.2523272-1-matthieu.baerts@tessares.net> References: <20220224135619.2523272-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 f5e17cd2a7df..f61c3804f5e0 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 @@ -1014,7 +1014,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 @@ -1025,7 +1025,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 @@ -1046,7 +1046,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" @@ -1057,7 +1057,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" @@ -1199,7 +1199,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" @@ -1210,8 +1210,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 @@ -1229,7 +1229,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" @@ -1263,9 +1263,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 ] || @@ -1301,10 +1301,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 @@ -1318,7 +1318,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" @@ -1330,7 +1330,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" @@ -1341,8 +1341,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 \ @@ -1354,8 +1354,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 \ @@ -1367,8 +1367,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 \ @@ -1380,8 +1380,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 \ @@ -1393,8 +1393,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 \ @@ -1440,7 +1440,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" @@ -1451,7 +1451,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}') @@ -1493,7 +1493,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" @@ -1504,7 +1504,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" @@ -1523,8 +1523,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 Sun May 5 15:38:32 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1566012jad; Thu, 24 Feb 2022 05:57:04 -0800 (PST) X-Google-Smtp-Source: ABdhPJyXEXKbc4RLXRNSI2Of//wDwHc48fmEXru4+BcA1OGOpVjkQN9S3H9Bl4vcdRdm4gWyTqp6 X-Received: by 2002:a17:902:aa91:b0:14f:96cc:1ab7 with SMTP id d17-20020a170902aa9100b0014f96cc1ab7mr2873311plr.30.1645711024024; Thu, 24 Feb 2022 05:57:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645711024; cv=none; d=google.com; s=arc-20160816; b=uO7MCrd2Foipxgp1/SHdM6jA6SavrSpupGTd9YdiQZMdPjkSGbYwjPRrlJVbAXostG CO2DArMB87W6QHQgvMXvQuXwxgf2Y95lDmMBZ8+BOma5IcB7r+bWHPFGfjB6wNUVNMkV CGyZcbJ43shNEkiTlqggdD1aKpZtGBvsY/4EGziaqq+Bq2jzyur8bIyIH9c7d8Iw1SOf hdD5NBKk31zt4s9ppYNYttRMFos7RuhZl5ZGNtF9jFCy4ZWsvYJ2/SeH6QGgMpXWgA2w 5wsfaAiEfqTjZ8oeVw9MQnagwSI8yEKNuHpEWtvSM2dOzwW1JToywXMon1m7YOVoYcz2 U9Pw== 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=Troist0GsBmag+oUeXIaegiAu+MCDGFZWMEmGOBlLGM=; b=hX61IAU2vwg+pke4P9GjeX/zRqL+eWboUI3vq0re/+HwH1VB8ILn1Kc4zs3KJqepC6 qa9lcpOUkcSgxerDAMK6vOPfAcE7MSh1aWx5gAFowAVzH+FZtu+caV+aaqzt/oIdVbZQ XlINRg+8LccIkFHEpRNUtaxhT+28lgjgE06bTEQupbHsWO03KQ+l/yB9EQsWZXB9YkPR AptKpz5X8i0G2kCERRRDST5m3DAVrd1r0KB8lPzrJ/SghzN5mXdLQIDQymuUZYVGVSUp 3NPPflonD5bm3YdAanggouvYB3mBs7iFswYdSd0Sj8c88VZExThx3wNXzZZHcl97oMvg IeGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b=UItuwdSx; spf=pass (google.com: domain of mptcp+bounces-3990-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-3990-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 z7-20020a17090abd8700b001bc72f11773si4644663pjr.170.2022.02.24.05.57.03 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 05:57:04 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3990-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=UItuwdSx; spf=pass (google.com: domain of mptcp+bounces-3990-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-3990-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 4C27B3E0FEA for ; Thu, 24 Feb 2022 13:57:03 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C98A3747D; Thu, 24 Feb 2022 13:56:56 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (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 956F61B66 for ; Thu, 24 Feb 2022 13:56:54 +0000 (UTC) Received: by mail-ej1-f51.google.com with SMTP id p15so4515830ejc.7 for ; Thu, 24 Feb 2022 05:56:54 -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=Troist0GsBmag+oUeXIaegiAu+MCDGFZWMEmGOBlLGM=; b=UItuwdSxPCkwT8AKL5ramMVROUHdF8sH+h8sV9GqFyEWSUPMROQVanbbhxqGw1X4IY Xu4ohfjwMgrpuKsfUAXHW+gIz1HzaqDKnx3UGS67VeuNhUU6gfULpaXdeY14gIc63QsD 5KYDtipqax6Sp21zexhdiP6CKMzU1QgJn/9YvGqYvzPnxnrxHwiao2vKg3jxsf4syvMY CrDL/i8a/co6FycoiC0lLRHJaw1n923qdw4xb2tQ94Eo2ts3y4ECQKAxhMsFnt7hvAnu Wf4SxBTBUZL3zCqZDkFXolNZhXjbnw0KsVVVXz0dy4BivqLSPUd8YPwnPmbbq7IUIw1G jKuA== 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=Troist0GsBmag+oUeXIaegiAu+MCDGFZWMEmGOBlLGM=; b=FBplqdjcb0XWde7vwBRIs90+wu1UAqlFJHytGGYJYaD3vp0Pgzo9jZ7gnaZnl5CIir lhEv1Wv6/7vAMBt4/4e83SGIvwPICr2sIIIGiIzEw0GfV6xQNxkSUR7hykt3nkXKbgML A+CJbNtLzoudLSHnI7iwUMlY5owqNbgm/pMtxSkPd1gqcZvJHUda4UHvevdLfbavuJOK Pay++io1hZT58sYdvakePA6aaW1OWAafYCJigvqaLVZb6BfS//OvyIN2Bn34/Avmv2vK 4mvV2RAZ2oKuvSTWu+DLK0pvzCXMXKYM/93Z+0H8z9SXbSQ/9ysvRna61vfXxgQj9xI7 GZHg== X-Gm-Message-State: AOAM53194TXiUKz7OnKOY/d1GF64sWOqF0CX4ZCKa9wRutkgRQ/W/GMj oQSoZQXREbMHWFV2GmgC2hgcnQWgbforVdx4dkI= X-Received: by 2002:a17:906:fb8a:b0:6ce:c3e6:2ac4 with SMTP id lr10-20020a170906fb8a00b006cec3e62ac4mr2325873ejb.40.1645711012519; Thu, 24 Feb 2022 05:56:52 -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 7sm1360733edw.37.2022.02.24.05.56.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 05:56:51 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v3 11/12] selftests: mptcp: join: make it shellcheck compliant Date: Thu, 24 Feb 2022 14:56:18 +0100 Message-Id: <20220224135619.2523272-12-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224135619.2523272-1-matthieu.baerts@tessares.net> References: <20220224135619.2523272-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 f61c3804f5e0..20ec31b05990 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 @@ -572,18 +575,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 @@ -713,7 +716,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} \ @@ -723,12 +726,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 @@ -737,21 +741,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 @@ -760,9 +764,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 @@ -780,11 +784,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 @@ -794,20 +797,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 @@ -819,9 +823,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 @@ -837,23 +841,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 @@ -947,14 +952,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 @@ -967,7 +972,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)) @@ -1016,8 +1021,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 @@ -1027,8 +1032,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 @@ -1269,8 +1274,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 " @@ -1309,7 +1314,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 @@ -1454,8 +1459,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 @@ -1526,13 +1532,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 From nobody Sun May 5 15:38:32 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:bd2:0:0:0:0 with SMTP id g18csp1565977jad; Thu, 24 Feb 2022 05:57:01 -0800 (PST) X-Google-Smtp-Source: ABdhPJwO601JdXTvg13hf8al+dhQtMuNhGn+FWvmpoX24MgPtckkk/N1mQmnVcfqu1MzNNM0/cQr X-Received: by 2002:a63:5945:0:b0:375:799a:281d with SMTP id j5-20020a635945000000b00375799a281dmr2379547pgm.605.1645711021184; Thu, 24 Feb 2022 05:57:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645711021; cv=none; d=google.com; s=arc-20160816; b=e8JLD5uShoIC1VKbed6EMYrPsuJtb1+IqfJtJE/sbfsRz4OAjdLCuMaxfCuJtG9BEB ckDV5uMzW+jCQHrbhKYEwwMGC8Z8gA4VNvoQo3itf5U7kYcAmXLQsur+p+03ANRnD1LC f09JFWRuQ2KGcPC0SF4PWBIJtEodKgpLLyg7nWNLJKsZLh8kUyMubbIj4IMy5X4rjXck eWdU7sh7PQkYrw+rbvtZswIu+bwBU5EAklAWHBFFMDCs2HLkoN/zk3MpXK5X7SQoIx4B 6pYzgZZw3g+P+wRt69jR8NO65ZiGCXYymmsN0ardEanWH1ZLNvbLUT2n/x4scCTcciyF DaiQ== 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=Y1zyXHQk1+jEpS99rnso8rg9mp36ZSXVqs/Zs5TUKAY=; b=D91pJyvZdwYCpy3areHIifzKSeNAxhp5FZqWLmf+lxmbvt6SyUezDrQYpzpKA+VGtP xobHQbz4/psG+WvuvPxe6LPj/nuBKMnoIDPs9F8aBk5UwTdnyzRICsgDkweV6LUXclKY J1HJ+oIc9g8QB6WrElXCwZ0fjV1+DC8UegwZY3ttDJEZXmcy9XCmF3ndXA7xCJtUxDAL 4fsY5+09bbLeZW0s5kQ4ubVTOSJZctRLCejeGelMLXmRcQQGyEtP8se528AalX/192z4 JpbO5XIWIJl2VwbXbF2rc8gRP/Qr9F5jGUxzu+BMi6EZ/WmLlnYl/C6OHheZXEvVa/I3 Nhzg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@tessares-net.20210112.gappssmtp.com header.s=20210112 header.b="oHp2pW/N"; spf=pass (google.com: domain of mptcp+bounces-3988-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3988-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 v11si2061653pjh.11.2022.02.24.05.57.01 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Feb 2022 05:57:01 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3988-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="oHp2pW/N"; spf=pass (google.com: domain of mptcp+bounces-3988-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3988-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 E85F53E1011 for ; Thu, 24 Feb 2022 13:57:00 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6C9D1747A; Thu, 24 Feb 2022 13:56:56 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (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 E13721B67 for ; Thu, 24 Feb 2022 13:56:54 +0000 (UTC) Received: by mail-ej1-f52.google.com with SMTP id bg10so4537133ejb.4 for ; Thu, 24 Feb 2022 05:56:54 -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=Y1zyXHQk1+jEpS99rnso8rg9mp36ZSXVqs/Zs5TUKAY=; b=oHp2pW/NMVzsZ9tFQHcGJT8+e4fYTmeuaiZMSuP8a3hWbDweA/eMg3QiWxHqAj6hHM IGBlqPQO9jasDSDK/IpVEIZdTRLsK/enjE9qFvBFPCvWqauBH1yAMjEZwUYur2IeZGSF eMU3cMxS1AScR88YR/Bsn7DwT58W45BWYTinL7zqpMuMDfjxfb17VN1X7gb4rKHv1qSQ hoYU2GIbu+ZIbN8z5SYr9BA0zFsCN9tJ/sCcsGOh7Ac1O0ZzTbx4dLM+sZTmfOoAK+RG FYn1/IBaSl/C5hFH15SMUG5CBqqK/8GBLIOQjTaU0uhsva5l2ixeH7D74t5pTvJSa0n5 2ZVg== 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=Y1zyXHQk1+jEpS99rnso8rg9mp36ZSXVqs/Zs5TUKAY=; b=qCiaXqvu2BnqLE6kp9CGVQSSnsKuNt2rga/JQ40muae3xiJZj2r6R1fwx1rlZGKHA/ Ml0dFEe56wKTx0yA0CP4rPdtnvCcMGi1cocGEPJXOLaO86ol2WFSEXCEELR+M6egohkN R6UFOYnBTEk7/gRDmC3eymDy8DjdETFwq2E9rEhgA3Wuq8U0Ba/gtpdwq5/W2iuzlAJ3 CbabTtuQECTy1GON0zX2vm+PrcPlPQHpLOnJ2gPmnF8MEWeOamfmaG9uocR7zv/7makH Sykp6ivw4w5Isk/5y7gaLAMY76icfJm4dL+LYg35r6IRd8wKIYd0j3ymdoWFQ4BN0vnu CA4g== X-Gm-Message-State: AOAM532t+sWJRE9cNP366zEpeWY4oVoB3EcHKagxSHkNUsm7Hq/zB+YF onxm0ef8vFAt9oxjTH5TH62CeBqJpKWpPUGwGjM= X-Received: by 2002:a17:906:e10f:b0:6d1:c535:439b with SMTP id gj15-20020a170906e10f00b006d1c535439bmr2362265ejb.637.1645711013067; Thu, 24 Feb 2022 05:56:53 -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 7sm1360733edw.37.2022.02.24.05.56.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 05:56:52 -0800 (PST) From: Matthieu Baerts To: mptcp@lists.linux.dev Cc: Matthieu Baerts Subject: [PATCH mptcp-next v3 12/12] selftests: mptcp: join: helper to filter TCP Date: Thu, 24 Feb 2022 14:56:19 +0100 Message-Id: <20220224135619.2523272-13-matthieu.baerts@tessares.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220224135619.2523272-1-matthieu.baerts@tessares.net> References: <20220224135619.2523272-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 --- 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 20ec31b05990..977e5eb28ba4 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -624,6 +624,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() { local listener_ns=3D"$1" @@ -1653,7 +1662,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 @@ -1664,7 +1673,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 @@ -1676,7 +1685,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