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 1ADD745C16; Wed, 30 Oct 2024 16:03:46 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B20E5433DA; Wed, 30 Oct 2024 16:03:45 +0100 (CET) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mails.dpdk.org (Postfix) with ESMTP id 89F39402EE for ; Wed, 30 Oct 2024 16:03:44 +0100 (CET) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 80689113E; Wed, 30 Oct 2024 08:04:13 -0700 (PDT) Received: from e132991.cambridge.arm.com (unknown [10.1.195.55]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 037483F66E; Wed, 30 Oct 2024 08:03:42 -0700 (PDT) From: Thomas Wilks To: dev@dpdk.org Cc: Thomas Wilks , Luca Vizzarro , Paul Szczepanek Subject: [PATCH v2] dts: add l2fwd test suite Date: Wed, 30 Oct 2024 15:03:28 +0000 Message-ID: <20241030150328.340907-1-thomas.wilks@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240806125140.2582859-1-luca.vizzarro@arm.com> References: <20240806125140.2582859-1-luca.vizzarro@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 Add a basic L2 forwarding test suite which tests the correct functionality of the forwarding facility built-in in the DPDK. The tests are performed with different queues numbers per port. Bugzilla ID: 1481 Signed-off-by: Luca Vizzarro Signed-off-by: Thomas Wilks Reviewed-by: Paul Szczepanek --- dts/tests/TestSuite_l2fwd.py | 62 ++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 dts/tests/TestSuite_l2fwd.py diff --git a/dts/tests/TestSuite_l2fwd.py b/dts/tests/TestSuite_l2fwd.py new file mode 100644 index 0000000000..07467946e7 --- /dev/null +++ b/dts/tests/TestSuite_l2fwd.py @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2024 Arm Limited + +"""Basic L2 forwarding test suite. + +This testing suites runs basic L2 forwarding on testpmd with different queue sizes per port. +The forwarding test is performed with several packets being sent at once. +""" + +from framework.params.testpmd import EthPeer, SimpleForwardingModes +from framework.remote_session.testpmd_shell import TestPmdShell +from framework.test_suite import TestSuite, func_test +from framework.testbed_model.cpu import LogicalCoreCount +from framework.utils import generate_random_packets + + +class TestL2fwd(TestSuite): + """L2 forwarding test suite.""" + + #: The total number of packets to generate and send for forwarding. + NUMBER_OF_PACKETS_TO_SEND = 50 + #: The payload size to use for the generated packets in bytes. + PAYLOAD_SIZE = 100 + + def set_up_suite(self) -> None: + """Set up the test suite. + + Setup: + Verify that we have at least 2 ports in the current test. Generate the random packets + that will be sent and spawn a reusable testpmd shell. + """ + self.verify(len(self.sut_node.ports) >= 2, "At least 2 ports are required for this test.") + self.packets = generate_random_packets(self.NUMBER_OF_PACKETS_TO_SEND, self.PAYLOAD_SIZE) + + @func_test + def test_l2fwd_integrity(self) -> None: + """Test the L2 forwarding integrity. + + Test: + Configure a testpmd shell with a different numbers of queues per run. Start up L2 + forwarding, send random packets from the TG and verify they were all received back. + """ + queues = [1, 2, 4, 8] + + with TestPmdShell( + self.sut_node, + lcore_filter_specifier=LogicalCoreCount(cores_per_socket=4), + forward_mode=SimpleForwardingModes.mac, + eth_peer=[EthPeer(1, self.tg_node.ports[1].mac_address)], + disable_device_start=True, + ) as shell: + for queues_num in queues: + self._logger.info(f"Testing L2 forwarding with {queues_num} queue(s)") + shell.set_ports_queues(queues_num) + shell.start() + + received_packets = self.send_packets_and_capture(self.packets) + + expected_packets = [self.get_expected_packet(packet) for packet in self.packets] + self.match_all_packets(expected_packets, received_packets) + + shell.stop() -- 2.43.0