Reviewed-by: Patrick Robb Tested-by: Patrick Robb On Fri, Nov 8, 2024 at 12:01 PM Luca Vizzarro wrote: > 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 > Signed-off-by: Thomas Wilks > Reviewed-by: Paul Szczepanek > Reviewed-by: Dean Marx > Reviewed-by: Patrick Robb > Tested-by: Patrick Robb > --- > 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 > >