From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A5D5A43348; Thu, 16 Nov 2023 20:20:59 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7539D4027D; Thu, 16 Nov 2023 20:20:59 +0100 (CET) Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) by mails.dpdk.org (Postfix) with ESMTP id 813FB40150 for ; Thu, 16 Nov 2023 20:20:58 +0100 (CET) Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-9e28724ac88so165900366b.2 for ; Thu, 16 Nov 2023 11:20:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pantheon.tech; s=google; t=1700162458; x=1700767258; darn=dpdk.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=nXufuQtvOMYui4QOMR+Kr50d8mqlN8iiBPNm9PoDPvg=; b=JmJH2Xbd2ztFIvqQ+ou61n9MNqmzoVPkbstZYxi4vWY7Mxyshizc2D06/4pkU2lvEb ifJCfuJ2q6KBDNPfx0t7U6ErBqUB0/18JLqi/NNnZ5pMW7SBr998MCA4mmWW18Ypk9u6 nd68clXf/ZRwazMXlytZST2UNHN9A4TuPMvhKIR6gdVXWdPnfs9TaYlfWty90ARKBz6E ry4PVKSq2X6EQjprzkBOeiG8PPZd2ofnqfp9Bo+iy/omRdE24Eh1FiOmVRXZHltiM89p a10dziMQeGgpUZkU17lSVQr9T/sB0U+RvSErhpks+iJBzJeyQoEiSWAbDxC2d4xbNBcV 65Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700162458; x=1700767258; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nXufuQtvOMYui4QOMR+Kr50d8mqlN8iiBPNm9PoDPvg=; b=c5xnt4NT2pBQ8HFbuHgmQJPrw+LI/MgI5s6M0HB5WitwhZJv3O9/E4ylYsRghOqHdV DfrW2knVSaqHezZoItvlHKU8ISJ5UNkYl4r9ctQsz+rQddj/B2x22/qpbhuqZh+Jub9B zAnbWYilNprb4rLV5tUX4qFP6E4WT1J0mEfK2tlOMr7+v9ie1XFT3XkDK0v411NMLKsl vK4utD76RAdGHc9RsYlCtm9fE4aIM42yhQEy4NOIGv5IPz9oTFeEcp2ktFB5sawS03li I7joCQcHExOWjBqnP9ghpaFJtmEPTS6ermdLUE2YrF8PLGjzNPrrUzLcBxQtmpWr5a7k Z9KA== X-Gm-Message-State: AOJu0Yw7E4A0LSn6/zHu2PViDeVVXxXIzlBc60a6sgAdE6cyu5/sFUZc WySapYqenzUIxQdqQUTM1EpCGPnOURcF0AsKja3Qnw== X-Google-Smtp-Source: AGHT+IFShCecMTv7ITYeLRRI1oern9Jg1KxH2u8KAvW7LzFtE8c3NvhrCW++Sy1WKqSkhE5MSHmo/T/7ntgrnBVDITM= X-Received: by 2002:a17:906:3a0e:b0:9b9:4509:d575 with SMTP id z14-20020a1709063a0e00b009b94509d575mr13115689eje.2.1700162458159; Thu, 16 Nov 2023 11:20:58 -0800 (PST) MIME-Version: 1.0 References: <20231113202833.12900-1-jspewock@iol.unh.edu> <20231113202833.12900-2-jspewock@iol.unh.edu> In-Reply-To: <20231113202833.12900-2-jspewock@iol.unh.edu> From: =?UTF-8?Q?Juraj_Linke=C5=A1?= Date: Thu, 16 Nov 2023 20:20:47 +0100 Message-ID: Subject: Re: [PATCH v3 1/7] dts: Add scatter test suite To: jspewock@iol.unh.edu Cc: Honnappa.Nagarahalli@arm.com, thomas@monjalon.net, wathsala.vithanage@arm.com, probb@iol.unh.edu, paul.szczepanek@arm.com, yoan.picchi@foss.arm.com, ferruh.yigit@amd.com, andrew.rybchenko@oktetlabs.ru, dev@dpdk.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On Mon, Nov 13, 2023 at 9:28=E2=80=AFPM wrote: > > From: Jeremy Spewock > > This test suite provides testing the support of scattered packets by > Poll Mode Drivers using testpmd. It incorporates 5 different test cases > which test the sending and receiving of packets with lengths that are > less than the mbuf data buffer size, the same as the mbuf data buffer > size, and the mbuf data buffer size plus 1, 4, and 5. The goal of this > test suite is to align with the existing dts test plan for scattered > packets within DTS. > > Signed-off-by: Jeremy Spewock > --- > dts/tests/TestSuite_scatter.py | 86 ++++++++++++++++++++++++++++++++++ > 1 file changed, 86 insertions(+) > create mode 100644 dts/tests/TestSuite_scatter.py > > diff --git a/dts/tests/TestSuite_scatter.py b/dts/tests/TestSuite_scatter= .py > new file mode 100644 > index 0000000000..217f465e92 > --- /dev/null > +++ b/dts/tests/TestSuite_scatter.py > @@ -0,0 +1,86 @@ > +# SPDX-License-Identifier: BSD-3-Clause > +# Copyright(c) 2023 University of New Hampshire > + > +import struct > + > +from scapy.layers.inet import IP # type: ignore[import] > +from scapy.layers.l2 import Ether # type: ignore[import] > +from scapy.packet import Raw # type: ignore[import] > +from scapy.utils import hexstr # type: ignore[import] > + > +from framework.remote_session import TestPmdShell > +from framework.test_suite import TestSuite > + > + > +class Scatter(TestSuite): > + mbsize: int > + > + def set_up_suite(self) -> None: > + self.verify( > + len(self._port_links) > 1, > + "Must have at least two port links to run scatter", > + ) > + if self._sut_port_egress.os_driver in ["i40e", "ixgbe", "ice"]: > + self.mbsize =3D 2048 > + else: > + self.mbsize =3D 1024 > + How exactly should mbsize determined? Is os_driver the sole determinant? Or is the mbsize also somehow specific to the suite? If it's just about the driver, then let's move the mbsize calculation to Port and use that. > + self.tg_node.main_session.configure_port_mtu(9000, self._tg_port= _egress) > + self.tg_node.main_session.configure_port_mtu(9000, self._tg_port= _ingress) > + > + def scatter_pktgen_send_packet(self, pktsize: int) -> str: > + """Generate and send packet to the SUT. > + > + Functional test for scatter packets. > + > + Args: > + pktsize: Size of the packet to generate and send. > + """ > + packet =3D Ether() / IP() / Raw() > + packet.getlayer(2).load =3D "" > + payload_len =3D pktsize - len(packet) - 4 > + payload =3D ["58"] * payload_len > + # pack the payload > + for X_in_hex in payload: > + packet.load +=3D struct.pack( > + "=3DB", int("%s%s" % (X_in_hex[0], X_in_hex[1]), 16) > + ) > + load =3D hexstr(packet.getlayer(2), onlyhex=3D1) > + received_packets =3D self.send_packet_and_capture(packet) > + self.verify(len(received_packets) > 0, "Did not receive any pack= ets.") > + load =3D hexstr(received_packets[0].getlayer(2), onlyhex=3D1) > + > + return load I guess this is where the discussion about packet verification originates. Once we conclude that discussion, let's revisit this. > + > + def test_scatter_mbuf_2048(self) -> None: This has 2048 in name, but the mbsize doesn't have to be 2048. Do we have to have mbuf_2048 in the name? > + """ > + Test: > + Start testpmd and run functional test with preset mbsize. > + """ The one-line description is missing. > + testpmd =3D self.sut_node.create_interactive_shell( > + TestPmdShell, > + app_parameters=3D( > + "--mbcache=3D200 " > + f"--mbuf-size=3D{self.mbsize} " > + "--max-pkt-len=3D9000 " > + "--port-topology=3Dpaired " > + "--tx-offloads=3D0x00008000" > + ), > + privileged=3DTrue, > + ) > + testpmd.send_command("set fwd mac") > + testpmd.send_command("start") > + link_is_up =3D testpmd.wait_link_status_up(0) and testpmd.wait_l= ink_status_up(1) Other test suites may use this or something similar to it. I'd move the logic to the class so that we don't have to call send_command(). I'd also look into making the start/stop cycle a context manager (so that's usable with the "with" statement), if at all possible. > + self.verify(link_is_up, "Links never came up in TestPMD.") > + > + for offset in [-1, 0, 1, 4, 5]: > + recv_payload =3D self.scatter_pktgen_send_packet(self.mbsize= + offset) > + self.verify( > + ("58 " * 8).strip() in recv_payload, > + "Received packet had incorrect payload", > + ) > + testpmd.send_command("stop") > + > + def tear_down_suite(self) -> None: > + self.tg_node.main_session.configure_port_mtu(1500, self._tg_port= _egress) > + self.tg_node.main_session.configure_port_mtu(1500, self._tg_port= _ingress) We're assuming the original mtu was 1500. That's a fine assumption, but let's keep it in mind just in case. > -- > 2.42.0 >