DPDK patches and discussions
 help / color / mirror / Atom feed
From: Nicholas Pratte <npratte@iol.unh.edu>
To: Jeremy Spewock <jspewock@iol.unh.edu>
Cc: juraj.linkes@pantheon.tech, paul.szczepanek@arm.com,
	probb@iol.unh.edu,  Honnappa.Nagarahalli@arm.com,
	yoan.picchi@foss.arm.com, dmarx@iol.unh.edu,
	 luca.vizzarro@arm.com, bruce.richardson@intel.com, dev@dpdk.org
Subject: Re: [PATCH 2/3] dts: add testpmd methods for test suite
Date: Tue, 2 Jul 2024 09:40:17 -0400	[thread overview]
Message-ID: <CAKXZ7ei7HmMrR4eVa41OEdXiVzwU1UUwNiuuRg-oFP4NyoQkTg@mail.gmail.com> (raw)
In-Reply-To: <CAAA20UT3+ebC-=vh+Ya-FrM4jowQRzbFr_Qi-2ieLJU_pVUnsw@mail.gmail.com>

On Wed, Jun 26, 2024 at 11:50 AM Jeremy Spewock <jspewock@iol.unh.edu> wrote:
>
> I think the subject line of this commit makes sense in the context of
> this series, but might be less helpful when the commit is applied to
> the git tree. For this reason I might favor changing it to something
> that briefly says what the added testpmd commands actually do.
>
> On Fri, Jun 21, 2024 at 1:23 PM Nicholas Pratte <npratte@iol.unh.edu> wrote:
> >
> > Several methods are either imported from currently in-develoment test
> > suites, or they have been created specifically for this test suite.
> >
> > Methods here that can be found in other test suites include vlan
> > filtering, adding and removing vlan tags, and setting promiscuous mode.
> >
> > Methods that are specific to this test suite include adding or removing
> > mac addresses, and adding or removing multicast mac addresses.
>
> You probably could make the subject about the adding/modification of
> mac addresses judging by the body.
>

Good point. I'll make adjustments to the commit subject as well as the
commit messages.

> >
> > Bugzilla ID: 1454
> > Signed-off-by: Nicholas Pratte <npratte@iol.unh.edu>
> > ---
> >  dts/framework/remote_session/testpmd_shell.py | 209 ++++++++++++++++++
> >  1 file changed, 209 insertions(+)
> >
> > diff --git a/dts/framework/remote_session/testpmd_shell.py b/dts/framework/remote_session/testpmd_shell.py
> > index ec22f72221..8a7d5905b3 100644
> > --- a/dts/framework/remote_session/testpmd_shell.py
> > +++ b/dts/framework/remote_session/testpmd_shell.py
> > @@ -767,6 +767,215 @@ def show_port_info(self, port_id: int) -> TestPmdPort:
> >
> >          return TestPmdPort.parse(output)
> >
> > +    def set_mac_addr(self, port_id: int, mac_address: str, add: bool = True, verify: bool = True):
>
> I'm not sure it makes sense to default the `add` parameter in this
> method or the following. It seems to me like this method would likely
> be split pretty evenly between adding and removing and I can't think
> of a reason why one would be done in the general case over the other,
> so I think it would be more clear if we didn't default it.
>

Good point. It made sense for me to do it this way in a vacuum (since
I'm mostly adding addresses in each test case), but there's no good
reason it should be this way.

> > +        """Add or remove a mac address on a given port.
> > +
>
> Is it worth mentioning that we are adding the MAC address to the
> allowlist of the port?

Yes, I made a subtle change to the docstring.

>
> > +        Args:
> > +            port_id: The port ID the mac address is set on.
> > +            mac_address: The mac address to be added or removed to the specified port.
> > +            add: If :data:`True`, add the specified mac address. If :data:`False`, remove specified
> > +                mac address.
> > +            verify: If :data:'True', assert that the 'mac_addr' operation was successful. If
> > +                :data:'False', run the command and skip this assertion.
> > +
> > +        Raises:
> > +            InteractiveCommandExecutionError: If either the 'add' or 'remove' operations fail.
>
> This error documentation confuses me a little because it sounds like
> both `add` and `remove` operations are happening in this method when
> really either one happens or the other happens. Maybe changing this to
> just saying the "mac address operation" failed would fix this.
>

Agreed. I made the change.

> > +        """
>
> I think something that could save you a lot of space in this method
> (and the next one) is creating a variable for what command to use if
> `add` is true or not.
> You could do something like this:
>
> mac_cmd = "add" if add else "remove"
>
> > +        if add:
> > +            output = self.send_command(f"mac_addr add {port_id} {mac_address}")
> > +        else:
> > +            output = self.send_command(f"mac_addr remove {port_id} {mac_address}")
>
> Then you don't need this if-statement because this just becomes:
> output = self.send_command(f"mac_addr {mac_cmd} {port_id} {mac_address}")
>

I love this! Good thinking. I'll make the changes.

<snip>
> > +            ):
> > +                self._logger.debug(f"Failed to add {multi_addr} on port {port_id}")
> > +                raise InteractiveCommandExecutionError(
> > +                    f"Failed to add {multi_addr} on port {port_id} \n{output}"
> > +                )
> > +            if (
> > +                not add
> > +                and "Invalid multicast addr"
>
> Is this a typo or does testpmd remove the underscore when you're removing?

Not a typo. Good attention to detail though.

<snip>
> > +
> > +    def rx_vlan_rm(self, vlan: int, port: int, verify: bool = True):
> > +        """Remove specified vlan tag from filter list on a port.
> > +
> > +        Args:
> > +            vlan: The vlan tag to remove, should be within 1-4094.
> > +            port: The port number to remove the tag from, should be within 0-32.
> > +            verify: If :data:`True`, the output of the command is scanned to verify that
> > +                the vlan tag was removed from the filter list on the specified port. If not, it is
> > +                considered an error.
> > +
> > +        Raises:
> > +            InteractiveCommandExecutionError: If `verify` is :data:`True` and the tag
> > +            is not removed.
>
> Other methods have this second line indented. I'm not sure if I
> addressed this on the VLAN suite already or not but this should
> probably do the same.

All of the remaining methods were ripped from the VLAN suite, and I'll
update these as that series progresses. I've been doing it this way to
hopefully make it less confusing come the time these patches series
are ready to be merged.

  reply	other threads:[~2024-07-02 13:40 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-21 17:20 [PATCH 0/3] Mac Filter Port to New DTS Nicholas Pratte
2024-06-21 17:20 ` [PATCH 1/3] dts: add boolean to adjust addresses Nicholas Pratte
2024-06-26 15:49   ` Jeremy Spewock
2024-07-02 13:50     ` Nicholas Pratte
2024-06-21 17:21 ` [PATCH 2/3] dts: add testpmd methods for test suite Nicholas Pratte
2024-06-26 15:50   ` Jeremy Spewock
2024-07-02 13:40     ` Nicholas Pratte [this message]
2024-06-21 17:21 ` [PATCH 3/3] dts: mac filter test suite refactored for new dts Nicholas Pratte
2024-06-26 15:55   ` Jeremy Spewock
2024-07-01 16:49     ` Nicholas Pratte
2024-07-02 18:56 ` [PATCH v2 0/3] dts: mac filter port to " Nicholas Pratte
2024-07-02 18:56 ` [PATCH v2 1/3] dts: add boolean to adjust addresses Nicholas Pratte
2024-07-02 18:56 ` [PATCH v2 2/3] dts: add methods for setting mac and multicast addresses 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 18:59 ` [PATCH v2 0/3] dts: mac filter port to " Nicholas Pratte
2024-07-02 18:59   ` [PATCH v2 1/3] dts: add boolean to adjust addresses Nicholas Pratte
2024-07-02 18:59   ` [PATCH v2 2/3] dts: add methods for setting mac and multicast addresses Nicholas Pratte
2024-07-02 19:04 ` [PATCH v2 0/3] Mac Filter Port to New DTS Nicholas Pratte
2024-07-02 19:04 ` [PATCH v2 1/3] dts: add boolean to adjust addresses Nicholas Pratte
2024-07-02 19:04 ` [PATCH v2 2/3] dts: add methods for setting mac and multicast addresses Nicholas Pratte
2024-07-02 19:04 ` [PATCH v2 3/3] dts: mac filter test suite refactored for new dts Nicholas Pratte
2024-07-02 19:11 ` [PATCH v2 0/3] Mac Filter Port to New DTS Nicholas Pratte
2024-07-02 19:11 ` [PATCH v2 1/3] dts: add boolean to adjust addresses Nicholas Pratte
2024-07-02 19:11 ` [PATCH v2 2/3] dts: add testpmd methods for test suite Nicholas Pratte
2024-07-02 19:11 ` [PATCH v2 3/3] dts: mac filter test suite refactored for new dts 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=CAKXZ7ei7HmMrR4eVa41OEdXiVzwU1UUwNiuuRg-oFP4NyoQkTg@mail.gmail.com \
    --to=npratte@iol.unh.edu \
    --cc=Honnappa.Nagarahalli@arm.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=dmarx@iol.unh.edu \
    --cc=jspewock@iol.unh.edu \
    --cc=juraj.linkes@pantheon.tech \
    --cc=luca.vizzarro@arm.com \
    --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).