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