| 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
|
|
|