Index: webrtc/modules/pacing/paced_sender_unittest.cc |
diff --git a/webrtc/modules/pacing/paced_sender_unittest.cc b/webrtc/modules/pacing/paced_sender_unittest.cc |
index 3ef45a4199ff341bea63f8d953ae1046fbc917b7..45c53ed3b074f4dbf357b80ad71bc4537e58c966 100644 |
--- a/webrtc/modules/pacing/paced_sender_unittest.cc |
+++ b/webrtc/modules/pacing/paced_sender_unittest.cc |
@@ -861,5 +861,43 @@ TEST_F(PacedSenderTest, AverageQueueTime) { |
EXPECT_EQ(0, send_bucket_->AverageQueueTimeMs()); |
} |
+TEST_F(PacedSenderTest, CanSendMorePackets) { |
+ uint32_t ssrc = 12346; |
+ uint16_t sequence_number = 1234; |
+ EXPECT_TRUE(send_bucket_->CanSendMorePackets()); |
+ send_bucket_->Pause(); |
+ EXPECT_FALSE(send_bucket_->CanSendMorePackets()); |
+ send_bucket_->Resume(); |
+ EXPECT_TRUE(send_bucket_->CanSendMorePackets()); |
+ |
+ const size_t packets_to_fill_send_queue = |
+ kTargetBitrateBps * PacedSender::kDefaultPaceMultiplier * |
+ PacedSender::kMaxQueueLengthMs / (8 * 1000 * 1000); |
+ |
+ const size_t packets_to_send_per_interval = |
+ kTargetBitrateBps * PacedSender::kDefaultPaceMultiplier / |
+ (8 * 1000 * 200) + |
+ 1; // One more than expected due to rounding. |
+ // Packets send during one interval. |
+ for (size_t i = 0; i < packets_to_send_per_interval; ++i) { |
+ SendAndExpectPacket(PacedSender::kNormalPriority, ssrc, sequence_number++, |
+ clock_.TimeInMilliseconds(), 1000, false); |
+ } |
+ |
+ for (size_t i = 0; |
+ i < packets_to_fill_send_queue - packets_to_send_per_interval - 1; ++i) { |
+ send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, |
+ sequence_number++, clock_.TimeInMilliseconds(), |
+ 1000, false); |
+ } |
+ EXPECT_TRUE(send_bucket_->CanSendMorePackets()); |
+ send_bucket_->InsertPacket(PacedSender::kNormalPriority, ssrc, |
+ sequence_number++, clock_.TimeInMilliseconds(), |
+ 1000, false); |
+ EXPECT_FALSE(send_bucket_->CanSendMorePackets()); |
+ send_bucket_->Process(); |
+ EXPECT_TRUE(send_bucket_->CanSendMorePackets()); |
+} |
+ |
} // namespace test |
} // namespace webrtc |