Skip to content

Add coverage for heterogenous port tests#5571

Open
ram-mac wants to merge 1 commit into
openconfig:mainfrom
ram-mac:pkt_linkqual
Open

Add coverage for heterogenous port tests#5571
ram-mac wants to merge 1 commit into
openconfig:mainfrom
ram-mac:pkt_linkqual

Conversation

@ram-mac

@ram-mac ram-mac commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

This is to enhance the existing testcase realted to packet linkqualification test to do following
Verify that the DUT can successfully initialize, generate, and reflect link qualification packets over heterogeneous port combinations (native 800G/400G to breakout 8x100G and vice-versa) breakout and vice-versa link qual support. -->, even when the underlying interface carries active production configurations (like Port-Channel or LAG assignments)

@ram-mac ram-mac requested a review from a team as a code owner June 12, 2026 11:46
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request enhances the existing packet-based link qualification test suite by adding support for heterogeneous port speeds and complex production-like configurations, such as Port-Channels. The changes ensure that the DUT can reliably initialize and perform link qualification even when interfaces are part of an active LAG, providing more robust validation for real-world deployment scenarios.

Highlights

  • Expanded Test Coverage: Updated the link qualification test documentation to include support for heterogeneous port combinations and overlaid Port-Channel (LAG) configurations.
  • Documentation Updates: Refined the README to detail the new test case, including topology requirements, procedure steps, and canonical OpenConfig examples for LAG setup.
  • Metadata Updates: Updated the test metadata description to reflect the broader scope of the packet-based link qualification tests.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@OpenConfigBot

Copy link
Copy Markdown

Pull Request Functional Test Report for #5571 / 16c4e07

Virtual Devices

Device Test Test Documentation Job Raw Log
Arista cEOS status
gNOI-2.1: Packet-based Link Qualification
b8adf90d Log
Cisco 8000E status
gNOI-2.1: Packet-based Link Qualification
37d5d1ce Log
Cisco XRd status
gNOI-2.1: Packet-based Link Qualification
2dca30dc Log
Juniper ncPTX status
gNOI-2.1: Packet-based Link Qualification
3c1fdd72 Log
Nokia SR Linux status
gNOI-2.1: Packet-based Link Qualification
2bab0b7a Log
Openconfig Lemming status
gNOI-2.1: Packet-based Link Qualification
eb84acec Log

Hardware Devices

Device Test Test Documentation Raw Log
Arista 7808 status
gNOI-2.1: Packet-based Link Qualification
Cisco 8808 status
gNOI-2.1: Packet-based Link Qualification
Juniper PTX10008 status
gNOI-2.1: Packet-based Link Qualification
Nokia 7250 IXR-10e status
gNOI-2.1: Packet-based Link Qualification

Help

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the packet-based link qualification test documentation and metadata to support broader port speeds and configurations, specifically adding a new test case for heterogeneous breakout and overlaid Port-Channel configurations along with a canonical OpenConfig example. The review feedback highlights inconsistencies in the new test case's topology description and API enum naming (using 'REFLECTOR' instead of 'FAR_END'), and recommends cleaning up redundant headers and placeholder text in the newly added DUT platform requirements section.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment on lines +82 to +89
* **Configure Heterogeneous Topology**:
* Setup the physical/logical links such that the Generator port on the local DUT is in native speed (e.g., 400G), and the Reflector port on the peer DUT is a breakout sub-port (e.g., 4x100G channel).
* **Apply Production Profile (Overlaid LAG)**:
* Map both interfaces as members of a Port-Channel (LAG) in the device's base configuration.
* **Trigger Reflector (Far-End)**:
* Issue the `gnoi.LinkQualification.Create` RPC to the far-end DUT, setting its `EndpointType` as `REFLECTOR` (ASIC or PMD loopback as supported).
* **Trigger Generator (Near-End)**:
* Issue the `gnoi.LinkQualification.Create` RPC to the local DUT, setting its `EndpointType` as `NEAR_END` (PacketGenerator) and defining the target packet size (e.g., max MTU) and transmission rate.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The topology is defined as a single-DUT loopback (dut1 to dut1), but the procedure for Test Case 2 refers to a 'local DUT', 'peer DUT', and 'far-end DUT'. Additionally, the endpoint type is incorrectly documented as 'REFLECTOR' instead of 'FAR_END' (which is the correct gNOI LinkQualification API enum value and matches Test Case 1). Please update the text to refer to a single DUT and use the correct 'FAR_END' endpoint type.

Suggested change
* **Configure Heterogeneous Topology**:
* Setup the physical/logical links such that the Generator port on the local DUT is in native speed (e.g., 400G), and the Reflector port on the peer DUT is a breakout sub-port (e.g., 4x100G channel).
* **Apply Production Profile (Overlaid LAG)**:
* Map both interfaces as members of a Port-Channel (LAG) in the device's base configuration.
* **Trigger Reflector (Far-End)**:
* Issue the `gnoi.LinkQualification.Create` RPC to the far-end DUT, setting its `EndpointType` as `REFLECTOR` (ASIC or PMD loopback as supported).
* **Trigger Generator (Near-End)**:
* Issue the `gnoi.LinkQualification.Create` RPC to the local DUT, setting its `EndpointType` as `NEAR_END` (PacketGenerator) and defining the target packet size (e.g., max MTU) and transmission rate.
* **Configure Heterogeneous Topology**:
* Setup the physical/logical links such that the Generator port on the DUT is in native speed (e.g., 400G), and the Reflector port on the same DUT is a breakout sub-port (e.g., 4x100G channel).
* **Apply Production Profile (Overlaid LAG)**:
* Map both interfaces as members of a Port-Channel (LAG) in the device's base configuration.
* **Trigger Reflector (Far-End)**:
* Issue the gnoi.LinkQualification.Create RPC to the DUT for the reflector port, setting its EndpointType as FAR_END (ASIC or PMD loopback as supported).
* **Trigger Generator (Near-End)**:
* Issue the gnoi.LinkQualification.Create RPC to the DUT for the generator port, setting its EndpointType as NEAR_END (PacketGenerator) and defining the target packet size (e.g., max MTU) and transmission rate.

Comment on lines +174 to +182
## Required DUT platform

* Specify the minimum DUT-type
* FFF - fixed form factor is enough for this test. However it can run also
on a MFF testbed.
gNMI.Set:

## Minimum DUT platform requirement
* FFF - fixed form factor

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The section contains redundant headers (## Required DUT platform and ## Minimum DUT platform requirement), placeholder template instructions (* Specify the minimum DUT-type), and dangling text (gNMI.Set:). These should be cleaned up and consolidated into a single, clean section.

Suggested change
## Required DUT platform
* Specify the minimum DUT-type
* FFF - fixed form factor is enough for this test. However it can run also
on a MFF testbed.
gNMI.Set:
## Minimum DUT platform requirement
* FFF - fixed form factor
## Minimum DUT platform requirement
* FFF - fixed form factor is enough for this test. However, it can also run on an MFF testbed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants