| Index: net/quic/quic_sent_packet_manager_test.cc
|
| diff --git a/net/quic/quic_sent_packet_manager_test.cc b/net/quic/quic_sent_packet_manager_test.cc
|
| index 8a386bfd0d0c7db6dd41837ae0c2a9cb3e4d6268..bf5c5a68676303403b783f8d9f530f66aa3e7d7e 100644
|
| --- a/net/quic/quic_sent_packet_manager_test.cc
|
| +++ b/net/quic/quic_sent_packet_manager_test.cc
|
| @@ -148,11 +148,8 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
|
| Times(AnyNumber());
|
| }
|
|
|
| - // Retransmits a packet as though it was a TLP retransmission, because TLP
|
| - // leaves the |old_sequence_number| pending.
|
| - // TODO(ianswett): Test with transmission types besides TLP.
|
| - void RetransmitPacket(QuicPacketSequenceNumber old_sequence_number,
|
| - QuicPacketSequenceNumber new_sequence_number) {
|
| + void RetransmitAndSendPacket(QuicPacketSequenceNumber old_sequence_number,
|
| + QuicPacketSequenceNumber new_sequence_number) {
|
| QuicSentPacketManagerPeer::MarkForRetransmission(
|
| &manager_, old_sequence_number, TLP_RETRANSMISSION);
|
| EXPECT_TRUE(manager_.HasPendingRetransmissions());
|
| @@ -161,25 +158,20 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
|
| EXPECT_EQ(old_sequence_number, next_retransmission.sequence_number);
|
| EXPECT_EQ(TLP_RETRANSMISSION,
|
| next_retransmission.transmission_type);
|
| - manager_.OnRetransmittedPacket(old_sequence_number,
|
| - new_sequence_number);
|
| - EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission(
|
| - &manager_, new_sequence_number));
|
| - }
|
| -
|
| - void RetransmitAndSendPacket(QuicPacketSequenceNumber old_sequence_number,
|
| - QuicPacketSequenceNumber new_sequence_number) {
|
| - RetransmitPacket(old_sequence_number, new_sequence_number);
|
|
|
| EXPECT_CALL(*send_algorithm_,
|
| OnPacketSent(_, BytesInFlight(), new_sequence_number,
|
| kDefaultLength, HAS_RETRANSMITTABLE_DATA))
|
| .WillOnce(Return(true));
|
| - manager_.OnPacketSent(new_sequence_number,
|
| + SerializedPacket packet(CreatePacket(new_sequence_number, false));
|
| + manager_.OnPacketSent(&packet,
|
| + old_sequence_number,
|
| clock_.Now(),
|
| kDefaultLength,
|
| LOSS_RETRANSMISSION,
|
| HAS_RETRANSMITTABLE_DATA);
|
| + EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission(
|
| + &manager_, new_sequence_number));
|
| }
|
|
|
| SerializedPacket CreateDataPacket(QuicPacketSequenceNumber sequence_number) {
|
| @@ -210,8 +202,7 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
|
| OnPacketSent(_, BytesInFlight(), sequence_number, _, _))
|
| .Times(1).WillOnce(Return(true));
|
| SerializedPacket packet(CreateDataPacket(sequence_number));
|
| - manager_.OnSerializedPacket(packet);
|
| - manager_.OnPacketSent(sequence_number, clock_.Now(),
|
| + manager_.OnPacketSent(&packet, 0, clock_.Now(),
|
| packet.packet->length(), NOT_RETRANSMISSION,
|
| HAS_RETRANSMITTABLE_DATA);
|
| }
|
| @@ -225,8 +216,7 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
|
| packet.retransmittable_frames->AddStreamFrame(
|
| new QuicStreamFrame(1, false, 0, IOVector()));
|
| packet.retransmittable_frames->set_encryption_level(ENCRYPTION_NONE);
|
| - manager_.OnSerializedPacket(packet);
|
| - manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(),
|
| + manager_.OnPacketSent(&packet, 0, clock_.Now(),
|
| packet.packet->length(), NOT_RETRANSMISSION,
|
| HAS_RETRANSMITTABLE_DATA);
|
| }
|
| @@ -237,8 +227,7 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
|
| kDefaultLength, NO_RETRANSMITTABLE_DATA))
|
| .Times(1).WillOnce(Return(true));
|
| SerializedPacket packet(CreateFecPacket(sequence_number));
|
| - manager_.OnSerializedPacket(packet);
|
| - manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(),
|
| + manager_.OnPacketSent(&packet, 0, clock_.Now(),
|
| packet.packet->length(), NOT_RETRANSMISSION,
|
| NO_RETRANSMITTABLE_DATA);
|
| }
|
| @@ -249,8 +238,7 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
|
| kDefaultLength, NO_RETRANSMITTABLE_DATA))
|
| .Times(1).WillOnce(Return(false));
|
| SerializedPacket packet(CreatePacket(sequence_number, false));
|
| - manager_.OnSerializedPacket(packet);
|
| - manager_.OnPacketSent(sequence_number, clock_.Now(),
|
| + manager_.OnPacketSent(&packet, 0, clock_.Now(),
|
| packet.packet->length(), NOT_RETRANSMISSION,
|
| NO_RETRANSMITTABLE_DATA);
|
| }
|
| @@ -265,9 +253,9 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
|
| .Times(1).WillOnce(Return(true));
|
| const QuicSentPacketManager::PendingRetransmission pending =
|
| manager_.NextPendingRetransmission();
|
| - manager_.OnRetransmittedPacket(pending.sequence_number,
|
| - retransmission_sequence_number);
|
| - manager_.OnPacketSent(retransmission_sequence_number, clock_.Now(),
|
| + SerializedPacket packet(
|
| + CreatePacket(retransmission_sequence_number, false));
|
| + manager_.OnPacketSent(&packet, pending.sequence_number, clock_.Now(),
|
| kDefaultLength, pending.transmission_type,
|
| HAS_RETRANSMITTABLE_DATA);
|
| }
|
| @@ -282,10 +270,7 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
|
|
|
| TEST_F(QuicSentPacketManagerTest, IsUnacked) {
|
| VerifyUnackedPackets(NULL, 0);
|
| -
|
| - SerializedPacket serialized_packet(CreateDataPacket(1));
|
| -
|
| - manager_.OnSerializedPacket(serialized_packet);
|
| + SendDataPacket(1);
|
|
|
| QuicPacketSequenceNumber unacked[] = { 1 };
|
| VerifyUnackedPackets(unacked, arraysize(unacked));
|
| @@ -295,7 +280,7 @@ TEST_F(QuicSentPacketManagerTest, IsUnacked) {
|
|
|
| TEST_F(QuicSentPacketManagerTest, IsUnAckedRetransmit) {
|
| SendDataPacket(1);
|
| - RetransmitPacket(1, 2);
|
| + RetransmitAndSendPacket(1, 2);
|
|
|
| EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission(&manager_, 2));
|
| QuicPacketSequenceNumber unacked[] = { 1, 2 };
|
| @@ -345,30 +330,6 @@ TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) {
|
|
|
| TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPrevious) {
|
| SendDataPacket(1);
|
| - RetransmitPacket(1, 2);
|
| - QuicTime::Delta rtt = QuicTime::Delta::FromMilliseconds(15);
|
| - clock_.AdvanceTime(rtt);
|
| -
|
| - // Ack 1 but not 2.
|
| - ExpectAck(1);
|
| - QuicAckFrame ack_frame;
|
| - ack_frame.largest_observed = 1;
|
| - manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow());
|
| -
|
| - // 2 should be unacked, since it may provide an RTT measurement.
|
| - QuicPacketSequenceNumber unacked[] = { 2 };
|
| - VerifyUnackedPackets(unacked, arraysize(unacked));
|
| - EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
|
| - VerifyRetransmittablePackets(NULL, 0);
|
| -
|
| - // Verify that the retransmission alarm would not fire,
|
| - // since there is no retransmittable data outstanding.
|
| - EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime());
|
| - EXPECT_EQ(1u, stats_.packets_spuriously_retransmitted);
|
| -}
|
| -
|
| -TEST_F(QuicSentPacketManagerTest, RetransmitAndSendThenAckPrevious) {
|
| - SendDataPacket(1);
|
| RetransmitAndSendPacket(1, 2);
|
| QuicTime::Delta rtt = QuicTime::Delta::FromMilliseconds(15);
|
| clock_.AdvanceTime(rtt);
|
| @@ -390,11 +351,7 @@ TEST_F(QuicSentPacketManagerTest, RetransmitAndSendThenAckPrevious) {
|
|
|
| TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPreviousThenNackRetransmit) {
|
| SendDataPacket(1);
|
| - RetransmitPacket(1, 2);
|
| - EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 2, _, _))
|
| - .WillOnce(Return(true));
|
| - manager_.OnPacketSent(2, clock_.ApproximateNow(), kDefaultLength,
|
| - LOSS_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
|
| + RetransmitAndSendPacket(1, 2);
|
| QuicTime::Delta rtt = QuicTime::Delta::FromMilliseconds(15);
|
| clock_.AdvanceTime(rtt);
|
|
|
| @@ -648,16 +605,12 @@ TEST_F(QuicSentPacketManagerTest, GetLeastUnacked) {
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, GetLeastUnackedUnacked) {
|
| - SerializedPacket serialized_packet(CreateDataPacket(1));
|
| -
|
| - manager_.OnSerializedPacket(serialized_packet);
|
| + SendDataPacket(1);
|
| EXPECT_EQ(1u, manager_.GetLeastUnacked());
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, GetLeastUnackedUnackedFec) {
|
| - SerializedPacket serialized_packet(CreateFecPacket(1));
|
| -
|
| - manager_.OnSerializedPacket(serialized_packet);
|
| + SendFecPacket(1);
|
| EXPECT_EQ(1u, manager_.GetLeastUnacked());
|
| }
|
|
|
| @@ -690,29 +643,17 @@ TEST_F(QuicSentPacketManagerTest, GetLeastUnackedAndDiscard) {
|
| TEST_F(QuicSentPacketManagerTest, GetSentTime) {
|
| VerifyUnackedPackets(NULL, 0);
|
|
|
| - SerializedPacket serialized_packet(CreateFecPacket(1));
|
| - manager_.OnSerializedPacket(serialized_packet);
|
| - EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 1, _, _))
|
| - .Times(1).WillOnce(Return(true));
|
| - manager_.OnPacketSent(1, QuicTime::Zero(), kDefaultLength, NOT_RETRANSMISSION,
|
| - NO_RETRANSMITTABLE_DATA);
|
| -
|
| - SerializedPacket serialized_packet2(CreateFecPacket(2));
|
| - QuicTime sent_time = QuicTime::Zero().Add(QuicTime::Delta::FromSeconds(1));
|
| - manager_.OnSerializedPacket(serialized_packet2);
|
| - EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 2, _, _))
|
| - .Times(1).WillOnce(Return(true));
|
| - manager_.OnPacketSent(2, sent_time, kDefaultLength, NOT_RETRANSMISSION,
|
| - NO_RETRANSMITTABLE_DATA);
|
| -
|
| + QuicTime sent_time = clock_.Now();
|
| + SendFecPacket(1);
|
| + QuicTime sent_time2 = clock_.Now();
|
| + SendFecPacket(2);
|
| QuicPacketSequenceNumber unacked[] = { 1, 2 };
|
| VerifyUnackedPackets(unacked, arraysize(unacked));
|
| VerifyRetransmittablePackets(NULL, 0);
|
|
|
| EXPECT_TRUE(manager_.HasUnackedPackets());
|
| - EXPECT_EQ(QuicTime::Zero(),
|
| - QuicSentPacketManagerPeer::GetSentTime(&manager_, 1));
|
| - EXPECT_EQ(sent_time, QuicSentPacketManagerPeer::GetSentTime(&manager_, 2));
|
| + EXPECT_EQ(sent_time, QuicSentPacketManagerPeer::GetSentTime(&manager_, 1));
|
| + EXPECT_EQ(sent_time2, QuicSentPacketManagerPeer::GetSentTime(&manager_, 2));
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, AckAckAndUpdateRtt) {
|
| @@ -1020,13 +961,12 @@ TEST_F(QuicSentPacketManagerTest, CryptoHandshakeSpuriousRetransmission) {
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, CryptoHandshakeTimeoutUnsentDataPacket) {
|
| - // Send 2 crypto packets and serialize 1 data packet.
|
| + // Send 2 crypto packets and 1 data packet.
|
| const size_t kNumSentCryptoPackets = 2;
|
| for (size_t i = 1; i <= kNumSentCryptoPackets; ++i) {
|
| SendCryptoPacket(i);
|
| }
|
| - SerializedPacket packet(CreateDataPacket(3));
|
| - manager_.OnSerializedPacket(packet);
|
| + SendDataPacket(3);
|
| EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_));
|
|
|
| // Retransmit 2 crypto packets, but not the serialized packet.
|
| @@ -1092,32 +1032,6 @@ TEST_F(QuicSentPacketManagerTest,
|
| VerifyRetransmittablePackets(NULL, 0);
|
| }
|
|
|
| -TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeoutUnsentDataPacket) {
|
| - QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2);
|
| - // Serialize two data packets and send the latter.
|
| - SerializedPacket packet(CreateDataPacket(1));
|
| - manager_.OnSerializedPacket(packet);
|
| - SendDataPacket(2);
|
| - EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_));
|
| - EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
|
| -
|
| - // Retransmit 1 unacked packets, but not the first serialized packet.
|
| - manager_.OnRetransmissionTimeout();
|
| - EXPECT_EQ(QuicTime::Delta::Zero(),
|
| - manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
|
| - EXPECT_FALSE(manager_.HasPendingRetransmissions());
|
| - manager_.MaybeRetransmitTailLossProbe();
|
| - EXPECT_TRUE(manager_.HasPendingRetransmissions());
|
| - RetransmitNextPacket(3);
|
| - EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return(
|
| - QuicTime::Delta::Infinite()));
|
| - EXPECT_EQ(QuicTime::Delta::Infinite(),
|
| - manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
|
| - EXPECT_FALSE(manager_.HasPendingRetransmissions());
|
| - EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_));
|
| - EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
|
| -}
|
| -
|
| TEST_F(QuicSentPacketManagerTest, ResetRecentMinRTTWithEmptyWindow) {
|
| QuicTime::Delta min_rtt = QuicTime::Delta::FromMilliseconds(50);
|
| QuicSentPacketManagerPeer::GetRttStats(&manager_)->UpdateRtt(
|
| @@ -1372,24 +1286,6 @@ TEST_F(QuicSentPacketManagerTest, GetLossDelay) {
|
| manager_.OnRetransmissionTimeout();
|
| }
|
|
|
| -TEST_F(QuicSentPacketManagerTest, NegotiateTimeLossDetection) {
|
| - EXPECT_EQ(kNack,
|
| - QuicSentPacketManagerPeer::GetLossAlgorithm(
|
| - &manager_)->GetLossDetectionType());
|
| -
|
| - QuicConfig config;
|
| - QuicConfigPeer::SetReceivedLossDetection(&config, kTIME);
|
| - EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
|
| - EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange(_));
|
| - EXPECT_CALL(*send_algorithm_, GetCongestionWindow())
|
| - .WillOnce(Return(100 * kDefaultTCPMSS));
|
| - manager_.SetFromConfig(config);
|
| -
|
| - EXPECT_EQ(kTime,
|
| - QuicSentPacketManagerPeer::GetLossAlgorithm(
|
| - &manager_)->GetLossDetectionType());
|
| -}
|
| -
|
| TEST_F(QuicSentPacketManagerTest, NegotiateTimeLossDetectionFromOptions) {
|
| EXPECT_EQ(kNack,
|
| QuicSentPacketManagerPeer::GetLossAlgorithm(
|
|
|