| 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 1a0885a6faad3a99dcf6589417959756499ba933..0429a26cb7b692a9cf98279703795d49b339e767 100644
|
| --- a/net/quic/quic_sent_packet_manager_test.cc
|
| +++ b/net/quic/quic_sent_packet_manager_test.cc
|
| @@ -41,7 +41,6 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
|
| if (num_packets == 0) {
|
| EXPECT_FALSE(manager_.HasUnackedPackets());
|
| EXPECT_EQ(0u, manager_.GetNumRetransmittablePackets());
|
| - EXPECT_FALSE(manager_.HasUnackedPackets());
|
| return;
|
| }
|
|
|
| @@ -113,6 +112,32 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
|
| packets_.back(), 0u, NULL);
|
| }
|
|
|
| + void SendDataPacket(QuicPacketSequenceNumber sequence_number) {
|
| + EXPECT_CALL(*send_algorithm_, OnPacketSent(_, sequence_number, _, _, _))
|
| + .Times(1).WillOnce(Return(true));
|
| + SerializedPacket packet(CreatePacket(sequence_number));
|
| + manager_.OnSerializedPacket(packet);
|
| + manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(),
|
| + packet.packet->length(), NOT_RETRANSMISSION,
|
| + HAS_RETRANSMITTABLE_DATA);
|
| + }
|
| +
|
| + // Based on QuicConnection's WritePendingRetransmissions.
|
| + void RetransmitNextPacket(
|
| + QuicPacketSequenceNumber retransmission_sequence_number) {
|
| + EXPECT_TRUE(manager_.HasPendingRetransmissions());
|
| + EXPECT_CALL(*send_algorithm_,
|
| + OnPacketSent(_, retransmission_sequence_number, _, _, _))
|
| + .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_.ApproximateNow(), 1000,
|
| + pending.transmission_type, HAS_RETRANSMITTABLE_DATA);
|
| + }
|
| +
|
| testing::StrictMock<MockHelper> helper_;
|
| QuicSentPacketManager manager_;
|
| vector<QuicPacket*> packets_;
|
| @@ -125,7 +150,7 @@ TEST_F(QuicSentPacketManagerTest, IsUnacked) {
|
|
|
| SerializedPacket serialized_packet(CreatePacket(1));
|
|
|
| - manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
|
| + manager_.OnSerializedPacket(serialized_packet);
|
|
|
| QuicPacketSequenceNumber unacked[] = { 1 };
|
| VerifyUnackedPackets(unacked, arraysize(unacked));
|
| @@ -136,7 +161,7 @@ TEST_F(QuicSentPacketManagerTest, IsUnacked) {
|
| TEST_F(QuicSentPacketManagerTest, IsUnAckedRetransmit) {
|
| SerializedPacket serialized_packet(CreatePacket(1));
|
|
|
| - manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
|
| + manager_.OnSerializedPacket(serialized_packet);
|
| RetransmitPacket(1, 2);
|
|
|
| EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission(&manager_, 2));
|
| @@ -149,14 +174,13 @@ TEST_F(QuicSentPacketManagerTest, IsUnAckedRetransmit) {
|
| TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) {
|
| SerializedPacket serialized_packet(CreatePacket(1));
|
|
|
| - manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
|
| + manager_.OnSerializedPacket(serialized_packet);
|
| RetransmitPacket(1, 2);
|
|
|
| // Ack 2 but not 1.
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = 2;
|
| received_info.missing_packets.insert(1);
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(3u));
|
| manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
|
|
| // No unacked packets remain.
|
| @@ -167,7 +191,7 @@ TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) {
|
| TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) {
|
| SerializedPacket serialized_packet(CreatePacket(1));
|
|
|
| - manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
|
| + manager_.OnSerializedPacket(serialized_packet);
|
| QuicSentPacketManagerPeer::MarkForRetransmission(
|
| &manager_, 1, NACK_RETRANSMISSION);
|
| EXPECT_TRUE(manager_.HasPendingRetransmissions());
|
| @@ -175,7 +199,6 @@ TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) {
|
| // Ack 1.
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = 1;
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(2u));
|
| manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
|
|
| // There should no longer be a pending retransmission.
|
| @@ -189,44 +212,56 @@ TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) {
|
| TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPrevious) {
|
| SerializedPacket serialized_packet(CreatePacket(1));
|
|
|
| - manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
|
| + manager_.OnSerializedPacket(serialized_packet);
|
| RetransmitPacket(1, 2);
|
|
|
| // Ack 1 but not 2.
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = 1;
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(3u));
|
| manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
|
|
| // 2 remains unacked, but no packets have retransmittable data.
|
| QuicPacketSequenceNumber unacked[] = { 2 };
|
| VerifyUnackedPackets(unacked, arraysize(unacked));
|
| VerifyRetransmittablePackets(NULL, 0);
|
| +
|
| + // Verify that if the retransmission alarm does fire to abandon packet 2,
|
| + // the sent packet manager is not notified, since there is no retransmittable
|
| + // data outstanding.
|
| + EXPECT_CALL(*send_algorithm_, RetransmissionDelay())
|
| + .WillOnce(Return(QuicTime::Delta::FromMilliseconds(1)));
|
| + manager_.OnRetransmissionTimeout();
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, RetransmitTwiceThenAckFirst) {
|
| SerializedPacket serialized_packet(CreatePacket(1));
|
|
|
| - manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
|
| + manager_.OnSerializedPacket(serialized_packet);
|
| RetransmitPacket(1, 2);
|
| RetransmitPacket(2, 3);
|
|
|
| // Ack 1 but not 2 or 3.
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = 1;
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(4u));
|
| manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
|
|
| // 3 remains unacked, but no packets have retransmittable data.
|
| QuicPacketSequenceNumber unacked[] = { 3 };
|
| VerifyUnackedPackets(unacked, arraysize(unacked));
|
| VerifyRetransmittablePackets(NULL, 0);
|
| +
|
| + // Verify that if the retransmission alarm does fire to abandon packet 3,
|
| + // the sent packet manager is not notified, since there is no retransmittable
|
| + // data outstanding.
|
| + EXPECT_CALL(*send_algorithm_, RetransmissionDelay())
|
| + .WillOnce(Return(QuicTime::Delta::FromMilliseconds(1)));
|
| + manager_.OnRetransmissionTimeout();
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, TruncatedAck) {
|
| SerializedPacket serialized_packet(CreatePacket(1));
|
|
|
| - manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
|
| + manager_.OnSerializedPacket(serialized_packet);
|
| RetransmitPacket(1, 2);
|
| RetransmitPacket(2, 3);
|
| RetransmitPacket(3, 4);
|
| @@ -237,7 +272,6 @@ TEST_F(QuicSentPacketManagerTest, TruncatedAck) {
|
| received_info.missing_packets.insert(1);
|
| received_info.missing_packets.insert(2);
|
| received_info.is_truncated = true;
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(5u));
|
| manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
|
|
| // High water mark will be raised.
|
| @@ -248,16 +282,15 @@ TEST_F(QuicSentPacketManagerTest, TruncatedAck) {
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
|
| - manager_.OnSerializedPacket(CreatePacket(1), QuicTime::Zero());
|
| - manager_.OnSerializedPacket(CreatePacket(2), QuicTime::Zero());
|
| - manager_.OnSerializedPacket(CreatePacket(3), QuicTime::Zero());
|
| + manager_.OnSerializedPacket(CreatePacket(1));
|
| + manager_.OnSerializedPacket(CreatePacket(2));
|
| + manager_.OnSerializedPacket(CreatePacket(3));
|
|
|
| {
|
| // Ack packets 1 and 3.
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = 3;
|
| received_info.missing_packets.insert(2);
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(4u));
|
| manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
|
|
| QuicPacketSequenceNumber unacked[] = { 2 };
|
| @@ -266,8 +299,8 @@ TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
|
| VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
|
| }
|
|
|
| - manager_.OnSerializedPacket(CreatePacket(4), QuicTime::Zero());
|
| - manager_.OnSerializedPacket(CreatePacket(5), QuicTime::Zero());
|
| + manager_.OnSerializedPacket(CreatePacket(4));
|
| + manager_.OnSerializedPacket(CreatePacket(5));
|
|
|
| {
|
| // Ack packets 5.
|
| @@ -275,7 +308,6 @@ TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
|
| received_info.largest_observed = 5;
|
| received_info.missing_packets.insert(2);
|
| received_info.missing_packets.insert(4);
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(6u));
|
| manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
|
|
| QuicPacketSequenceNumber unacked[] = { 2, 4 };
|
| @@ -284,8 +316,8 @@ TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
|
| VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
|
| }
|
|
|
| - manager_.OnSerializedPacket(CreatePacket(6), QuicTime::Zero());
|
| - manager_.OnSerializedPacket(CreatePacket(7), QuicTime::Zero());
|
| + manager_.OnSerializedPacket(CreatePacket(6));
|
| + manager_.OnSerializedPacket(CreatePacket(7));
|
|
|
| {
|
| // Ack packets 7.
|
| @@ -294,7 +326,6 @@ TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
|
| received_info.missing_packets.insert(2);
|
| received_info.missing_packets.insert(4);
|
| received_info.missing_packets.insert(6);
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(8u));
|
| manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
|
|
| QuicPacketSequenceNumber unacked[] = { 2, 4, 6 };
|
| @@ -304,8 +335,8 @@ TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
|
| }
|
|
|
| RetransmitPacket(2, 8);
|
| - manager_.OnSerializedPacket(CreatePacket(9), QuicTime::Zero());
|
| - manager_.OnSerializedPacket(CreatePacket(10), QuicTime::Zero());
|
| + manager_.OnSerializedPacket(CreatePacket(9));
|
| + manager_.OnSerializedPacket(CreatePacket(10));
|
|
|
| {
|
| // Ack packet 10.
|
| @@ -316,7 +347,6 @@ TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
|
| received_info.missing_packets.insert(6);
|
| received_info.missing_packets.insert(8);
|
| received_info.missing_packets.insert(9);
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(11u));
|
| manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
|
|
| QuicPacketSequenceNumber unacked[] = { 2, 4, 6, 8, 9 };
|
| @@ -327,8 +357,8 @@ TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
|
|
|
|
|
| RetransmitPacket(4, 11);
|
| - manager_.OnSerializedPacket(CreatePacket(12), QuicTime::Zero());
|
| - manager_.OnSerializedPacket(CreatePacket(13), QuicTime::Zero());
|
| + manager_.OnSerializedPacket(CreatePacket(12));
|
| + manager_.OnSerializedPacket(CreatePacket(13));
|
|
|
| {
|
| // Ack packet 13.
|
| @@ -341,7 +371,6 @@ TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
|
| received_info.missing_packets.insert(9);
|
| received_info.missing_packets.insert(11);
|
| received_info.missing_packets.insert(12);
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(14u));
|
| manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
|
|
| QuicPacketSequenceNumber unacked[] = { 2, 4, 6, 8, 9, 11, 12 };
|
| @@ -351,8 +380,8 @@ TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
|
| }
|
|
|
| RetransmitPacket(6, 14);
|
| - manager_.OnSerializedPacket(CreatePacket(15), QuicTime::Zero());
|
| - manager_.OnSerializedPacket(CreatePacket(16), QuicTime::Zero());
|
| + manager_.OnSerializedPacket(CreatePacket(15));
|
| + manager_.OnSerializedPacket(CreatePacket(16));
|
|
|
| {
|
| // Ack packet 16.
|
| @@ -366,7 +395,6 @@ TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
|
| received_info.missing_packets.insert(11);
|
| received_info.missing_packets.insert(12);
|
| received_info.is_truncated = true;
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(17u));
|
| manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
|
|
| // Truncated ack raises the high water mark by clearing out 2, 4, and 6.
|
| @@ -385,77 +413,85 @@ TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) {
|
| TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnacked) {
|
| SerializedPacket serialized_packet(CreatePacket(1));
|
|
|
| - manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
|
| + manager_.OnSerializedPacket(serialized_packet);
|
| EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket());
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnackedFec) {
|
| SerializedPacket serialized_packet(CreateFecPacket(1));
|
|
|
| - manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
|
| - // FEC packets do not count as "unacked".
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(2u));
|
| - EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket());
|
| + manager_.OnSerializedPacket(serialized_packet);
|
| + EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket());
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketDiscardUnacked) {
|
| SerializedPacket serialized_packet(CreatePacket(1));
|
|
|
| - manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
|
| + manager_.OnSerializedPacket(serialized_packet);
|
| manager_.DiscardUnackedPacket(1u);
|
| EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(2u));
|
| EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket());
|
| }
|
|
|
| -TEST_F(QuicSentPacketManagerTest, GetLeastUnackedFecPacketAndDiscard) {
|
| +TEST_F(QuicSentPacketManagerTest, GetLeastUnackedPacketAndDiscard) {
|
| VerifyUnackedPackets(NULL, 0);
|
|
|
| SerializedPacket serialized_packet(CreateFecPacket(1));
|
| - manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
|
| - EXPECT_EQ(1u, manager_.GetLeastUnackedFecPacket());
|
| + manager_.OnSerializedPacket(serialized_packet);
|
| + EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket());
|
|
|
| SerializedPacket serialized_packet2(CreateFecPacket(2));
|
| - manager_.OnSerializedPacket(serialized_packet2, QuicTime::Zero());
|
| - EXPECT_EQ(1u, manager_.GetLeastUnackedFecPacket());
|
| + manager_.OnSerializedPacket(serialized_packet2);
|
| + EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket());
|
|
|
| SerializedPacket serialized_packet3(CreateFecPacket(3));
|
| - manager_.OnSerializedPacket(serialized_packet3, QuicTime::Zero());
|
| - EXPECT_EQ(1u, manager_.GetLeastUnackedFecPacket());
|
| + manager_.OnSerializedPacket(serialized_packet3);
|
| + EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket());
|
|
|
| - VerifyUnackedPackets(NULL, 0);
|
| + QuicPacketSequenceNumber unacked[] = { 1, 2, 3 };
|
| + VerifyUnackedPackets(unacked, arraysize(unacked));
|
| VerifyRetransmittablePackets(NULL, 0);
|
|
|
| - manager_.DiscardFecPacket(1);
|
| - EXPECT_EQ(2u, manager_.GetLeastUnackedFecPacket());
|
| + manager_.DiscardUnackedPacket(1);
|
| + EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket());
|
|
|
| // Ack 2.
|
| ReceivedPacketInfo received_info;
|
| received_info.largest_observed = 2;
|
| - EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(4u));
|
| manager_.OnIncomingAck(received_info, QuicTime::Zero());
|
|
|
| - EXPECT_EQ(3u, manager_.GetLeastUnackedFecPacket());
|
| + EXPECT_EQ(3u, manager_.GetLeastUnackedSentPacket());
|
|
|
| // Discard the 3rd packet and ensure there are no FEC packets.
|
| - manager_.DiscardFecPacket(3);
|
| - EXPECT_FALSE(manager_.HasUnackedFecPackets());
|
| + manager_.DiscardUnackedPacket(3);
|
| + EXPECT_FALSE(manager_.HasUnackedPackets());
|
| }
|
|
|
| -TEST_F(QuicSentPacketManagerTest, GetFecSentTime) {
|
| +TEST_F(QuicSentPacketManagerTest, GetSentTime) {
|
| VerifyUnackedPackets(NULL, 0);
|
|
|
| SerializedPacket serialized_packet(CreateFecPacket(1));
|
| - manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero());
|
| + manager_.OnSerializedPacket(serialized_packet);
|
| + EXPECT_CALL(*send_algorithm_, OnPacketSent(_, 1, _, _, _))
|
| + .Times(1).WillOnce(Return(true));
|
| + manager_.OnPacketSent(
|
| + 1, QuicTime::Zero(), 0, NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
|
| SerializedPacket serialized_packet2(CreateFecPacket(2));
|
| QuicTime sent_time = QuicTime::Zero().Add(QuicTime::Delta::FromSeconds(1));
|
| - manager_.OnSerializedPacket(serialized_packet2, sent_time);
|
| + manager_.OnSerializedPacket(serialized_packet2);
|
| + EXPECT_CALL(*send_algorithm_, OnPacketSent(_, 2, _, _, _))
|
| + .Times(1).WillOnce(Return(true));
|
| + manager_.OnPacketSent(
|
| + 2, sent_time, 0, NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
|
|
|
| - VerifyUnackedPackets(NULL, 0);
|
| + QuicPacketSequenceNumber unacked[] = { 1, 2 };
|
| + VerifyUnackedPackets(unacked, arraysize(unacked));
|
| VerifyRetransmittablePackets(NULL, 0);
|
|
|
| - EXPECT_TRUE(manager_.HasUnackedFecPackets());
|
| - EXPECT_EQ(QuicTime::Zero(), manager_.GetFecSentTime(1));
|
| - EXPECT_EQ(sent_time, manager_.GetFecSentTime(2));
|
| + EXPECT_TRUE(manager_.HasUnackedPackets());
|
| + EXPECT_EQ(QuicTime::Zero(),
|
| + QuicSentPacketManagerPeer::GetSentTime(&manager_, 1));
|
| + EXPECT_EQ(sent_time, QuicSentPacketManagerPeer::GetSentTime(&manager_, 2));
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, NackRetransmit1Packet) {
|
| @@ -790,41 +826,35 @@ TEST_F(QuicSentPacketManagerTest, RetransmissionTimeout) {
|
| // Send 100 packets and then ensure all are abandoned when the RTO fires.
|
| const size_t kNumSentPackets = 100;
|
| for (size_t i = 1; i <= kNumSentPackets; ++i) {
|
| - EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _))
|
| - .Times(1).WillOnce(Return(true));
|
| - manager_.OnPacketSent(i, clock_.Now(), 1000,
|
| - NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
|
| + SendDataPacket(i);
|
| }
|
|
|
| - EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout());
|
| EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(kNumSentPackets);
|
|
|
| + EXPECT_CALL(*send_algorithm_, RetransmissionDelay())
|
| + .WillOnce(Return(QuicTime::Delta::FromMilliseconds(1)));
|
| + EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout());
|
| manager_.OnRetransmissionTimeout();
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, GetTransmissionDelayMin) {
|
| - EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout());
|
| - QuicTime::Delta delay = QuicTime::Delta::FromMilliseconds(1);
|
| EXPECT_CALL(*send_algorithm_, RetransmissionDelay())
|
| - .WillOnce(Return(delay));
|
| + .WillOnce(Return(QuicTime::Delta::FromMilliseconds(1)));
|
|
|
| - manager_.OnRetransmissionTimeout();
|
| EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200),
|
| manager_.GetRetransmissionDelay());
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, GetTransmissionDelayMax) {
|
| - EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout());
|
| - QuicTime::Delta delay = QuicTime::Delta::FromSeconds(500);
|
| EXPECT_CALL(*send_algorithm_, RetransmissionDelay())
|
| - .WillOnce(Return(delay));
|
| + .WillOnce(Return(QuicTime::Delta::FromSeconds(500)));
|
|
|
| - manager_.OnRetransmissionTimeout();
|
| EXPECT_EQ(QuicTime::Delta::FromSeconds(60),
|
| manager_.GetRetransmissionDelay());
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, GetTransmissionDelay) {
|
| + SendDataPacket(1);
|
| QuicTime::Delta delay = QuicTime::Delta::FromMilliseconds(500);
|
| EXPECT_CALL(*send_algorithm_, RetransmissionDelay())
|
| .WillRepeatedly(Return(delay));
|
| @@ -833,14 +863,17 @@ TEST_F(QuicSentPacketManagerTest, GetTransmissionDelay) {
|
| for (int i = 0; i < 5; ++i) {
|
| EXPECT_EQ(delay, manager_.GetRetransmissionDelay());
|
| delay = delay.Add(delay);
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(i + 1, _));
|
| EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout());
|
| manager_.OnRetransmissionTimeout();
|
| + RetransmitNextPacket(i + 2);
|
| }
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, GetTestTransmissionDelayTailDrop) {
|
| FLAGS_limit_rto_increase_for_tests = true;
|
|
|
| + SendDataPacket(1);
|
| QuicTime::Delta delay = QuicTime::Delta::FromMilliseconds(500);
|
| EXPECT_CALL(*send_algorithm_, RetransmissionDelay())
|
| .WillRepeatedly(Return(delay));
|
| @@ -848,8 +881,10 @@ TEST_F(QuicSentPacketManagerTest, GetTestTransmissionDelayTailDrop) {
|
| // No backoff for the first 5 retransmissions.
|
| for (int i = 0; i < 5; ++i) {
|
| EXPECT_EQ(delay, manager_.GetRetransmissionDelay());
|
| + EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(i + 1, _));
|
| EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout());
|
| manager_.OnRetransmissionTimeout();
|
| + RetransmitNextPacket(i + 2);
|
| }
|
|
|
| // Then backoff starts
|
|
|