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. Signed-off-by: Luca Vizzarro <luca.vizza...@arm.com> Signed-off-by: Thomas Wilks <thomas.wi...@arm.com> Reviewed-by: Paul Szczepanek <paul.szczepa...@arm.com> Reviewed-by: Dean Marx <dm...@iol.unh.edu> Reviewed-by: Patrick Robb <pr...@iol.unh.edu> Tested-by: Patrick Robb <pr...@iol.unh.edu> --- dts/tests/TestSuite_l2fwd.py | 63 ++++++++++++++++++++++++++++++++++++ 1 file changed, 63 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..0f6ff18907 --- /dev/null +++ b/dts/tests/TestSuite_l2fwd.py @@ -0,0 +1,63 @@ +# 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 across multiple different queue sizes. +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.capability import requires +from framework.testbed_model.cpu import LogicalCoreCount +from framework.testbed_model.topology import TopologyType +from framework.utils import generate_random_packets + + +@requires(topology_type=TopologyType.two_links) +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: + Generate the random packets that will be sent. + """ + self.packets = generate_random_packets(self.NUMBER_OF_PACKETS_TO_SEND, self.PAYLOAD_SIZE) + + @func_test + def l2fwd_integrity(self) -> None: + """Test the L2 forwarding integrity. + + Test: + Configure a testpmd shell with a different numbers of queues (1, 2, 4 and 8) 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_packets(self.packets) + self.match_all_packets(expected_packets, received_packets) + + shell.stop() -- 2.43.0