DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jeremy Spewock <jspewock@iol.unh.edu>
To: Nicholas Pratte <npratte@iol.unh.edu>
Cc: Honnappa.Nagarahalli@arm.com, probb@iol.unh.edu,
	 juraj.linkes@pantheon.tech, paul.szczepanek@arm.com,
	luca.vizzarro@arm.com,  yoan.picchi@foss.arm.com,
	dmarx@iol.unh.edu, dev@dpdk.org
Subject: Re: [PATCH v2 3/3] dts: mac filter test suite refactored for new dts
Date: Thu, 11 Jul 2024 15:34:00 -0400	[thread overview]
Message-ID: <CAAA20UQmOVm=rMBXvC3qxgScqwBd2ucuseLqtK02wdXAGO+XRg@mail.gmail.com> (raw)
In-Reply-To: <20240702192422.2480-5-npratte@iol.unh.edu>

Code all looked good to me, just a couple of documentation comments.

On Tue, Jul 2, 2024 at 3:25 PM Nicholas Pratte <npratte@iol.unh.edu> wrote:
><snip>
> +class TestMacFilter(TestSuite):
> +    """Mac address allowlist filtering test suite.
> +
> +    Configure mac address filtering on a given port, and test the port's filtering behavior
> +    using both a given port's hardware address as well as dummy addresses. If a port accepts
> +    a packet that is not contained within its mac address allowlist, then a given test case
> +    fails. Alternatively, if a port drops a packet that is designated within its mac address
> +    allowlist, a given test case will fail.
> +
> +    Moreover, a given port should demonstrate proper behavior when bound to the Poll Mode
> +    Driver. A port should not have an mac address allowlist that exceeds its designated size.

I think this should just be " a mac address allowlist" rather than "an".

> +    A port's default hardware address should not be removed from its address pool, and invalid
> +    addresses should not be included in the allowlist. If a port abides by the above rules, the
> +    test case passes.
> +    """
> +
> +    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. If the list of received packets
> +        contains this payload within any of its packets, the test case passes. Each

It might be worth noting here that it passes assuming `should_recieve` is true.

> +        call with this method sends exactly one packet.
> +
> +        Args:
> +            mac_address: The destination mac address of the packet being sent.
> +            add_vlan: Add a vlan tag to the packet being sent. :data:'2' if the packet

I think if this started with "Whether to add..."  it would be more
clear that it is a boolean.

> +                should be received, :data:'1' if the packet should not be received but
> +                requires a vlan tag, and None for any other condition.

This tripped me up at first because I thought you were saying that
add_vlan could be 2, 1, or None. It might be worth just adding to the
start of that second sentence that "The tag will be...". Also, it
might be more clear if you explain that the tag will be omitted in
other cases rather than it being None.

> +            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, adjust_addresses=False)
> +            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 cases validates for proper behavior of mac address filtering with both

Small typo, but I think this is meant to be "this test case validates...".

> +        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)
> +        """
> +        testpmd = TestPmdShell(self.sut_node)
> +        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)
> +        testpmd.close()
> +        sleep(6)
> <snip>

> --
> 2.44.0
>

  reply	other threads:[~2024-07-11 19:34 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-02 19:24 [PATCH v2 0/3] Mac Filter Port to New DTS Nicholas Pratte
2024-07-02 19:24 ` [PATCH v2 1/3] dts: add boolean to adjust addresses Nicholas Pratte
2024-07-11 19:31   ` Jeremy Spewock
2024-07-17 17:19     ` Nicholas Pratte
2024-07-19 15:37     ` Jeremy Spewock
2024-07-22 13:09   ` Dean Marx
2024-07-02 19:24 ` [PATCH v2 2/3] dts: add testpmd methods for test suite Nicholas Pratte
2024-07-11 19:33   ` Jeremy Spewock
2024-07-17 19:57     ` Nicholas Pratte
2024-07-02 19:24 ` [PATCH v2 3/3] dts: mac filter test suite refactored for new dts Nicholas Pratte
2024-07-11 19:34   ` Jeremy Spewock [this message]
2024-07-18 19:05 ` [PATCH v3 0/3] Mac Filter Port to New DTS Nicholas Pratte
2024-07-18 19:05   ` [PATCH v3 1/3] dts: add boolean to adjust addresses Nicholas Pratte
2024-07-18 19:05   ` [PATCH v3 2/3] dts: add methods for setting mac and multicast addresses Nicholas Pratte
2024-07-19 15:37     ` Jeremy Spewock
2024-07-22 13:08     ` Dean Marx
2024-07-18 19:40   ` [PATCH v3 3/3] dts: mac filter test suite refactored for new dts Nicholas Pratte
2024-07-19 15:38     ` Jeremy Spewock
2024-07-22 13:08     ` Dean Marx
2024-07-26 16:39 ` [PATCH v4 0/2] Mac Filter Port to New DTS Nicholas Pratte
2024-07-26 16:45   ` [PATCH v4 1/2] dts: add methods for setting mac and multicast addresses Nicholas Pratte
2024-08-02 20:26     ` Jeremy Spewock
2024-08-12 18:58     ` Dean Marx
2024-09-09 18:29     ` Dean Marx
2024-07-26 16:46   ` [PATCH v4 2/2] dts: mac filter test suite refactored for new dts Nicholas Pratte
2024-08-02 20:25     ` Jeremy Spewock
2024-08-02 20:27       ` Jeremy Spewock
2024-08-12 18:47     ` Dean Marx
2024-09-04 21:14     ` Dean Marx
2024-09-05 19:11       ` Nicholas Pratte
2024-09-09 18:28     ` Dean Marx
2024-07-26 16:39 ` [PATCH v4 1/2] dts: add methods for setting mac and multicast addresses Nicholas Pratte
2024-08-02 20:02   ` Jeremy Spewock
2024-07-26 16:39 ` [PATCH v4 2/2] dts: mac filter test suite refactored for new dts Nicholas Pratte
2024-08-02 20:02   ` Jeremy Spewock
2024-09-12 19:00 ` [PATCH v5 0/2] Mac Filter Port to New DTS Nicholas Pratte
2024-09-12 19:00   ` [PATCH v5 1/2] dts: add methods for setting mac and multicast addresses Nicholas Pratte
2024-09-12 19:00   ` [PATCH v5 2/2] dts: mac filter test suite refactored for new dts Nicholas Pratte
  -- strict thread matches above, loose matches on Subject: below --
2024-06-21 17:20 [PATCH 0/3] Mac Filter Port to New DTS Nicholas Pratte
2024-07-02 18:56 ` [PATCH v2 3/3] dts: mac filter test suite refactored for new dts Nicholas Pratte
2024-07-02 19:04 ` Nicholas Pratte
2024-07-02 19:11 ` Nicholas Pratte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAAA20UQmOVm=rMBXvC3qxgScqwBd2ucuseLqtK02wdXAGO+XRg@mail.gmail.com' \
    --to=jspewock@iol.unh.edu \
    --cc=Honnappa.Nagarahalli@arm.com \
    --cc=dev@dpdk.org \
    --cc=dmarx@iol.unh.edu \
    --cc=juraj.linkes@pantheon.tech \
    --cc=luca.vizzarro@arm.com \
    --cc=npratte@iol.unh.edu \
    --cc=paul.szczepanek@arm.com \
    --cc=probb@iol.unh.edu \
    --cc=yoan.picchi@foss.arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).