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

Unified Diff: net/quic/core/congestion_control/bbr_sender_test.cc

Issue 2542273002: Ensure that BBR does not drop to exceedingly low pacing rates during the STARTUP phase. Protected … (Closed)
Patch Set: Created 4 years 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: net/quic/core/congestion_control/bbr_sender_test.cc
diff --git a/net/quic/core/congestion_control/bbr_sender_test.cc b/net/quic/core/congestion_control/bbr_sender_test.cc
index e85c86f4ae4677e59a169f597bc44e9e5ea40032..49f2e44d846d6bafe4abd346f1795f44507ed4bc 100644
--- a/net/quic/core/congestion_control/bbr_sender_test.cc
+++ b/net/quic/core/congestion_control/bbr_sender_test.cc
@@ -78,6 +78,8 @@ class BbrSenderTest : public ::testing::Test {
"BBR sender",
Perspective::IS_SERVER,
42) {
+ FLAGS_quic_bbr_faster_startup = true;
+
rtt_stats_ = bbr_sender_.connection()->sent_packet_manager().GetRttStats();
sender_ = new BbrSender(simulator_.GetClock(), rtt_stats_,
QuicSentPacketManagerPeer::GetUnackedPacketMap(
@@ -233,7 +235,7 @@ TEST_F(BbrSenderTest, PacketLossOnSmallBufferStartup) {
float loss_rate =
static_cast<float>(bbr_sender_.connection()->GetStats().packets_lost) /
bbr_sender_.connection()->GetStats().packets_sent;
- EXPECT_LE(loss_rate, 0.20);
+ EXPECT_LE(loss_rate, 0.27);
}
// Ensures the code transitions loss recovery states correctly (NOT_IN_RECOVERY
@@ -430,5 +432,36 @@ TEST_F(BbrSenderTest, InFlightAwareGainCycling) {
EXPECT_EQ(2, sender_->ExportDebugState().gain_cycle_index);
}
+// Ensure that the pacing rate does not drop at startup.
+TEST_F(BbrSenderTest, NoBandwidthDropOnStartup) {
+ CreateDefaultSetup();
+
+ const QuicTime::Delta timeout = QuicTime::Delta::FromSeconds(5);
+ bool simulator_result;
+
+ QuicBandwidth initial_rate = QuicBandwidth::FromBytesAndTimeDelta(
+ kInitialCongestionWindowPackets * kDefaultTCPMSS,
+ QuicTime::Delta::FromMicroseconds(rtt_stats_->initial_rtt_us()));
+ EXPECT_GE(sender_->PacingRate(0), initial_rate);
+
+ // Send a packet.
+ bbr_sender_.AddBytesToTransfer(1000);
+ simulator_result = simulator_.RunUntilOrTimeout(
+ [this]() { return receiver_.bytes_received() == 1000; }, timeout);
+ ASSERT_TRUE(simulator_result);
+ EXPECT_GE(sender_->PacingRate(0), initial_rate);
+
+ // Wait for a while.
+ simulator_.RunFor(QuicTime::Delta::FromSeconds(2));
+ EXPECT_GE(sender_->PacingRate(0), initial_rate);
+
+ // Send another packet.
+ bbr_sender_.AddBytesToTransfer(1000);
+ simulator_result = simulator_.RunUntilOrTimeout(
+ [this]() { return receiver_.bytes_received() == 2000; }, timeout);
+ ASSERT_TRUE(simulator_result);
+ EXPECT_GE(sender_->PacingRate(0), initial_rate);
+}
+
} // namespace test
} // namespace net

Powered by Google App Engine
This is Rietveld 408576698