singleton_test - openconfig/featureprofiles GitHub Wiki
Singleton L3 interface (non-LAG) is supported on DUT.
For each port speed and breakout port configuration that need to be tested, add a new testbed configuration with the desired port types.
- Configure ATE port-1 connected to DUT port-1, and ATE port-2 connected to DUT port-2, with the relevant IPv4 and IPv6 addresses.
- Configure static MAC address to be 02:1a:WW:XX:YY:ZZ where WW:XX:YY:ZZ are
the octets of IPv4.
- Ensure: ARP discovers static MAC address specified when port is configured with static MAC.
- Validate that port speed is reported correctly and that port telemetry
matches expected negotiated speeds for forced, auto-negotiation, and
auto-negotiation while overriding port speed and duplex.
- TODO: If the port is a breakout, ensure that all breakout ports are correctly reported.
- For IPv4 and IPv6:
- With traffic flow from ATE port-1 to ATE port-2, ensure:
- For MTUs [^1] of 1500, 5000, 9236:
- Packets with size greater than the configured MTU with DF-bit set are not transmitted.
- Packets with size of configured MTU are received.
- Packets with size less than the configured MTU are received.
- For MTUs [^1] of 1500, 5000, 9236:
- With traffic flow from ATE port-1 to ATE port-2, ensure:
[^1]: The MTU specified above refers to the L3 MTU, which is the payload portion of an Ethernet frame.
- Bring down the physical layer of ATE port-1, and bring it back up.
Repeat this a few times (minimum 2)
- Verify that the interface goes down by checking the physical state on DUT/ATE.
- Verify that the interface is back up by checking the physical state on DUT/ATE.
- Ensure that the number of interface state changes are accurately captured in the OC path.
- Verify that the traffic flow from ATE port-1 to ATE port-2 is now working after the interface is back up.
- Run the test twice, once with a SAMPLE interval of 10 Seconds and once again with a SAMPLE interval of 15 seconds
- Initiate traffic
- Counters should be verified using gNMI subscribe with sample mode for inbound port (DUT port-1):
- /interfaces/interface/state/counters/in-unicast-pkts
- /interfaces/interface/state/counters/in-broadcast-pkts
- /interfaces/interface/state/counters/in-multicast-pkts
- /interfaces/interface/state/counters/in-octets
- /interfaces/interface/state/counters/in-discards
- /interfaces/interface/state/counters/in-errors
- /interfaces/interface/state/counters/in-fcs-errors
- Counters should be verified using gNMI subscribe with sample mode for outbound port (DUT port-2):
- /interfaces/interface/state/counters/out-unicast-pkts
- /interfaces/interface/state/counters/out-broadcast-pkts
- /interfaces/interface/state/counters/out-multicast-pkts
- /interfaces/interface/state/counters/out-octets
- /interfaces/interface/state/counters/out-errors
- /interfaces/interface/state/counters/out-discards
- Ensure inbound and outbound unicast counters are the same
- Ensure counters increment at the selected SAMPLE interval
- On DUT Port-1 with a QSFP-DD 400GBASE-DR4 transceiver inserted
- Ensure no breakout is configured
- Set Port-1 port-speed to 100G
- /interfaces/interface/ethernet/config/port-speed
- Validate that the DUT does not create breakouts implicitly and does not set the breakout speed
- /components/component/port/breakout-mode/groups/group/config
- /components/component/port/breakout-mode/groups/group/config/index
- /components/component/port/breakout-mode/groups/group/config/breakout-speed
- Validate the port state changes to "DOWN"
- /interfaces/interface/state/oper-status
- Configure a breakout on Port-1 to 4x100 Gig
- /components/component/port/breakout-mode/groups/group/config
- Try to set port speed of Port-1 to 100G
- /interfaces/interface/ethernet/config/port-speed
- Validate the port-speed is rejected
- Since a breakout port is not expected to support port-speed, verify the gNMI Set operation is rejected
- /interfaces/interface/ethernet/state/port-speed
- Using a single gNMI Replace, remove the DUT port-1 and its breakout config
- Ensure the gNMI Replace is successful and configuration for DUT port-1 including its breakout is removed
- /interfaces/interface/ethernet/state/
- /components/component/port/breakout-mode/groups/group/state
- /interfaces/interface/config/name
- /interfaces/interface/config/description
- /interfaces/interface/config/enabled
- /interfaces/interface/subinterfaces/subinterface/ipv4/config/mtu
- /interfaces/interface/subinterfaces/subinterface/ipv6/config/mtu
- /interfaces/interface/config/id
- /interfaces/interface/ethernet/config/mac-address
- /interfaces/interface/ethernet/config/port-speed
- /interfaces/interface/ethernet/config/duplex-mode
- /interfaces/interface/ethernet/state/counters/in-mac-pause-frames
- /interfaces/interface/ethernet/state/counters/out-mac-pause-frames
- /interfaces/interface/ethernet/state/mac-address
- /interfaces/interface/state/counters/in-broadcast-pkts
- /interfaces/interface/state/counters/in-discards
- /interfaces/interface/state/counters/in-errors
- /interfaces/interface/state/counters/in-multicast-pkts
- /interfaces/interface/state/counters/in-octets
- /interfaces/interface/state/counters/in-unicast-pkts
- /interfaces/interface/state/counters/in-unknown-protos
- /interfaces/interface/state/counters/out-broadcast-pkts
- /interfaces/interface/state/counters/out-discards
- /interfaces/interface/state/counters/out-errors
- /interfaces/interface/state/counters/out-multicast-pkts
- /interfaces/interface/state/counters/out-octets
- /interfaces/interface/state/counters/out-pkts
- /interfaces/interface/state/counters/out-unicast-pkts
- /interfaces/interface/subinterfaces/subinterface/ipv4/state/mtu
- /interfaces/interface/subinterfaces/subinterface/ipv6/state/mtu
- /interfaces/interface/state/oper-status
- /interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/ip
- /interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/in-pkts
- /interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/out-pkts
- /interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/ip
- /interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/in-discarded-pkts
- /interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/in-pkts
- /interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-discarded-pkts
- /interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-pkts
- /interfaces/interface/ethernet/state/aggregate-id
- /interfaces/interface/ethernet/state/port-speed
- /interfaces/interface/state/admin-status
- /interfaces/interface/state/counters/out-octets
- /interfaces/interface/state/description
- /interfaces/interface/state/type
- /interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-forwarded-pkts
- /interfaces/interface/state/hardware-port
- /interfaces/interface/state/id
- /interfaces/interface/state/counters/in-fcs-errors
- /interfaces/interface/state/counters/carrier-transitions
- gNMI
- Get
- Subscribe
vRX
The below yaml defines the OC paths and RPC intended to be covered by this test.
paths:
/interfaces/interface/ethernet/state/counters/in-mac-pause-frames:
/interfaces/interface/ethernet/state/counters/out-mac-pause-frames:
/interfaces/interface/ethernet/state/mac-address:
/interfaces/interface/state/counters/in-broadcast-pkts:
/interfaces/interface/state/counters/in-discards:
/interfaces/interface/state/counters/in-errors:
/interfaces/interface/state/counters/in-multicast-pkts:
/interfaces/interface/state/counters/in-octets:
/interfaces/interface/state/counters/in-unicast-pkts:
/interfaces/interface/state/counters/in-unknown-protos:
/interfaces/interface/state/counters/out-broadcast-pkts:
/interfaces/interface/state/counters/out-discards:
/interfaces/interface/state/counters/out-errors:
/interfaces/interface/state/counters/out-multicast-pkts:
/interfaces/interface/state/counters/out-octets:
/interfaces/interface/state/counters/out-pkts:
/interfaces/interface/state/counters/out-unicast-pkts:
/interfaces/interface/subinterfaces/subinterface/ipv4/state/mtu:
/interfaces/interface/subinterfaces/subinterface/ipv6/state/mtu:
/interfaces/interface/state/oper-status:
/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/ip:
/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/in-pkts:
/interfaces/interface/subinterfaces/subinterface/ipv4/state/counters/out-pkts:
/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/ip:
/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/in-discarded-pkts:
/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/in-pkts:
/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-discarded-pkts:
/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-pkts:
/interfaces/interface/ethernet/state/aggregate-id:
/interfaces/interface/ethernet/state/port-speed:
/interfaces/interface/state/admin-status:
/interfaces/interface/state/description:
/interfaces/interface/state/type:
/interfaces/interface/subinterfaces/subinterface/ipv6/state/counters/out-forwarded-pkts:
/interfaces/interface/state/hardware-port:
/interfaces/interface/state/id:
/interfaces/interface/state/counters/in-fcs-errors:
/interfaces/interface/state/counters/carrier-transitions:
rpcs:
gnmi:
gNMI.Set:
union_replace: false
gNMI.Subscribe:
on_change: false