| 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 b0e861d921a8a465a3fec2fe9ecffff1adf15033..14ab403f0dea7b518d0eef831e039ed86b21e444 100644
|
| --- a/net/quic/quic_sent_packet_manager_test.cc
|
| +++ b/net/quic/quic_sent_packet_manager_test.cc
|
| @@ -32,6 +32,8 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
|
| QuicSentPacketManagerPeer::SetSendAlgorithm(&manager_, send_algorithm_);
|
| // Disable tail loss probes for most tests.
|
| QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 0);
|
| + // Advance the time 1s so the send times are never QuicTime::Zero.
|
| + clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1000));
|
| }
|
|
|
| ~QuicSentPacketManagerTest() {
|
| @@ -242,12 +244,15 @@ 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.
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _, _));
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(rtt));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _));
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = 1;
|
| - EXPECT_TRUE(manager_.OnIncomingAck(received_info, QuicTime::Zero()));
|
| + EXPECT_TRUE(manager_.OnIncomingAck(received_info, clock_.ApproximateNow()));
|
|
|
| // 2 remains unacked, but no packets have retransmittable data.
|
| QuicPacketSequenceNumber unacked[] = { 2 };
|
| @@ -267,31 +272,39 @@ TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPreviousThenNackRetransmit) {
|
| .WillOnce(Return(true));
|
| manager_.OnPacketSent(2, clock_.ApproximateNow(), 1000,
|
| NACK_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
|
| + QuicTime::Delta rtt = QuicTime::Delta::FromMilliseconds(15);
|
| + clock_.AdvanceTime(rtt);
|
|
|
| // First, ACK packet 1 which makes packet 2 non-retransmittable.
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _, _));
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(rtt));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _));
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = 1;
|
| - EXPECT_TRUE(manager_.OnIncomingAck(received_info, QuicTime::Zero()));
|
| + EXPECT_TRUE(manager_.OnIncomingAck(received_info, clock_.ApproximateNow()));
|
|
|
| SendDataPacket(3);
|
| SendDataPacket(4);
|
| SendDataPacket(5);
|
| + clock_.AdvanceTime(rtt);
|
| +
|
| // Next, NACK packet 2 three times.
|
| received_info.largest_observed = 3;
|
| received_info.missing_packets.insert(2);
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(3, _, _));
|
| - EXPECT_TRUE(manager_.OnIncomingAck(received_info, QuicTime::Zero()));
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(rtt));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(3, _));
|
| + EXPECT_TRUE(manager_.OnIncomingAck(received_info, clock_.ApproximateNow()));
|
|
|
| received_info.largest_observed = 4;
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _, _));
|
| - EXPECT_TRUE(manager_.OnIncomingAck(received_info, QuicTime::Zero()));
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(rtt));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _));
|
| + EXPECT_TRUE(manager_.OnIncomingAck(received_info, clock_.ApproximateNow()));
|
|
|
| received_info.largest_observed = 5;
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _, _));
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(rtt));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _));
|
| EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(2, _));
|
| EXPECT_CALL(*send_algorithm_, OnPacketLost(2, _));
|
| - EXPECT_TRUE(manager_.OnIncomingAck(received_info, QuicTime::Zero()));
|
| + EXPECT_TRUE(manager_.OnIncomingAck(received_info, clock_.ApproximateNow()));
|
|
|
| // No packets remain unacked.
|
| VerifyUnackedPackets(NULL, 0);
|
| @@ -317,7 +330,8 @@ TEST_F(QuicSentPacketManagerTest, RetransmitTwiceThenAckPreviousBeforeSend) {
|
| // send algorithm is not informed that it has been ACK'd.
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = 1;
|
| - EXPECT_TRUE(manager_.OnIncomingAck(received_info, QuicTime::Zero()));
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(QuicTime::Delta::Zero()));
|
| + EXPECT_TRUE(manager_.OnIncomingAck(received_info, clock_.ApproximateNow()));
|
|
|
| // Since 2 was marked for retransmit, when 1 is acked, 2 is discarded.
|
| VerifyUnackedPackets(NULL, 0);
|
| @@ -333,12 +347,15 @@ TEST_F(QuicSentPacketManagerTest, RetransmitTwiceThenAckFirst) {
|
| SendDataPacket(1);
|
| RetransmitPacket(1, 2);
|
| RetransmitPacket(2, 3);
|
| + QuicTime::Delta rtt = QuicTime::Delta::FromMilliseconds(15);
|
| + clock_.AdvanceTime(rtt);
|
|
|
| // Ack 1 but not 2 or 3.
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _, _));
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(rtt));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _));
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = 1;
|
| - manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
| + manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
|
|
|
| // 3 remains unacked, but no packets have retransmittable data.
|
| QuicPacketSequenceNumber unacked[] = { 3 };
|
| @@ -643,7 +660,8 @@ TEST_F(QuicSentPacketManagerTest, NackRetransmit1Packet) {
|
| received_info.missing_packets.insert(1);
|
| for (QuicPacketSequenceNumber i = 1; i <= 3; ++i) {
|
| received_info.largest_observed = i + 1;
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(i + 1, _, _)).Times(1);
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(i + 1, _)).Times(1);
|
| if (i == 3) {
|
| EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)).Times(1);
|
| EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)).Times(1);
|
| @@ -671,7 +689,8 @@ TEST_F(QuicSentPacketManagerTest, NackRetransmit1PacketWith1StretchAck) {
|
| QuicTime::Delta::FromMilliseconds(5);
|
| received_info.missing_packets.insert(1);
|
| received_info.largest_observed = kNumSentPackets;
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _, _)).Times(3);
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _)).Times(3);
|
| EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)).Times(1);
|
| EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)).Times(1);
|
| manager_.OnIncomingAck(received_info, clock_.Now());
|
| @@ -696,7 +715,8 @@ TEST_F(QuicSentPacketManagerTest, NackRetransmit1PacketSingleAck) {
|
| received_info.missing_packets.insert(2);
|
| received_info.missing_packets.insert(3);
|
| received_info.largest_observed = 4;
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _, _)).Times(1);
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _)).Times(1);
|
| EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)).Times(1);
|
| EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)).Times(1);
|
| manager_.OnIncomingAck(received_info, clock_.Now());
|
| @@ -718,7 +738,8 @@ TEST_F(QuicSentPacketManagerTest, EarlyRetransmit1Packet) {
|
| QuicTime::Delta::FromMilliseconds(5);
|
| received_info.missing_packets.insert(1);
|
| received_info.largest_observed = kNumSentPackets;
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(kNumSentPackets, _, _)).Times(1);
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(kNumSentPackets, _)).Times(1);
|
| EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)).Times(1);
|
| EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)).Times(1);
|
| manager_.OnIncomingAck(received_info, clock_.Now());
|
| @@ -744,7 +765,8 @@ TEST_F(QuicSentPacketManagerTest, DontEarlyRetransmitPacket) {
|
| received_info.missing_packets.insert(3);
|
| received_info.missing_packets.insert(4);
|
| received_info.largest_observed = kNumSentPackets;
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _, _)).Times(1);
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _)).Times(1);
|
| EXPECT_CALL(*send_algorithm_, OnPacketLost(_, _)).Times(2);
|
| EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(2);
|
| manager_.OnIncomingAck(received_info, clock_.Now());
|
| @@ -768,8 +790,9 @@ TEST_F(QuicSentPacketManagerTest, NackRetransmit2Packets) {
|
| for (size_t i = 1; i < kNumSentPackets; ++i) {
|
| received_info.missing_packets.insert(i);
|
| }
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
|
| EXPECT_CALL(*send_algorithm_,
|
| - OnPacketAcked(kNumSentPackets, _, _)).Times(1);
|
| + OnPacketAcked(kNumSentPackets, _)).Times(1);
|
| EXPECT_CALL(*send_algorithm_, OnPacketLost(_, _)).Times(2);
|
| EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(2);
|
| manager_.OnIncomingAck(received_info, clock_.Now());
|
| @@ -839,8 +862,9 @@ TEST_F(QuicSentPacketManagerTest, NackTwiceThenAck) {
|
| received_info.largest_observed = i + 1;
|
| received_info.delta_time_largest_observed =
|
| QuicTime::Delta::FromMilliseconds(5);
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
|
| EXPECT_CALL(*send_algorithm_,
|
| - OnPacketAcked(_, _, _)).Times(i == 3 ? 2 : 1);
|
| + OnPacketAcked(_, _)).Times(i == 3 ? 2 : 1);
|
| manager_.OnIncomingAck(received_info, clock_.Now());
|
| EXPECT_FALSE(manager_.HasPendingRetransmissions());
|
| // The nack count remains at 2 when the packet is acked.
|
| @@ -855,8 +879,9 @@ TEST_F(QuicSentPacketManagerTest, Rtt) {
|
| SendDataPacket(sequence_number);
|
| clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20));
|
|
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt));
|
| EXPECT_CALL(*send_algorithm_,
|
| - OnPacketAcked(sequence_number, _, expected_rtt)).Times(1);
|
| + OnPacketAcked(sequence_number, _)).Times(1);
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = sequence_number;
|
| received_info.delta_time_largest_observed =
|
| @@ -874,8 +899,9 @@ TEST_F(QuicSentPacketManagerTest, RttWithInvalidDelta) {
|
| SendDataPacket(sequence_number);
|
| clock_.AdvanceTime(expected_rtt);
|
|
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt));
|
| EXPECT_CALL(*send_algorithm_,
|
| - OnPacketAcked(sequence_number, _, expected_rtt)).Times(1);
|
| + OnPacketAcked(sequence_number, _)).Times(1);
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = sequence_number;
|
| received_info.delta_time_largest_observed =
|
| @@ -892,8 +918,9 @@ TEST_F(QuicSentPacketManagerTest, RttWithInfiniteDelta) {
|
| SendDataPacket(sequence_number);
|
| clock_.AdvanceTime(expected_rtt);
|
|
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt));
|
| EXPECT_CALL(*send_algorithm_,
|
| - OnPacketAcked(sequence_number, _, expected_rtt)).Times(1);
|
| + OnPacketAcked(sequence_number, _)).Times(1);
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = sequence_number;
|
| received_info.delta_time_largest_observed = QuicTime::Delta::Infinite();
|
| @@ -909,7 +936,8 @@ TEST_F(QuicSentPacketManagerTest, RttZeroDelta) {
|
| SendDataPacket(sequence_number);
|
| clock_.AdvanceTime(expected_rtt);
|
|
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(sequence_number, _, expected_rtt))
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(sequence_number, _))
|
| .Times(1);
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = sequence_number;
|
| @@ -937,7 +965,8 @@ TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeout) {
|
|
|
| // Ack the third and ensure the first two are considered lost, but they were
|
| // already abandoned, so that won't occur again.
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(3, _, _));
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(3, _));
|
| EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(2);
|
| EXPECT_CALL(*send_algorithm_, OnPacketLost(_, _)).Times(2);
|
| ReceivedPacketInfo received_info;
|
| @@ -1007,7 +1036,8 @@ TEST_F(QuicSentPacketManagerTest, CryptoHandshakeTimeout) {
|
|
|
| // Now ack the two crypto packets and the speculatively encrypted request,
|
| // and ensure the first four crypto packets get abandoned, but not lost.
|
| - EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _, _)).Times(5);
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _)).Times(5);
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = 9;
|
| received_info.missing_packets.insert(1);
|
| @@ -1155,6 +1185,16 @@ TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeRTO) {
|
| // The delay should double the second time.
|
| expected_time = clock_.Now().Add(expected_rto_delay).Add(expected_rto_delay);
|
| EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
|
| +
|
| + // Ack a packet and ensure the RTO goes back to the original value.
|
| + ReceivedPacketInfo received_info;
|
| + received_info.largest_observed = 2;
|
| + received_info.missing_packets.insert(1);
|
| + EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
|
| + manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
|
| +
|
| + expected_time = clock_.Now().Add(expected_rto_delay);
|
| + EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, GetTransmissionDelayMin) {
|
|
|