@@ -116,12 +116,23 @@ class AgentMirrorOnDropTest : public AgentHwTest {
116
116
ecmpHelper.programRoutes (&routeUpdater, {port}, {route});
117
117
}
118
118
119
+ cfg::MirrorOnDropEventConfig makeEventConfig (
120
+ std::optional<cfg::MirrorOnDropAgingGroup> group,
121
+ const std::vector<cfg::MirrorOnDropReasonAggregation>& reasonAggs) {
122
+ cfg::MirrorOnDropEventConfig eventCfg;
123
+ if (group.has_value ()) {
124
+ eventCfg.agingGroup () = group.value ();
125
+ }
126
+ eventCfg.dropReasonAggregations () = reasonAggs;
127
+ return eventCfg;
128
+ }
129
+
119
130
void setupMirrorOnDrop (
120
131
cfg::SwitchConfig* config,
121
132
PortID portId,
122
133
const folly::IPAddressV6& collectorIp,
123
- const std::map<int8_t , std::vector< cfg::MirrorOnDropReasonAggregation> >&
124
- eventIdToDropReasons ) {
134
+ const std::map<int8_t , cfg::MirrorOnDropEventConfig >&
135
+ modEventToConfigMap ) {
125
136
cfg::MirrorOnDropReport report;
126
137
report.name () = " mod-1" ;
127
138
report.mirrorPortId () = portId;
@@ -132,7 +143,7 @@ class AgentMirrorOnDropTest : public AgentHwTest {
132
143
report.truncateSize () = kTruncateSize ;
133
144
report.dscp () = 0 ;
134
145
report.agingIntervalUsecs () = 100 ;
135
- report.eventIdToDropReasons () = eventIdToDropReasons ;
146
+ report.modEventToConfigMap () = modEventToConfigMap ;
136
147
config->mirrorOnDropReports ()->push_back (report);
137
148
}
138
149
@@ -273,8 +284,10 @@ TEST_F(AgentMirrorOnDropTest, ConfigChangePostWarmboot) {
273
284
mirrorPortId,
274
285
kCollectorIp_ ,
275
286
{{0 ,
276
- {cfg::MirrorOnDropReasonAggregation::
277
- INGRESS_PACKET_PROCESSING_DISCARDS}}});
287
+ makeEventConfig (
288
+ std::nullopt, // use default aging group
289
+ {cfg::MirrorOnDropReasonAggregation::
290
+ INGRESS_PACKET_PROCESSING_DISCARDS})}});
278
291
applyNewConfig (config);
279
292
};
280
293
@@ -285,9 +298,11 @@ TEST_F(AgentMirrorOnDropTest, ConfigChangePostWarmboot) {
285
298
&config,
286
299
mirrorPortId,
287
300
kCollectorIp_ ,
288
- {{1 ,
289
- {cfg::MirrorOnDropReasonAggregation::
290
- INGRESS_PACKET_PROCESSING_DISCARDS}}});
301
+ {{0 ,
302
+ makeEventConfig (
303
+ cfg::MirrorOnDropAgingGroup::PORT,
304
+ {cfg::MirrorOnDropReasonAggregation::
305
+ INGRESS_PACKET_PROCESSING_DISCARDS})}});
291
306
applyNewConfig (config);
292
307
};
293
308
@@ -310,8 +325,10 @@ TEST_F(AgentMirrorOnDropTest, PacketProcessingError) {
310
325
mirrorPortId,
311
326
kCollectorIp_ ,
312
327
{{kEventId ,
313
- {cfg::MirrorOnDropReasonAggregation::
314
- INGRESS_PACKET_PROCESSING_DISCARDS}}});
328
+ makeEventConfig (
329
+ std::nullopt, // use default aging group
330
+ {cfg::MirrorOnDropReasonAggregation::
331
+ INGRESS_PACKET_PROCESSING_DISCARDS})}});
315
332
utility::addTrapPacketAcl (&config, kCollectorNextHopMac_ );
316
333
applyNewConfig (config);
317
334
@@ -364,15 +381,23 @@ TEST_F(AgentMirrorOnDropTest, MultipleEventIDs) {
364
381
mirrorPortId,
365
382
kCollectorIp_ ,
366
383
// Sandwich PP drops between other reasons and see if it still works
367
- {{0 ,
368
- {cfg::MirrorOnDropReasonAggregation::
369
- INGRESS_SOURCE_CONGESTION_DISCARDS}},
370
- {1 ,
371
- {cfg::MirrorOnDropReasonAggregation::
372
- INGRESS_PACKET_PROCESSING_DISCARDS}},
373
- {2 ,
374
- {cfg::MirrorOnDropReasonAggregation::
375
- INGRESS_DESTINATION_CONGESTION_DISCARDS}}});
384
+ {
385
+ {0 ,
386
+ makeEventConfig (
387
+ cfg::MirrorOnDropAgingGroup::GLOBAL,
388
+ {cfg::MirrorOnDropReasonAggregation::
389
+ INGRESS_SOURCE_CONGESTION_DISCARDS})},
390
+ {1 ,
391
+ makeEventConfig (
392
+ cfg::MirrorOnDropAgingGroup::PORT,
393
+ {cfg::MirrorOnDropReasonAggregation::
394
+ INGRESS_PACKET_PROCESSING_DISCARDS})},
395
+ {2 ,
396
+ makeEventConfig (
397
+ cfg::MirrorOnDropAgingGroup::VOQ,
398
+ {cfg::MirrorOnDropReasonAggregation::
399
+ INGRESS_DESTINATION_CONGESTION_DISCARDS})},
400
+ });
376
401
utility::addTrapPacketAcl (&config, kCollectorNextHopMac_ );
377
402
applyNewConfig (config);
378
403
0 commit comments