Skip to content

Conversation

@AmrNJ
Copy link
Contributor

@AmrNJ AmrNJ commented Jan 7, 2026

Address code flakiness by removing gnmi.WatchAll which terminates the wait time as soon as just one entry is received instead of waiting for all the prefixes to be learnt.

@OpenConfigBot
Copy link

OpenConfigBot commented Jan 7, 2026

Pull Request Functional Test Report for #4976 / 007f52d

Virtual Devices

Device Test Test Documentation Job Raw Log
Arista cEOS status
RT-1.3: BGP Route Propagation
4bad5990 Log
Cisco 8000E status
RT-1.3: BGP Route Propagation
c7cf0e10 Log
Cisco XRd status
RT-1.3: BGP Route Propagation
7d59bd3e Log
Juniper ncPTX status
RT-1.3: BGP Route Propagation
87d81811 Log
Nokia SR Linux status
RT-1.3: BGP Route Propagation
b0f065d3 Log
Openconfig Lemming status
RT-1.3: BGP Route Propagation
6644de8a Log

Hardware Devices

Device Test Test Documentation Raw Log
Arista 7808 status
RT-1.3: BGP Route Propagation
Cisco 8808 status
RT-1.3: BGP Route Propagation
Juniper PTX10008 status
RT-1.3: BGP Route Propagation
Nokia 7250 IXR-10e status
RT-1.3: BGP Route Propagation

Help

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @AmrNJ, 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 addresses flakiness in the route_propagation_test.go file by replacing the gnmi.WatchAll function with a polling mechanism. The previous implementation was terminating the wait time as soon as one entry was received, instead of waiting for all prefixes to be learned. This change improves the reliability of the tests by ensuring that the test waits for all prefixes to be learned within the specified timeout.

Highlights

  • Flakiness Reduction: Replaces gnmi.WatchAll with a polling mechanism to avoid premature termination of tests due to receiving only a subset of expected BGP prefixes.
  • Test Reliability: Ensures that the test waits for all prefixes to be learned within the specified timeout, addressing flakiness caused by the previous implementation.
  • Code Simplification: The code is simplified by removing the gnmi.WatchAll and replacing it with a polling mechanism.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

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 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 counter productive. 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.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

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.

Copy link
Contributor

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

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 addresses test flakiness by replacing gnmi.WatchAll with a polling loop to wait for BGP prefixes. While this fixes the immediate issue, the polling implementation is inefficient and goes against the spirit of the repository's testing guidelines, which recommend using gnmi.Watch for waiting on conditions.

My review includes suggestions to refactor the prefix checking functions (checkOTGBGP4Prefix and checkOTGBGP6Prefix) to use gnmi.Watch on a specific prefix path. This approach is more efficient as it avoids continuous polling and is more idiomatic with the Ondatra testing framework.

@coveralls
Copy link

coveralls commented Jan 7, 2026

Pull Request Test Coverage Report for Build 20781664684

Details

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage remained the same at 10.019%

Totals Coverage Status
Change from base Build 20770081068: 0.0%
Covered Lines: 2227
Relevant Lines: 22227

💛 - Coveralls

@AmrNJ AmrNJ marked this pull request as ready for review January 8, 2026 13:32
@AmrNJ AmrNJ requested a review from a team as a code owner January 8, 2026 13:32
Copy link
Contributor

@ram-mac ram-mac left a comment

Choose a reason for hiding this comment

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

LGTM

found := false
if ok {
start := time.Now()
for time.Since(start) < 2*time.Minute {
Copy link
Contributor

Choose a reason for hiding this comment

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

May I request to know how we arrive at 2 minutes for all data routes to comes in ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We noticed test being flaky with 1 minute. The 2 minute wait time gives consistent passes. The await loop would also terminate (before 2 minutes) when all prefixes are received.

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.

5 participants