Index: webrtc/modules/pacing/bitrate_prober_unittest.cc |
diff --git a/webrtc/modules/pacing/bitrate_prober_unittest.cc b/webrtc/modules/pacing/bitrate_prober_unittest.cc |
index b5bc889014382e4581ca088a4ba9e86689ed5b02..d36d8108b946427f8c155dfe6eeda0b9f3650367 100644 |
--- a/webrtc/modules/pacing/bitrate_prober_unittest.cc |
+++ b/webrtc/modules/pacing/bitrate_prober_unittest.cc |
@@ -27,8 +27,8 @@ TEST(BitrateProberTest, VerifyStatesAndTimeBetweenProbes) { |
const int kProbeSize = 1000; |
const int kMinProbeDurationMs = 15; |
- prober.CreateProbeCluster(kTestBitrate1); |
- prober.CreateProbeCluster(kTestBitrate2); |
+ prober.CreateProbeCluster(kTestBitrate1, now_ms); |
+ prober.CreateProbeCluster(kTestBitrate2, now_ms); |
EXPECT_FALSE(prober.IsProbing()); |
prober.OnIncomingPacket(kProbeSize); |
@@ -78,7 +78,7 @@ TEST(BitrateProberTest, DoesntProbeWithoutRecentPackets) { |
int64_t now_ms = 0; |
EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms)); |
- prober.CreateProbeCluster(900000); |
+ prober.CreateProbeCluster(900000, now_ms); |
EXPECT_FALSE(prober.IsProbing()); |
prober.OnIncomingPacket(1000); |
@@ -111,7 +111,7 @@ TEST(BitrateProberTest, VerifyProbeSizeOnHighBitrate) { |
BitrateProber prober; |
constexpr unsigned kHighBitrateBps = 10000000; // 10 Mbps |
- prober.CreateProbeCluster(kHighBitrateBps); |
+ prober.CreateProbeCluster(kHighBitrateBps, 0); |
// Probe size should ensure a minimum of 1 ms interval. |
EXPECT_GT(prober.RecommendedMinProbeSize(), kHighBitrateBps / 8000); |
} |
@@ -123,7 +123,7 @@ TEST(BitrateProberTest, MinumumNumberOfProbingPackets) { |
constexpr int kBitrateBps = 100000; // 100 kbps |
constexpr int kPacketSizeBytes = 1000; |
- prober.CreateProbeCluster(kBitrateBps); |
+ prober.CreateProbeCluster(kBitrateBps, 0); |
prober.OnIncomingPacket(kPacketSizeBytes); |
for (int i = 0; i < 5; ++i) { |
EXPECT_TRUE(prober.IsProbing()); |
@@ -139,7 +139,7 @@ TEST(BitrateProberTest, ScaleBytesUsedForProbing) { |
constexpr int kPacketSizeBytes = 1000; |
constexpr int kExpectedBytesSent = kBitrateBps * 15 / 8000; |
- prober.CreateProbeCluster(kBitrateBps); |
+ prober.CreateProbeCluster(kBitrateBps, 0); |
prober.OnIncomingPacket(kPacketSizeBytes); |
int bytes_sent = 0; |
while (bytes_sent < kExpectedBytesSent) { |
@@ -151,4 +151,33 @@ TEST(BitrateProberTest, ScaleBytesUsedForProbing) { |
EXPECT_FALSE(prober.IsProbing()); |
} |
+TEST(BitrateProberTest, ProbeClusterTimeout) { |
+ BitrateProber prober; |
+ constexpr int kBitrateBps = 300000; // 300 kbps |
+ constexpr int kSmallPacketSize = 20; |
+ // Expecting two probe clusters of 5 packets each. |
+ constexpr int kExpectedBytesSent = 20 * 2 * 5; |
+ constexpr int64_t kTimeoutMs = 5000; |
+ |
+ int64_t now_ms = 0; |
+ prober.CreateProbeCluster(kBitrateBps, now_ms); |
+ prober.OnIncomingPacket(kSmallPacketSize); |
+ EXPECT_FALSE(prober.IsProbing()); |
+ now_ms += kTimeoutMs; |
+ prober.CreateProbeCluster(kBitrateBps / 10, now_ms); |
+ prober.OnIncomingPacket(kSmallPacketSize); |
+ EXPECT_FALSE(prober.IsProbing()); |
+ now_ms += 1; |
+ prober.CreateProbeCluster(kBitrateBps / 10, now_ms); |
+ prober.OnIncomingPacket(kSmallPacketSize); |
+ EXPECT_TRUE(prober.IsProbing()); |
+ int bytes_sent = 0; |
+ while (bytes_sent < kExpectedBytesSent) { |
+ ASSERT_TRUE(prober.IsProbing()); |
+ prober.ProbeSent(0, kSmallPacketSize); |
+ bytes_sent += kSmallPacketSize; |
+ } |
+ |
+ EXPECT_FALSE(prober.IsProbing()); |
+} |
} // namespace webrtc |