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}
diff --git a/webrtc/modules/congestion_controller/congestion_controller.cc b/webrtc/modules/congestion_controller/congestion_controller.cc
index 24bfd78..ae11d93 100644
--- a/webrtc/modules/congestion_controller/congestion_controller.cc
+++ b/webrtc/modules/congestion_controller/congestion_controller.cc
@@ -309,7 +309,7 @@
}
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 ce2258b..53ccf3d 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 @@
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