Just a few small comments, otherwise:

Reviewed-by: Jeremy Spewock <jspew...@iol.unh.edu>

On Fri, Jul 26, 2024 at 12:46 PM Nicholas Pratte <npra...@iol.unh.edu> wrote:
>
> The mac address filter test suite, whose test cases are based on old
> DTS's test cases, has been refactored to interface with the new DTS
> framework.
>
> In porting over this test suite into the new framework, some
> adjustments were made, namely in the EAL and TestPMD parameter provided
> before executing the application. While the original test plan was
> referenced, by and large, only for the individual test cases, I'll leave
> the parameters the original test plan was asking for below for the sake
> of discussion:
>
> --burst=1 --rxpt=0 --rxht=0 --rxwt=0 --txpt=36 --txht=0 --txwt=0
> --txfreet=32 --rxfreet=64 --mbcache=250 --portmask=0x3
>
> depends-on: patch-142691 ("dts: add send_packets to test suites and
> rework packet addressing")
> depends-on: patch-142696 ("dts: add VLAN methods to testpmd shell")
>
> Bugzilla ID: 1454
> Signed-off-by: Nicholas Pratte <npra...@iol.unh.edu>
>
> ---
<snip>
> +
> +    def send_packet_and_verify(
> +        self,
> +        mac_address: str,
> +        add_vlan: bool = False,
> +        should_receive: bool = True,
> +    ) -> None:
> +        """Generate, send, and verify a packet based on specified parameters.
> +
> +        Test cases within this suite utilize this method to create, send, 
> and verify
> +        packets based on criteria relating to the packet's destination mac 
> address,
> +        vlan tag, and whether or not the packet should be received or not. 
> Packets
> +        are verified using an inserted payload. Assuming the test case 
> expects to
> +        receive a specified packet, if the list of received packets contains 
> this
> +        payload within any of its packets, the test case passes. 
> Alternatively, if
> +        the designed packet should not be received, and the packet payload 
> is not,

I think there is an extra comma here, but we probably should remove
the "not," all together since the test case really fails here if it is
received.

> +        received, then the test case fails. Each call with this method sends 
> exactly
> +        one packet.
> +
> +        Args:
> +            mac_address: The destination mac address of the packet being 
> sent.
> +            add_vlan: If :data:'True', add a vlan tag to the packet being 
> sent. The
> +                vlan tag will be :data:'2' if the packet should be received 
> and
> +                :data:'1' if the packet should not be received but requires 
> a vlan tag.
> +            should_receive: If :data:'True', assert whether or not the sent 
> packet
> +                has been received. If :data:'False', assert that the send 
> packet was not
> +                received. :data:'True' by default
> +        """
> +        if add_vlan:
> +            packet = Ether() / Dot1Q(vlan=2 if should_receive else 1) / IP() 
> / Raw(load="X" * 22)
> +        else:
> +            packet = Ether() / IP() / Raw(load="X" * 22)
> +        packet.dst = mac_address
> +        received_packets = [
> +            packets
> +            for packets in self.send_packet_and_capture(packet)
> +            if hasattr(packets, "load") and "X" * 22 in str(packets.load)
> +        ]
> +        if should_receive:
> +            self.verify(len(received_packets) == 1, "Expected packet not 
> received")
> +        else:
> +            self.verify(len(received_packets) == 0, "Expected packet 
> received")
> +
> +    def test_add_remove_mac_addresses(self) -> None:
> +        """Assess basic mac addressing filtering functionalities.
> +
> +        This test case validates for proper behavior of mac address 
> filtering with both
> +        a port's default, burned-in mac address, as well as additional mac 
> addresses
> +        added to the PMD. Packets should either be received or not received 
> depending on
> +        the properties applied to the PMD at any given time.
> +
> +        Test:
> +            Start TestPMD with promiscuous mode.
> +            Send a packet with the port's default mac address. (Should 
> receive)
> +            Send a packet with fake mac address. (Should not receive)
> +            Add fake mac address to the PMD's address pool.
> +            Send a packet with the fake mac address to the PMD. (Should 
> receive)
> +            Remove the fake mac address from the PMD's address pool.
> +            Sent a packet with the fake mac address to the PMD. (Should not 
> receive)

Typo: sent should be send.

> +        """
> +        with TestPmdShell(self.sut_node) as testpmd:
> +            testpmd.set_promisc(0, on=False)
> +            testpmd.start()
> +            mac_address = self._sut_port_ingress.mac_address
> +
> +            # Send a packet with NIC default mac address
> +            self.send_packet_and_verify(mac_address=mac_address, 
> should_receive=True)
> +            # Send a packet with different mac address
> +            fake_address = "00:00:00:00:00:01"
> +            self.send_packet_and_verify(mac_address=fake_address, 
> should_receive=False)
> +
> +            # Add mac address to pool and rerun tests
> +            testpmd.set_mac_addr(0, mac_address=fake_address, add=True)
> +            self.send_packet_and_verify(mac_address=fake_address, 
> should_receive=True)
> +            testpmd.set_mac_addr(0, mac_address=fake_address, add=False)
> +            self.send_packet_and_verify(mac_address=fake_address, 
> should_receive=False)
> +<snip>
> 2.44.0
>

Reply via email to