diff --git a/feature/bgp/prefixlimit/otg_tests/bgp_prefix_limit_test/README.md b/feature/bgp/prefixlimit/otg_tests/bgp_prefix_limit_test/README.md index 2632792ac9d..e507230aa7a 100644 --- a/feature/bgp/prefixlimit/otg_tests/bgp_prefix_limit_test/README.md +++ b/feature/bgp/prefixlimit/otg_tests/bgp_prefix_limit_test/README.md @@ -6,7 +6,7 @@ BGP Prefix Limit ## Procedure -* Configure eBGP session between ATE port-1 and DUT port-1,with an Accept-route all import-policy/export-policy under the neighbor AFI/SAFI. +* Configure eBGP session between ATE port-1 and DUT port-1,with an Accept-route all import-policy/export-policy under the BGP peer-group AFI/SAFI. * With maximum prefix limits of unlimited, and N. * Advertise prefixes of `limit - 1`, `limit`, `limit + 1`. Validate session state meets expected value at ATE. @@ -20,31 +20,22 @@ BGP Prefix Limit table by forwarding traffic to `prefix{0..n-1}` and `prefix{n}` where n is the maximum prefix limit configured. -## Config Parameter coverage - -For prefixes: - -* /network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/ -* /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor - -Parameters: - -* afi-safis/afi-safi/ipv4-unicast/prefix-limit/config/max-prefixes -* afi-safis/afi-safi/ipv4-unicast/prefix-limit/config/restart-timer - -## Telemetry Parameter coverage - -* TODO: afi-safis/afi-safi/ipv\[46\]-unicast/prefix-limit/state/restart-timer -* TODO: - afi-safis/afi-safi/ipv\[46\]-unicast/prefix-limit/state/warning-threshold-pct -* TODO: - afi-safis/afi-safi/ipv\[46\]-unicast/prefix-limit/state/max-prefix-limit -* TODO: - afi-safis/afi-safi/ipv\[46\]-unicast/prefix-limit/state/prefix-limit-exceeded - -## Protocol/RPC Parameter coverage - -N/A +## OpenConfig Path and RPC Coverage + +```yaml +paths: + /network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/state/peer-group-name: + /network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/neighbor-address: + /network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/config/max-prefixes: + /network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/state/warning-threshold-pct: + /network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/afi-safis/afi-safi/ipv4-unicast/prefix-limit/state/prefix-limit-exceeded: + +rpcs: + gnmi: + gNMI.Get: + gNMI.Subscribe: + gNMI.Set: +``` ## Minimum DUT platform requirement diff --git a/feature/bgp/tests/local_bgp_test/README.md b/feature/bgp/tests/local_bgp_test/README.md index de4b31660f8..b06db095a4b 100644 --- a/feature/bgp/tests/local_bgp_test/README.md +++ b/feature/bgp/tests/local_bgp_test/README.md @@ -8,7 +8,7 @@ The local\_bgp\_test brings up two OpenConfig controlled devices and tests that * Disconnected between them. * Verify BGP neighbor parameters -Enable an Accept-route all import-policy/export-policy for eBGP session under the neighbor AFI/SAFI. +Enable an Accept-route all import-policy/export-policy for eBGP session under the BGP peer-group AFI/SAFI. This test is suitable for running in a KNE environment. diff --git a/feature/bgp/timers/otg_tests/bgp_keepalive_and_holdtimer_configuration_test/README.md b/feature/bgp/timers/otg_tests/bgp_keepalive_and_holdtimer_configuration_test/README.md index 43d4f97c60f..4afc8e8cc08 100644 --- a/feature/bgp/timers/otg_tests/bgp_keepalive_and_holdtimer_configuration_test/README.md +++ b/feature/bgp/timers/otg_tests/bgp_keepalive_and_holdtimer_configuration_test/README.md @@ -8,7 +8,7 @@ BGP Keepalive and HoldTimer Configuration Test * Establish eBGP sessions as follows between ATE and DUT * The DUT has eBGP peering with ATE port 1 and ATE port 2. - * Enable an Accept-route all import-policy/export-policy under the neighbor AFI/SAFI. + * Enable an Accept-route all import-policy/export-policy under the BGP peer-group AFI/SAFI. * The first pair is called the "source" pair, and the second the "destination" pair * Validate BGP session state on DUT using telemetry. diff --git a/feature/gribi/otg_tests/get_rpc_test/README.md b/feature/gribi/otg_tests/get_rpc_test/README.md index a497f30b7ba..488638d5b2f 100644 --- a/feature/gribi/otg_tests/get_rpc_test/README.md +++ b/feature/gribi/otg_tests/get_rpc_test/README.md @@ -48,18 +48,14 @@ Validate gRIBI Get RPC. [fib_status]: https://github.com/openconfig/gribi/blob/08d53dffce45e942c6e7f07521c58b557984e4b7/v1/proto/service/gribi.proto#L485 [rib_status]: https://github.com/openconfig/gribi/blob/08d53dffce45e942c6e7f07521c58b557984e4b7/v1/proto/service/gribi.proto#L483 -## Config Parameter coverage - -No additional configuration parameters. - -## Telemetry Parameter coverage - -No additional telemetry parameters. - -## Protocol/RPC Parameter coverage - -* gRIBI - * Get +## OpenConfig Path and RPC Coverage + +```yaml +rpcs: + gnmi: + gNMI.Get: + gNMI.Set: +``` ## Minimum DUT platform requirement diff --git a/feature/gribi/otg_tests/get_rpc_test/get_rpc_test.go b/feature/gribi/otg_tests/get_rpc_test/get_rpc_test.go index 874d27aaf6b..e3c22fb7cfa 100644 --- a/feature/gribi/otg_tests/get_rpc_test/get_rpc_test.go +++ b/feature/gribi/otg_tests/get_rpc_test/get_rpc_test.go @@ -33,6 +33,7 @@ import ( "github.com/openconfig/ondatra" "github.com/openconfig/ondatra/gnmi" "github.com/openconfig/ondatra/gnmi/oc" + "github.com/openconfig/ygnmi/ygnmi" "github.com/openconfig/ygot/ygot" ) @@ -316,8 +317,17 @@ func testIPv4LeaderActive(ctx context.Context, t *testing.T, args *testArgs) { // Verify the above entries are active through AFT Telemetry. for ip := range ateDstNetCIDR { ipv4Path := gnmi.OC().NetworkInstance(deviations.DefaultNetworkInstance(args.dut)).Afts().Ipv4Entry(ateDstNetCIDR[ip]) - if got, want := gnmi.Get(t, args.dut, ipv4Path.State()).GetPrefix(), ateDstNetCIDR[ip]; got != want { - t.Errorf("ipv4-entry/state/prefix got %s, want %s", got, want) + lastValue, ok := gnmi.Watch(t, args.dut, ipv4Path.State(), time.Minute, func(v *ygnmi.Value[*oc.NetworkInstance_Afts_Ipv4Entry]) bool { + return v.IsPresent() + }).Await(t) + + if !ok { + t.Fatalf("gnmi.Watch() failed value received = %s", lastValue) + } + + ipv4, _ := lastValue.Val() + if got, want := ipv4.GetPrefix(), ateDstNetCIDR[ip]; got != want { + t.Fatalf("ipv4-entry/state/prefix got %s, want %s", got, want) } } @@ -346,8 +356,17 @@ func testIPv4LeaderActive(ctx context.Context, t *testing.T, args *testArgs) { validateGetRPC(ctx, t, args.clientA) for ip := range ateDstNetCIDR { ipv4Path := gnmi.OC().NetworkInstance(deviations.DefaultNetworkInstance(args.dut)).Afts().Ipv4Entry(ateDstNetCIDR[ip]) - if got, want := gnmi.Get(t, args.dut, ipv4Path.State()).GetPrefix(), ateDstNetCIDR[ip]; got != want { - t.Errorf("ipv4-entry/state/prefix got %s, want %s", got, want) + lastValue, ok := gnmi.Watch(t, args.dut, ipv4Path.State(), time.Minute, func(v *ygnmi.Value[*oc.NetworkInstance_Afts_Ipv4Entry]) bool { + return v.IsPresent() + }).Await(t) + + if !ok { + t.Fatalf("gnmi.Watch() failed value received = %s", lastValue) + } + + ipv4, _ := lastValue.Val() + if got, want := ipv4.GetPrefix(), ateDstNetCIDR[ip]; got != want { + t.Fatalf("ipv4-entry/state/prefix got %s, want %s", got, want) } } diff --git a/feature/gribi/otg_tests/route_removal_non_default_vrf_test/route_removal_non_default_vrf_test.go b/feature/gribi/otg_tests/route_removal_non_default_vrf_test/route_removal_non_default_vrf_test.go index ae25736b1dc..b7f5ab7802c 100644 --- a/feature/gribi/otg_tests/route_removal_non_default_vrf_test/route_removal_non_default_vrf_test.go +++ b/feature/gribi/otg_tests/route_removal_non_default_vrf_test/route_removal_non_default_vrf_test.go @@ -400,7 +400,7 @@ func injectEntries(ctx context.Context, t *testing.T, dut *ondatra.DUTDevice, cl t.Logf("Add an IPv4Entry for %s pointing to ATE port-2 via gRIBI client", ateDstNetCIDR) client.AddNH(t, nhIndex, atePort2.IPv4, deviations.DefaultNetworkInstance(dut), fluent.InstalledInRIB) client.AddNHG(t, nhgIndex, map[uint64]uint64{nhIndex: 1}, deviations.DefaultNetworkInstance(dut), fluent.InstalledInRIB) - client.AddIPv4(t, ateDstNetCIDR, nhgIndex, networkInstanceName, deviations.DefaultNetworkInstance(dut), fluent.InstalledInRIB) + injectIPEntry(ctx, t, dut, client, networkInstanceName, ateDstNetCIDR) } // injectIPEntry adds only IPv4 entry to the specified network instance referencing to the nhgid, to the VRF.