From 14f1250f47be2190ce96840b04fe4289c796a590 Mon Sep 17 00:00:00 2001 From: asapersson Date: Wed, 7 Sep 2016 23:14:50 -0700 Subject: [PATCH] Do not report bucket delay for stats when pacer is paused (zero returned). Avoids reporting a growing delay (i.e. time b/w current time and oldest packet in the pacer). BUG=webrtc:6253 Review-Url: https://codereview.webrtc.org/2279283002 Cr-Commit-Position: refs/heads/master@{#14118} --- .../congestion_controller.cc | 2 +- .../congestion_controller_unittest.cc | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/webrtc/modules/congestion_controller/congestion_controller.cc b/webrtc/modules/congestion_controller/congestion_controller.cc index 24bfd78887..ae11d93fbb 100644 --- a/webrtc/modules/congestion_controller/congestion_controller.cc +++ b/webrtc/modules/congestion_controller/congestion_controller.cc @@ -309,7 +309,7 @@ void CongestionController::SetAllocatedSendBitrateLimits( } int64_t CongestionController::GetPacerQueuingDelayMs() const { - return pacer_->QueueInMs(); + return IsNetworkDown() ? 0 : pacer_->QueueInMs(); } void CongestionController::SignalNetworkState(NetworkState state) { diff --git a/webrtc/modules/congestion_controller/congestion_controller_unittest.cc b/webrtc/modules/congestion_controller/congestion_controller_unittest.cc index ce2258bf5e..53ccf3dda1 100644 --- a/webrtc/modules/congestion_controller/congestion_controller_unittest.cc +++ b/webrtc/modules/congestion_controller/congestion_controller_unittest.cc @@ -18,6 +18,7 @@ #include "webrtc/system_wrappers/include/clock.h" using testing::_; +using testing::AtLeast; using testing::NiceMock; using testing::Return; using testing::SaveArg; @@ -169,5 +170,21 @@ TEST_F(CongestionControllerTest, controller_->Process(); } +TEST_F(CongestionControllerTest, GetPacerQueuingDelayMs) { + EXPECT_CALL(observer_, OnNetworkChanged(_, _, _)).Times(AtLeast(1)); + + const int64_t kQueueTimeMs = 123; + EXPECT_CALL(*pacer_, QueueInMs()).WillRepeatedly(Return(kQueueTimeMs)); + EXPECT_EQ(kQueueTimeMs, controller_->GetPacerQueuingDelayMs()); + + // Expect zero pacer delay when network is down. + controller_->SignalNetworkState(kNetworkDown); + EXPECT_EQ(0, controller_->GetPacerQueuingDelayMs()); + + // Network is up, pacer delay should be reported. + controller_->SignalNetworkState(kNetworkUp); + EXPECT_EQ(kQueueTimeMs, controller_->GetPacerQueuingDelayMs()); +} + } // namespace test } // namespace webrtc