From nobody Wed Apr 24 23:52:03 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:956b:0:0:0:0:0 with SMTP id y98csp2173394jah; Fri, 29 Oct 2021 16:56:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyOgIWqpMZmoQ446lGl8nPusKNSFnDVOgVvpYP7zGLabxqLO9d0Ci/qp8jp4C7Oc2apr+/a X-Received: by 2002:a17:90a:312:: with SMTP id 18mr23261688pje.178.1635551808514; Fri, 29 Oct 2021 16:56:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635551808; cv=none; d=google.com; s=arc-20160816; b=XIAf+2d87FNS3QNM00+b7+vuXB3ourCoqnqce8nHwaB0xc3OgaGLi8MD7hJKkKWVm2 6JzYjlnSD57PrXU1RkbjJylyAgtzN+V4TtgZJaZuoHGYNrCPRAVI8RNSDcWsFQVgkHML bCZYpL1yTDuZFUQ0k2q9tT76kvTKtDhZ1kRRoc8mo3XtNwkvrCJ9wPX2tPL+pCJkhP9L E7JGFu6YnblbwAhImat6mETY6vKAdrdUm26YqPJ6cChDkdDHEmtNL9m80SddhDrQIO3l 4+C9Ap8G9YWd22ojWDWjHo2YqQ+upYu5eIbxKrSEs4k97VfHQSIEHjrnfqwvlbCihoQB ngUw== 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; bh=qJjexTw/602o/d2MGT23Z29rmH3lealN/EvvT8IEghs=; b=W0hS+3otMgqFZf+VxSxQX/dJlb73MqlrN+xoJNa73jvpTWGjDCHHjiydvUugMV1XgT 4q5vrsydgkd2IY37TOCXL8vjgbMMUCgDZxKmFVJWWc5DcV+0iYv5ladyUg+zfNCNB31+ faTLqRjHO+sC/J4xZn4DXARTQdwpBGPf94sxufni4XNmMpostE2CUqVdzh60OHf3Qiqt VxzdaL/qSwvna5ZNO7XFt0fxWfOVUWTKT1sa+k51Cko9n5srCL497bfmYirWGeBPpT3y HsBPeSE/8iwgT1hyeBW+zo/MLAf4k3sZHN+8x2ZpSz4Jn1Bd9zPW5JCuNIEow6B+bH4i tkmw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2340-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2340-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id me4si16233281pjb.69.2021.10.29.16.56.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 29 Oct 2021 16:56:48 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2340-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; spf=pass (google.com: domain of mptcp+bounces-2340-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2340-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id 49A863E1026 for ; Fri, 29 Oct 2021 23:56:48 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 30B422C9A; Fri, 29 Oct 2021 23:56:46 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 04CBD29CA for ; Fri, 29 Oct 2021 23:56:44 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10152"; a="210826413" X-IronPort-AV: E=Sophos;i="5.87,194,1631602800"; d="scan'208";a="210826413" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Oct 2021 16:56:44 -0700 X-IronPort-AV: E=Sophos;i="5.87,194,1631602800"; d="scan'208";a="487759731" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.3.7]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Oct 2021 16:56:44 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Geliang Tang , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, pabeni@redhat.com, mptcp@lists.linux.dev Subject: [PATCH net-next 1/2] selftests: mptcp: fix proto type in link_failure tests Date: Fri, 29 Oct 2021 16:55:58 -0700 Message-Id: <20211029235559.246858-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211029235559.246858-1-mathew.j.martineau@linux.intel.com> References: <20211029235559.246858-1-mathew.j.martineau@linux.intel.com> 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" From: Geliang Tang In listener_ns, we should pass srv_proto argument to mptcp_connect command, not cl_proto. Fixes: 7d1e6f1639044 ("selftests: mptcp: add testcase for active-back") Signed-off-by: Geliang Tang Signed-off-by: Matthieu Baerts --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 293d349e21fe..7ef639a9d4a6 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -297,7 +297,7 @@ do_transfer() if [ "$test_link_fail" -eq 2 ];then timeout ${timeout_test} \ ip netns exec ${listener_ns} \ - $mptcp_connect -t ${timeout_poll} -l -p $port -s ${cl_proto} \ + $mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \ ${local_addr} < "$sinfail" > "$sout" & else timeout ${timeout_test} \ --=20 2.33.1 From nobody Wed Apr 24 23:52:03 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:956b:0:0:0:0:0 with SMTP id y98csp2173413jah; Fri, 29 Oct 2021 16:56:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyEip4n9p/icT1yBS6+XnD0qtXjZRIn/RwvEGmM4qgxWt4oBQ2UILa/mntSNPhbhH2POa4Z X-Received: by 2002:a05:6830:1df4:: with SMTP id b20mr11019527otj.19.1635551810415; Fri, 29 Oct 2021 16:56:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635551810; cv=none; d=google.com; s=arc-20160816; b=H+Zmbm9XbXk699jveEGNxa656/u+XQ9yHfzfHAGN5n6jPR7Nys6UvsotK+KjSSw1Je b4eiYmuhd86sIxpyR/rZ5XNwgpKRSxVCSBoD24owbednJ5xJ9bgu1onV2ecNc23fNk9I JxX7PX2akR9VwBuAs/6NTrNXFRcX2/wrBedvP/LBcxAc5pDdDyiPRTyrEHvMGm9/ikV3 UW6RO/fwsCRSTYhZuqeNgKf3SeMgHH6TWwk6oTLwHF50VgkRw7IC77whuH13ydkBSjmw mjqIOCCBvEdafDJjK8v3PdLxsMIRINuLEn4E17YTJV5+ZIhmzqZKHP+TwWYEqYkJj9px 4jfQ== 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; bh=2gFknErqS0WUtTnkNalFyxK8U4H5Vtj1+NKNoH9FKrI=; b=prUGYxm4cbIfljKauw25+ohZHrHXDLvS38qL096ep0UUY/+LqTXybVgpD2HjgPb5Od peNs9Z+DGW8tBidY6y0tmw6d4VqAIqtkocMpZM0KiAuvwipxKrIe3qy3V5X4lXBaHwNc 6bJtJjbbRrZO4cXkEiK9LozoFCvJbd5G9BuN7iBVqC6MEXVM5+hDRHc/XwV8KB16qIoS zzO7qZjOVOJYlAjDF18R/dXJfJazT/EYYYgL3hfayXxpcllPDQBCKATCu93x9BFM0yAi cXca5wtMrJRsz8t0ow0pR2b1XAvHL1RMiRMxJdTNGiKAjhi1Tdk7+cbbOSEHQbdWxtQL fIRQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2341-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2341-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id z29si8637837ood.61.2021.10.29.16.56.50 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 29 Oct 2021 16:56:50 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-2341-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; spf=pass (google.com: domain of mptcp+bounces-2341-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2341-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id AC7A31C0F2E for ; Fri, 29 Oct 2021 23:56:49 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5CA042C89; Fri, 29 Oct 2021 23:56:47 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E1CC62C81 for ; Fri, 29 Oct 2021 23:56:45 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10152"; a="210826414" X-IronPort-AV: E=Sophos;i="5.87,194,1631602800"; d="scan'208";a="210826414" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Oct 2021 16:56:44 -0700 X-IronPort-AV: E=Sophos;i="5.87,194,1631602800"; d="scan'208";a="487759732" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.3.7]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Oct 2021 16:56:44 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 2/2] selftests: mptcp: more stable simult_flows tests Date: Fri, 29 Oct 2021 16:55:59 -0700 Message-Id: <20211029235559.246858-3-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211029235559.246858-1-mathew.j.martineau@linux.intel.com> References: <20211029235559.246858-1-mathew.j.martineau@linux.intel.com> 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" From: Paolo Abeni Currently the simult_flows.sh self-tests are not very stable, especially when running on slow VMs. The tests measure runtime for transfers on multiple subflows and check that the time is near the theoretical maximum. The current test infra introduces a bit of jitter in test runtime, due to multiple explicit delays. Additionally the runtime is measured by the shell script wrapper. On a slow VM, the script overhead is measurable and subject to relevant jitter. One solution to make the test more stable would be adding more slack to the expected time; that could possibly hide real regressions. Instead move the measurement inside the command doing the transfer, and drop most unneeded sleeps. Reviewed-by: Matthieu Baerts Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- .../selftests/net/mptcp/mptcp_connect.c | 72 +++++++++++++++---- .../selftests/net/mptcp/simult_flows.sh | 36 ++++------ 2 files changed, 72 insertions(+), 36 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.c b/tools/test= ing/selftests/net/mptcp/mptcp_connect.c index 89c4753c2760..95e81d557b08 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.c +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.c @@ -14,6 +14,7 @@ #include #include #include +#include =20 #include #include @@ -64,6 +65,7 @@ static int cfg_sndbuf; static int cfg_rcvbuf; static bool cfg_join; static bool cfg_remove; +static unsigned int cfg_time; static unsigned int cfg_do_w; static int cfg_wait; static uint32_t cfg_mark; @@ -78,9 +80,10 @@ static struct cfg_cmsg_types cfg_cmsg_types; static void die_usage(void) { fprintf(stderr, "Usage: mptcp_connect [-6] [-u] [-s MPTCP|TCP] [-p port] = [-m mode]" - "[-l] [-w sec] connect_address\n"); + "[-l] [-w sec] [-t num] [-T num] connect_address\n"); fprintf(stderr, "\t-6 use ipv6\n"); fprintf(stderr, "\t-t num -- set poll timeout to num\n"); + fprintf(stderr, "\t-T num -- set expected runtime to num ms\n"); fprintf(stderr, "\t-S num -- set SO_SNDBUF to num\n"); fprintf(stderr, "\t-R num -- set SO_RCVBUF to num\n"); fprintf(stderr, "\t-p num -- use port num\n"); @@ -448,7 +451,7 @@ static void set_nonblock(int fd) fcntl(fd, F_SETFL, flags | O_NONBLOCK); } =20 -static int copyfd_io_poll(int infd, int peerfd, int outfd) +static int copyfd_io_poll(int infd, int peerfd, int outfd, bool *in_closed= _after_out) { struct pollfd fds =3D { .fd =3D peerfd, @@ -487,9 +490,11 @@ static int copyfd_io_poll(int infd, int peerfd, int ou= tfd) */ fds.events &=3D ~POLLIN; =20 - if ((fds.events & POLLOUT) =3D=3D 0) + if ((fds.events & POLLOUT) =3D=3D 0) { + *in_closed_after_out =3D true; /* and nothing more to send */ break; + } =20 /* Else, still have data to transmit */ } else if (len < 0) { @@ -547,7 +552,7 @@ static int copyfd_io_poll(int infd, int peerfd, int out= fd) } =20 /* leave some time for late join/announce */ - if (cfg_join || cfg_remove) + if (cfg_remove) usleep(cfg_wait); =20 close(peerfd); @@ -646,7 +651,7 @@ static int do_sendfile(int infd, int outfd, unsigned in= t count) } =20 static int copyfd_io_mmap(int infd, int peerfd, int outfd, - unsigned int size) + unsigned int size, bool *in_closed_after_out) { int err; =20 @@ -664,13 +669,14 @@ static int copyfd_io_mmap(int infd, int peerfd, int o= utfd, shutdown(peerfd, SHUT_WR); =20 err =3D do_recvfile(peerfd, outfd); + *in_closed_after_out =3D true; } =20 return err; } =20 static int copyfd_io_sendfile(int infd, int peerfd, int outfd, - unsigned int size) + unsigned int size, bool *in_closed_after_out) { int err; =20 @@ -685,6 +691,7 @@ static int copyfd_io_sendfile(int infd, int peerfd, int= outfd, if (err) return err; err =3D do_recvfile(peerfd, outfd); + *in_closed_after_out =3D true; } =20 return err; @@ -692,27 +699,62 @@ static int copyfd_io_sendfile(int infd, int peerfd, i= nt outfd, =20 static int copyfd_io(int infd, int peerfd, int outfd) { + bool in_closed_after_out =3D false; + struct timespec start, end; int file_size; + int ret; + + if (cfg_time && (clock_gettime(CLOCK_MONOTONIC, &start) < 0)) + xerror("can not fetch start time %d", errno); =20 switch (cfg_mode) { case CFG_MODE_POLL: - return copyfd_io_poll(infd, peerfd, outfd); + ret =3D copyfd_io_poll(infd, peerfd, outfd, &in_closed_after_out); + break; + case CFG_MODE_MMAP: file_size =3D get_infd_size(infd); if (file_size < 0) return file_size; - return copyfd_io_mmap(infd, peerfd, outfd, file_size); + ret =3D copyfd_io_mmap(infd, peerfd, outfd, file_size, &in_closed_after_= out); + break; + case CFG_MODE_SENDFILE: file_size =3D get_infd_size(infd); if (file_size < 0) return file_size; - return copyfd_io_sendfile(infd, peerfd, outfd, file_size); + ret =3D copyfd_io_sendfile(infd, peerfd, outfd, file_size, &in_closed_af= ter_out); + break; + + default: + fprintf(stderr, "Invalid mode %d\n", cfg_mode); + + die_usage(); + return 1; } =20 - fprintf(stderr, "Invalid mode %d\n", cfg_mode); + if (ret) + return ret; =20 - die_usage(); - return 1; + if (cfg_time) { + unsigned int delta_ms; + + if (clock_gettime(CLOCK_MONOTONIC, &end) < 0) + xerror("can not fetch end time %d", errno); + delta_ms =3D (end.tv_sec - start.tv_sec) * 1000 + (end.tv_nsec - start.t= v_nsec) / 1000000; + if (delta_ms > cfg_time) { + xerror("transfer slower than expected! runtime %d ms, expected %d ms", + delta_ms, cfg_time); + } + + /* show the runtime only if this end shutdown(wr) before receiving the E= OF, + * (that is, if this end got the longer runtime) + */ + if (in_closed_after_out) + fprintf(stderr, "%d", delta_ms); + } + + return 0; } =20 static void check_sockaddr(int pf, struct sockaddr_storage *ss, @@ -1005,12 +1047,11 @@ static void parse_opts(int argc, char **argv) { int c; =20 - while ((c =3D getopt(argc, argv, "6jr:lp:s:hut:m:S:R:w:M:P:c:")) !=3D -1)= { + while ((c =3D getopt(argc, argv, "6jr:lp:s:hut:T:m:S:R:w:M:P:c:")) !=3D -= 1) { switch (c) { case 'j': cfg_join =3D true; cfg_mode =3D CFG_MODE_POLL; - cfg_wait =3D 400000; break; case 'r': cfg_remove =3D true; @@ -1043,6 +1084,9 @@ static void parse_opts(int argc, char **argv) if (poll_timeout <=3D 0) poll_timeout =3D -1; break; + case 'T': + cfg_time =3D atoi(optarg); + break; case 'm': cfg_mode =3D parse_mode(optarg); break; diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/test= ing/selftests/net/mptcp/simult_flows.sh index 910d8126af8f..f441ff7904fc 100755 --- a/tools/testing/selftests/net/mptcp/simult_flows.sh +++ b/tools/testing/selftests/net/mptcp/simult_flows.sh @@ -51,7 +51,7 @@ setup() sout=3D$(mktemp) cout=3D$(mktemp) capout=3D$(mktemp) - size=3D$((2048 * 4096)) + size=3D$((2 * 2048 * 4096)) dd if=3D/dev/zero of=3D$small bs=3D4096 count=3D20 >/dev/null 2>&1 dd if=3D/dev/zero of=3D$large bs=3D4096 count=3D$((size / 4096)) >/dev/nu= ll 2>&1 =20 @@ -161,17 +161,15 @@ do_transfer() =20 timeout ${timeout_test} \ ip netns exec ${ns3} \ - ./mptcp_connect -jt ${timeout_poll} -l -p $port \ + ./mptcp_connect -jt ${timeout_poll} -l -p $port -T $time \ 0.0.0.0 < "$sin" > "$sout" & local spid=3D$! =20 wait_local_port_listen "${ns3}" "${port}" =20 - local start - start=3D$(date +%s%3N) timeout ${timeout_test} \ ip netns exec ${ns1} \ - ./mptcp_connect -jt ${timeout_poll} -p $port \ + ./mptcp_connect -jt ${timeout_poll} -p $port -T $time \ 10.0.3.3 < "$cin" > "$cout" & local cpid=3D$! =20 @@ -180,27 +178,20 @@ do_transfer() wait $spid local rets=3D$? =20 - local stop - stop=3D$(date +%s%3N) - if $capture; then sleep 1 kill ${cappid_listener} kill ${cappid_connector} fi =20 - local duration - duration=3D$((stop-start)) - cmp $sin $cout > /dev/null 2>&1 local cmps=3D$? cmp $cin $sout > /dev/null 2>&1 local cmpc=3D$? =20 - printf "%16s" "$duration max $max_time " + printf "%-16s" " max $max_time " if [ $retc -eq 0 ] && [ $rets -eq 0 ] && \ - [ $cmpc -eq 0 ] && [ $cmps -eq 0 ] && \ - [ $duration -lt $max_time ]; then + [ $cmpc -eq 0 ] && [ $cmps -eq 0 ]; then echo "[ OK ]" cat "$capout" return 0 @@ -244,23 +235,24 @@ run_test() tc -n $ns2 qdisc add dev ns2eth1 root netem rate ${rate1}mbit $delay1 tc -n $ns2 qdisc add dev ns2eth2 root netem rate ${rate2}mbit $delay2 =20 - # time is measure in ms - local time=3D$((size * 8 * 1000 / (( $rate1 + $rate2) * 1024 *1024) )) + # time is measured in ms, account for transfer size, affegated link speed + # and header overhead (10%) + local time=3D$((size * 8 * 1000 * 10 / (( $rate1 + $rate2) * 1024 *1024 *= 9) )) =20 # mptcp_connect will do some sleeps to allow the mp_join handshake - # completion - time=3D$((time + 1350)) + # completion (see mptcp_connect): 200ms on each side, add some slack + time=3D$((time + 450)) =20 - printf "%-50s" "$msg" - do_transfer $small $large $((time * 11 / 10)) + printf "%-60s" "$msg" + do_transfer $small $large $time lret=3D$? if [ $lret -ne 0 ]; then ret=3D$lret [ $bail -eq 0 ] || exit $ret fi =20 - printf "%-50s" "$msg - reverse direction" - do_transfer $large $small $((time * 11 / 10)) + printf "%-60s" "$msg - reverse direction" + do_transfer $large $small $time lret=3D$? if [ $lret -ne 0 ]; then ret=3D$lret --=20 2.33.1