Index: webrtc/modules/bitrate_controller/bitrate_controller_unittest.cc |
diff --git a/webrtc/modules/bitrate_controller/bitrate_controller_unittest.cc b/webrtc/modules/bitrate_controller/bitrate_controller_unittest.cc |
index 3f467ef8a46e16ecb668c6ac35131fbd26d7e2bf..4fd112310c1632bac9fbc08cb9017585f69f3b61 100644 |
--- a/webrtc/modules/bitrate_controller/bitrate_controller_unittest.cc |
+++ b/webrtc/modules/bitrate_controller/bitrate_controller_unittest.cc |
@@ -14,11 +14,16 @@ |
#include "testing/gtest/include/gtest/gtest.h" |
#include "webrtc/modules/bitrate_controller/include/bitrate_controller.h" |
+#include "webrtc/modules/pacing/mock/mock_paced_sender.h" |
#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" |
-using webrtc::RtcpBandwidthObserver; |
-using webrtc::BitrateObserver; |
+using ::testing::Exactly; |
+using ::testing::Return; |
+ |
using webrtc::BitrateController; |
+using webrtc::BitrateObserver; |
+using webrtc::PacedSender; |
+using webrtc::RtcpBandwidthObserver; |
uint8_t WeightedLoss(int num_packets1, uint8_t fraction_loss1, |
int num_packets2, uint8_t fraction_loss2) { |
@@ -61,8 +66,8 @@ class BitrateControllerTest : public ::testing::Test { |
~BitrateControllerTest() {} |
virtual void SetUp() { |
- controller_ = |
- BitrateController::CreateBitrateController(&clock_, &bitrate_observer_); |
+ controller_ = BitrateController::CreateBitrateController( |
+ &clock_, &bitrate_observer_, &pacer_); |
controller_->SetStartBitrate(kStartBitrateBps); |
EXPECT_EQ(kStartBitrateBps, bitrate_observer_.last_bitrate_); |
controller_->SetMinMaxBitrate(kMinBitrateBps, kMaxBitrateBps); |
@@ -84,6 +89,7 @@ class BitrateControllerTest : public ::testing::Test { |
webrtc::SimulatedClock clock_; |
TestBitrateObserver bitrate_observer_; |
+ testing::NiceMock<webrtc::MockPacedSender> pacer_; |
BitrateController* controller_; |
RtcpBandwidthObserver* bandwidth_observer_; |
}; |
@@ -399,3 +405,20 @@ TEST_F(BitrateControllerTest, SetReservedBitrate) { |
bandwidth_observer_->OnReceivedEstimatedBitrate(1); |
EXPECT_EQ(100000, bitrate_observer_.last_bitrate_); |
} |
+ |
+TEST_F(BitrateControllerTest, OnSendQueueFull) { |
+ bandwidth_observer_->OnReceivedEstimatedBitrate(200000); |
+ EXPECT_EQ(200000, bitrate_observer_.last_bitrate_); |
+ // Let the pacer be full next time the controller checks. |
+ EXPECT_CALL(pacer_, ExpectedQueueTimeMs()) |
+ .WillOnce(Return(PacedSender::kMaxQueueLengthMs + 1)); |
+ clock_.AdvanceTimeMilliseconds(25); |
+ controller_->Process(); |
+ EXPECT_EQ(0, bitrate_observer_.last_bitrate_); |
+ // Let the pacer not be full next time the controller checks. |
+ EXPECT_CALL(pacer_, ExpectedQueueTimeMs()) |
+ .WillOnce(Return(PacedSender::kMaxQueueLengthMs - 1)); |
+ clock_.AdvanceTimeMilliseconds(25); |
+ controller_->Process(); |
+ EXPECT_EQ(200000, bitrate_observer_.last_bitrate_); |
+} |