Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Unified Diff: webrtc/modules/pacing/bitrate_prober_unittest.cc

Issue 1688703002: Prevent busy-looping PacedSender on small packets. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 c966f5cfa8deefb9abed4f977d4c91d0a400d47b..59ee479973d30bcc5e8fc6b161105dc60c60a50c 100644
--- a/webrtc/modules/pacing/bitrate_prober_unittest.cc
+++ b/webrtc/modules/pacing/bitrate_prober_unittest.cc
@@ -24,9 +24,10 @@ TEST(BitrateProberTest, VerifyStatesAndTimeBetweenProbes) {
prober.SetEnabled(true);
EXPECT_FALSE(prober.IsProbing());
- prober.MaybeInitializeProbe(300000);
+ prober.OnIncomingPacket(300000, 1000, now_ms);
EXPECT_TRUE(prober.IsProbing());
+ // First packet should probe as soon as possible.
EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms));
prober.PacketSent(now_ms, 1000);
@@ -48,4 +49,43 @@ TEST(BitrateProberTest, VerifyStatesAndTimeBetweenProbes) {
EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms));
EXPECT_FALSE(prober.IsProbing());
}
+
+TEST(BitrateProberTest, DoesntProbeWithoutRecentPackets) {
+ BitrateProber prober;
+ EXPECT_FALSE(prober.IsProbing());
+ int64_t now_ms = 0;
+ EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms));
+
+ prober.SetEnabled(true);
+ EXPECT_FALSE(prober.IsProbing());
+
+ prober.OnIncomingPacket(300000, 1000, now_ms);
+ EXPECT_TRUE(prober.IsProbing());
+ EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms));
+ // Let time pass, no large enough packets put into prober.
+ now_ms += 6000;
+ EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms));
+ // Insert a small packet, not a candidate for probing.
+ prober.OnIncomingPacket(300000, 100, now_ms);
+ prober.PacketSent(now_ms, 100);
+ EXPECT_EQ(-1, prober.TimeUntilNextProbe(now_ms));
+ // Insert a large-enough packet after downtime while probing should reset to
+ // perform a new probe since the requested one didn't finish.
+ prober.OnIncomingPacket(300000, 1000, now_ms);
+ EXPECT_EQ(0, prober.TimeUntilNextProbe(now_ms));
+ prober.PacketSent(now_ms, 1000);
+ // Next packet should be part of new probe and be sent with non-zero delay.
+ prober.OnIncomingPacket(300000, 1000, now_ms);
+ EXPECT_GT(prober.TimeUntilNextProbe(now_ms), 0);
+}
+
+TEST(BitrateProberTest, DoesntInitializeProbingForSmallPackets) {
+ BitrateProber prober;
+ prober.SetEnabled(true);
+ EXPECT_FALSE(prober.IsProbing());
+
+ prober.OnIncomingPacket(300000, 100, 0);
+ EXPECT_FALSE(prober.IsProbing());
+}
+
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698