@@ -285,6 +285,7 @@ TEST_F(VirtualSwitchSaiInterfaceTest, switchDebugCounterCapabilityGet)
285
285
{
286
286
sai_s32_list_t enum_values_capability = { .count = 0 , .list = nullptr };
287
287
288
+ // Query the capability for IN_DROP_REASON_LIST with no allocated buffer
288
289
ASSERT_EQ (SAI_STATUS_BUFFER_OVERFLOW,
289
290
m_vssai->queryAttributeEnumValuesCapability (
290
291
m_swid,
@@ -293,6 +294,7 @@ TEST_F(VirtualSwitchSaiInterfaceTest, switchDebugCounterCapabilityGet)
293
294
&enum_values_capability));
294
295
ASSERT_EQ (enum_values_capability.count , 3 );
295
296
297
+ // Allocate the required buffer and query again
296
298
std::vector<sai_int32_t > haList (enum_values_capability.count );
297
299
enum_values_capability.list = haList.data ();
298
300
@@ -310,15 +312,21 @@ TEST_F(VirtualSwitchSaiInterfaceTest, switchDebugCounterCapabilityGet)
310
312
SAI_IN_DROP_REASON_ACL_ANY
311
313
};
312
314
315
+ // Transform the returned list into a set for comparison
313
316
std::set<sai_in_drop_reason_t > actualInDropReasons;
314
317
std::transform (
315
318
haList.cbegin (), haList.cend (),
316
319
std::inserter (actualInDropReasons, actualInDropReasons.begin ()),
317
320
[](sai_int32_t value) { return static_cast <sai_in_drop_reason_t >(value); }
318
321
);
322
+
323
+ // Verify the returned values match the expected values
319
324
ASSERT_EQ (expectedInDropReasons, actualInDropReasons);
320
325
326
+ // Set count to a smaller value to trigger SAI_STATUS_BUFFER_OVERFLOW
321
327
enum_values_capability.count = 1 ;
328
+
329
+ // Query the capability for OUT_DROP_REASON_LIST
322
330
ASSERT_EQ (SAI_STATUS_BUFFER_OVERFLOW,
323
331
m_vssai->queryAttributeEnumValuesCapability (
324
332
m_swid,
@@ -327,6 +335,7 @@ TEST_F(VirtualSwitchSaiInterfaceTest, switchDebugCounterCapabilityGet)
327
335
&enum_values_capability));
328
336
ASSERT_EQ (enum_values_capability.count , 2 );
329
337
338
+ // Resize the buffer and query again
330
339
haList.resize (enum_values_capability.count );
331
340
enum_values_capability.list = haList.data ();
332
341
@@ -351,6 +360,7 @@ TEST_F(VirtualSwitchSaiInterfaceTest, switchDebugCounterCapabilityGet)
351
360
);
352
361
ASSERT_EQ (expectedOutDropReasons, actualOutDropReasons);
353
362
363
+ // Query the capability for DEBUG_COUNTER_ATTR_TYPE
354
364
enum_values_capability.count = 3 ;
355
365
ASSERT_EQ (SAI_STATUS_BUFFER_OVERFLOW,
356
366
m_vssai->queryAttributeEnumValuesCapability (
@@ -369,8 +379,11 @@ TEST_F(VirtualSwitchSaiInterfaceTest, switchDebugCounterCapabilityGet)
369
379
SAI_OBJECT_TYPE_DEBUG_COUNTER,
370
380
SAI_DEBUG_COUNTER_ATTR_TYPE,
371
381
&enum_values_capability));
382
+
383
+ // Verify the required count is 4
372
384
ASSERT_EQ (enum_values_capability.count , 4 );
373
385
386
+ // Define the expected DEBUG_COUNTER_ATTR_TYPE values
374
387
const std::set<sai_debug_counter_type_t > expectedDebugCounterTypes = {
375
388
SAI_DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS,
376
389
SAI_DEBUG_COUNTER_TYPE_PORT_OUT_DROP_REASONS,
0 commit comments