Skip to content

Commit

Permalink
added subscribe sample mode for queue counters (openconfig#2384)
Browse files Browse the repository at this point in the history
  • Loading branch information
self-maurya authored Nov 30, 2023
1 parent 9f35476 commit 332b7d4
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 1 deletion.
2 changes: 1 addition & 1 deletion feature/qos/otg_tests/qos_basic_test/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ Verify that DUT supports QoS config and forward QoS traffic correctly.

* Verify that there is no traffic loss

#### DP-1.14.1 [TODO: https://github.com/openconfig/featureprofiles/issues/2321]
#### DP-1.14.1

* Initiate traffic

Expand Down
33 changes: 33 additions & 0 deletions feature/qos/otg_tests/qos_basic_test/qos_basic_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"github.com/openconfig/featureprofiles/internal/deviations"
"github.com/openconfig/featureprofiles/internal/fptest"
"github.com/openconfig/featureprofiles/internal/qoscfg"
gpb "github.com/openconfig/gnmi/proto/gnmi"
"github.com/openconfig/ondatra"
"github.com/openconfig/ondatra/gnmi"
"github.com/openconfig/ondatra/gnmi/oc"
Expand Down Expand Up @@ -525,7 +526,32 @@ func TestBasicConfigWithTraffic(t *testing.T) {
t.Errorf("Get dutDropOctetCounterDiff for queue %q: got %v, want 0", data.queue, dutDropOctetCounterDiff)
}
}
}

// gnmi subscribe sample mode(10 and 15 seconds sample interval) for queue counters
subscribeTimeout := 30 * time.Second
for _, sampleInterval := range []time.Duration{10 * time.Second, 15 * time.Second} {
minWant := int(subscribeTimeout/sampleInterval) - 1
for _, data := range trafficFlows {
transmitPkts := gnmi.Collect(t, gnmiOpts(t, dut, sampleInterval), gnmi.OC().Qos().Interface(dp3.Name()).Output().Queue(data.queue).TransmitPkts().State(), subscribeTimeout).Await(t)
if len(transmitPkts) < minWant {
t.Errorf("TransmitPkts: got %d, want >= %d", len(transmitPkts), minWant)
}
transmitOctets := gnmi.Collect(t, gnmiOpts(t, dut, sampleInterval), gnmi.OC().Qos().Interface(dp3.Name()).Output().Queue(data.queue).TransmitOctets().State(), subscribeTimeout).Await(t)
if len(transmitOctets) < minWant {
t.Errorf("TransmitOctets: got %d, want >= %d", len(transmitOctets), minWant)
}
droppedPkts := gnmi.Collect(t, gnmiOpts(t, dut, sampleInterval), gnmi.OC().Qos().Interface(dp3.Name()).Output().Queue(data.queue).DroppedPkts().State(), subscribeTimeout).Await(t)
if len(droppedPkts) < minWant {
t.Errorf("DroppedPkts: got %d, want >= %d", len(droppedPkts), minWant)
}
if !deviations.QOSDroppedOctets(dut) {
droppedOctets := gnmi.Collect(t, gnmiOpts(t, dut, sampleInterval), gnmi.OC().Qos().Interface(dp3.Name()).Output().Queue(data.queue).DroppedOctets().State(), subscribeTimeout).Await(t)
if len(droppedOctets) < minWant {
t.Errorf("DroppedOctets: got %d, want >= %d", len(droppedOctets), minWant)
}
}
}
}
})
}
Expand Down Expand Up @@ -1726,3 +1752,10 @@ func ConfigureJuniperQos(t *testing.T, dut *ondatra.DUTDevice) {
gnmi.Replace(t, dut, gnmi.OC().Qos().Config(), q)
}
}

func gnmiOpts(t *testing.T, dut *ondatra.DUTDevice, interval time.Duration) *gnmi.Opts {
return dut.GNMIOpts().WithYGNMIOpts(
ygnmi.WithSubscriptionMode(gpb.SubscriptionMode_SAMPLE),
ygnmi.WithSampleInterval(interval),
)
}

0 comments on commit 332b7d4

Please sign in to comment.