| Index: net/quic/congestion_control/pacing_sender_test.cc
|
| diff --git a/net/quic/congestion_control/pacing_sender_test.cc b/net/quic/congestion_control/pacing_sender_test.cc
|
| index 1d1fe8f548ff989a4dfe8003e25f391c4f67b2f6..026905d8781fc1611a2d7fedf841c88a5f4a3183 100644
|
| --- a/net/quic/congestion_control/pacing_sender_test.cc
|
| +++ b/net/quic/congestion_control/pacing_sender_test.cc
|
| @@ -133,6 +133,9 @@ TEST_F(PacingSenderTest, SendNow) {
|
| }
|
|
|
| TEST_F(PacingSenderTest, VariousSending) {
|
| + // Start the test in slow start.
|
| + EXPECT_CALL(*mock_sender_, InSlowStart()).WillRepeatedly(Return(true));
|
| +
|
| // Configure bandwith of 1 packet per 2 ms, for which the pacing rate
|
| // will be 1 packet per 1 ms.
|
| EXPECT_CALL(*mock_sender_, BandwidthEstimate())
|
| @@ -204,12 +207,82 @@ TEST_F(PacingSenderTest, VariousSending) {
|
| CheckPacketIsDelayed(QuicTime::Delta::FromMilliseconds(2));
|
| }
|
|
|
| +TEST_F(PacingSenderTest, CongestionAvoidanceSending) {
|
| + // Start the test in congestion avoidance.
|
| + EXPECT_CALL(*mock_sender_, InSlowStart()).WillRepeatedly(Return(false));
|
| +
|
| + // Configure bandwith of 1 packet per 2 ms, for which the pacing rate
|
| + // will be 1 packet per 1 ms.
|
| + EXPECT_CALL(*mock_sender_, BandwidthEstimate())
|
| + .WillRepeatedly(Return(QuicBandwidth::FromBytesAndTimeDelta(
|
| + kMaxPacketSize, QuicTime::Delta::FromMilliseconds(2))));
|
| +
|
| + // Send a whole pile of packets, and verify that they are not paced.
|
| + for (int i = 0 ; i < 1000; ++i) {
|
| + CheckPacketIsSentImmediately();
|
| + }
|
| +
|
| + // Now update the RTT and verify that packets are actually paced.
|
| + EXPECT_CALL(*mock_sender_, OnCongestionEvent(true, kBytesInFlight, _, _));
|
| + SendAlgorithmInterface::CongestionMap empty_map;
|
| + pacing_sender_->OnCongestionEvent(true, kBytesInFlight, empty_map, empty_map);
|
| +
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsSentImmediately();
|
| +
|
| + // The first packet was a "make up", then we sent two packets "into the
|
| + // future", so the delay should be 2200us.
|
| + CheckPacketIsDelayed(QuicTime::Delta::FromMicroseconds(2200));
|
| +
|
| + // Wake up on time.
|
| + clock_.AdvanceTime(QuicTime::Delta::FromMicroseconds(2200));
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsDelayed(QuicTime::Delta::FromMicroseconds(1600));
|
| + CheckAckIsSentImmediately();
|
| +
|
| + // Wake up late.
|
| + clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(4));
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsDelayed(QuicTime::Delta::FromMicroseconds(2400));
|
| +
|
| + // Wake up really late.
|
| + clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(8));
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsDelayed(QuicTime::Delta::FromMicroseconds(2400));
|
| +
|
| + // Wake up really late again, but application pause partway through.
|
| + clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(8));
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsSentImmediately();
|
| + clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(100));
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsDelayed(QuicTime::Delta::FromMicroseconds(2200));
|
| +
|
| + // Wake up too early.
|
| + CheckPacketIsDelayed(QuicTime::Delta::FromMicroseconds(2200));
|
| +
|
| + // Wake up early, but after enough time has passed to permit a send.
|
| + clock_.AdvanceTime(QuicTime::Delta::FromMicroseconds(1200));
|
| + CheckPacketIsSentImmediately();
|
| + CheckPacketIsDelayed(QuicTime::Delta::FromMicroseconds(2600));
|
| +}
|
| +
|
| TEST_F(PacingSenderTest, InitialBurst) {
|
| pacing_sender_.reset();
|
| mock_sender_ = new StrictMock<MockSendAlgorithm>();
|
| pacing_sender_.reset(new PacingSender(mock_sender_,
|
| QuicTime::Delta::FromMilliseconds(1),
|
| 10));
|
| + // Start the test in slow start.
|
| + EXPECT_CALL(*mock_sender_, InSlowStart()).WillRepeatedly(Return(true));
|
|
|
| // Configure bandwith of 1 packet per 2 ms, for which the pacing rate
|
| // will be 1 packet per 1 ms.
|
|
|