Repository navigation
Conversation
- RT-1.25: wait for IPv4 and IPv6 ARP after StartProtocols before traffic.
- RT-3.1: on KNE, send 500 pps for 15s instead of 5% line rate for one minute. Hardware behavior is unchanged.
- RT-7.2: on KNE, wait for permit prefixes in the AFT before traffic. Also wait for ARP and for the OTG BGP session to be established.
- SFLOW-1: use the DUT loopback as the KNE sFlow source address, and treat ixr10e as a KNE model.
- TE-3.7: reduce the traffic rate from 100000 to 10000 pps.Hardware behavior is unchanged.
- Add internal/kneutil.IsKNEBinding so KNE-only behavior stays off the hardware path.
"This code is a Contribution to the OpenConfig Feature Profiles project ("Work") made under the Google Software Grant and Corporate Contributor License Agreement ("CLA") and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia's intellectual property are granted for any other purpose. This code is provided on an "as is" basis without any warranties of any kind."
Summary of ChangesHello, 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 introduces infrastructure and test-specific adjustments to improve compatibility and reliability for KNE (Kubernetes Network Emulation) environments. By implementing a mechanism to distinguish between KNE and hardware bindings, the changes allow for targeted test tweaks—such as synchronization waits and rate adjustments—without impacting the baseline behavior of hardware-based tests. Highlights
Using Gemini Code AssistThe 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
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 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
|
There was a problem hiding this comment.
Code Review
This pull request introduces a new kneutil package to support KNE-specific test behaviors, updating several OTG tests (BGP community, VRF selection, sFlow, and static route) to dynamically adjust traffic flow rates, durations, and wait times when running on KNE. Additionally, it ensures proper neighbor resolution by adding WaitForARP calls before starting traffic. The review feedback suggests adding a defensive nil check for the dut pointer in the new IsKNEBinding function to prevent potential runtime panics.
"This code is a Contribution to the OpenConfig Feature Profiles project ("Work") made under the Google Software Grant and Corporate Contributor License Agreement ("CLA") and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia's intellectual property are granted for any other purpose. This code is provided on an "as is" basis without any warranties of any kind."
| Service(string) (*tpb.Service, error) | ||
| } | ||
| var lookup serviceLookup | ||
| return binding.DUTAs(dut.RawAPIs().BindingDUT(), &lookup) == nil |
There was a problem hiding this comment.
Can you clarify how this works ?
There was a problem hiding this comment.
- IsKNEBinding checks whether the DUT’s Ondatra binding implements knebind’s KNE Service(name) (*topo.Service, error) API via binding.DUTAs(dut.RawAPIs().BindingDUT(), &lookup). That API exists on knebind’s ServiceDUT (built from the KNE topology services map) and not on featureprofiles’ staticDUT used for HW/static binding. We gate on Vendor()==NOKIA because these tweaks are Nokia KNE–specific as of now(other vendors can use if required).
- Challenges of kneDeviceModelList:
- kneDeviceModelList differentiate KNE/Hw only based on model, which is not safe proxy for virtual model because down the line model can/may be same in future for both Hw/KNE.
- Using kneDeviceModelList forces to use same change across all vendors, which if needed different changes then it will not be applicable.
- IsKNEBinding resolves above both challenges & it is implemented in RT-3.1/RT-7.2 for reference.
There was a problem hiding this comment.
openconfig/ondatra#158 would this make it simpler ?
"This code is a Contribution to the OpenConfig Feature Profiles project ("Work") made under the Google Software Grant and Corporate Contributor License Agreement ("CLA") and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia's intellectual property are granted for any other purpose. This code is provided on an "as is" basis without any warranties of any kind."