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 fd862e133f460fd25cf9d29a93700fbf75b2e27b..28f433216d97a222eeec7015a2dc578e54a949f7 100644 |
--- a/net/quic/quic_sent_packet_manager_test.cc |
+++ b/net/quic/quic_sent_packet_manager_test.cc |
@@ -785,12 +785,26 @@ TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeout) { |
// The first tail loss probe retransmits 1 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(2); |
EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
// The second tail loss probe retransmits 1 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()); |
// Ack the third and ensure the first two are still pending. |
@@ -826,13 +840,30 @@ TEST_F(QuicSentPacketManagerTest, TailLossProbeThenRTO) { |
// The first tail loss probe retransmits 1 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(101); |
+ 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()); |
// The second tail loss probe retransmits 1 packet. |
manager_.OnRetransmissionTimeout(); |
- RetransmitNextPacket(102); |
+ EXPECT_EQ(QuicTime::Delta::Zero(), |
+ manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); |
EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
+ EXPECT_TRUE(manager_.MaybeRetransmitTailLossProbe()); |
+ EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
+ RetransmitNextPacket(102); |
+ EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return( |
+ QuicTime::Delta::Infinite())); |
+ EXPECT_EQ(QuicTime::Delta::Infinite(), |
+ manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); |
// Advance the time enough to ensure all packets are RTO'd. |
clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1000)); |
@@ -1029,7 +1060,16 @@ TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeoutUnsentDataPacket) { |
// 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_)); |
@@ -1081,6 +1121,7 @@ TEST_F(QuicSentPacketManagerTest, RetransmissionTimeout) { |
} |
EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); |
+ EXPECT_FALSE(manager_.MaybeRetransmitTailLossProbe()); |
manager_.OnRetransmissionTimeout(); |
} |
@@ -1137,7 +1178,16 @@ TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeTailLossProbe) { |
// Retransmit the packet by invoking the retransmission timeout. |
clock_.AdvanceTime(expected_tlp_delay); |
manager_.OnRetransmissionTimeout(); |
+ EXPECT_EQ(QuicTime::Delta::Zero(), |
+ manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); |
+ EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
+ EXPECT_TRUE(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()); |
expected_time = clock_.Now().Add(expected_tlp_delay); |