@@ -471,6 +471,44 @@ TEST_F(RtcpFunctionalityTest, updateTwccHashTableTest)
471
471
EXPECT_EQ (STATUS_SUCCESS, freePeerConnection (&pRtcPeerConnection));
472
472
}
473
473
474
+ TEST_F (RtcpFunctionalityTest, updateTwccHashTableIntPromotionCase) {
475
+ PRtcPeerConnection pRtcPeerConnection = NULL ;
476
+ PKvsPeerConnection pKvsPeerConnection = NULL ;
477
+ RtcConfiguration config{};
478
+ EXPECT_EQ (STATUS_SUCCESS, createPeerConnection (&config, &pRtcPeerConnection));
479
+ pKvsPeerConnection = reinterpret_cast <PKvsPeerConnection>(pRtcPeerConnection);
480
+ PTwccRtpPacketInfo pTwccRtpPacketInfo = NULL ;
481
+ INT64 duration = 0 ;
482
+ UINT64 receivedBytes = 0 , receivedPackets = 0 , sentBytes = 0 , sentPackets = 0 ;
483
+ UINT16 i;
484
+
485
+ // Grab the hash table
486
+ PHashTable pTwccRtpPktInfosHashTable = pKvsPeerConnection->pTwccManager ->pTwccRtpPktInfosHashTable ;
487
+ UINT16 hashTableInsertionCount = 0 ;
488
+
489
+ // Set up the hash table
490
+ pKvsPeerConnection->pTwccManager ->prevReportedBaseSeqNum = UINT16_MAX;
491
+ pKvsPeerConnection->pTwccManager ->lastReportedSeqNum = UINT16_MAX;
492
+
493
+ // Add packet at UINT16_MAX
494
+ pTwccRtpPacketInfo = (PTwccRtpPacketInfo) MEMCALLOC (1 , SIZEOF (TwccRtpPacketInfo));
495
+ EXPECT_EQ (STATUS_SUCCESS, hashTableUpsert (pTwccRtpPktInfosHashTable, UINT16_MAX, (UINT64) pTwccRtpPacketInfo));
496
+ hashTableInsertionCount++;
497
+
498
+ // Even though pTwccManager->lastReportedSeqNum is a UINT16, (pTwccManager->lastReportedSeqNum + 1) can get
499
+ // promoted to an int (32) when pTwccManager->lastReportedSeqNum == UINT16_MAX
500
+ EXPECT_EQ (STATUS_SUCCESS, updateTwccHashTable (pKvsPeerConnection->pTwccManager , &duration,
501
+ &receivedBytes, &receivedPackets,
502
+ &sentBytes, &sentPackets));
503
+
504
+ EXPECT_EQ (0 , pTwccRtpPktInfosHashTable->itemCount ); // Ensure the table is cleared again
505
+
506
+ MUTEX_LOCK (pKvsPeerConnection->twccLock );
507
+ MUTEX_UNLOCK (pKvsPeerConnection->twccLock );
508
+
509
+ EXPECT_EQ (STATUS_SUCCESS, freePeerConnection (&pRtcPeerConnection));
510
+ }
511
+
474
512
} // namespace webrtcclient
475
513
} // namespace video
476
514
} // namespace kinesis
0 commit comments