Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: net/quic/quic_sent_packet_manager_test.cc

Issue 131743009: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: use size_t instead of int to fix win_x64 compile error Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/quic_session.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_sent_packet_manager.h" 5 #include "net/quic/quic_sent_packet_manager.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" 8 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h"
9 #include "net/quic/test_tools/quic_test_utils.h" 9 #include "net/quic/test_tools/quic_test_utils.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 14 matching lines...) Expand all
25 }; 25 };
26 26
27 class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> { 27 class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
28 protected: 28 protected:
29 QuicSentPacketManagerTest() 29 QuicSentPacketManagerTest()
30 : manager_(true, &helper_, &clock_, kFixRate), 30 : manager_(true, &helper_, &clock_, kFixRate),
31 send_algorithm_(new StrictMock<MockSendAlgorithm>) { 31 send_algorithm_(new StrictMock<MockSendAlgorithm>) {
32 QuicSentPacketManagerPeer::SetSendAlgorithm(&manager_, send_algorithm_); 32 QuicSentPacketManagerPeer::SetSendAlgorithm(&manager_, send_algorithm_);
33 // Disable tail loss probes for most tests. 33 // Disable tail loss probes for most tests.
34 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 0); 34 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 0);
35 // Advance the time 1s so the send times are never QuicTime::Zero.
36 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1000));
35 } 37 }
36 38
37 ~QuicSentPacketManagerTest() { 39 ~QuicSentPacketManagerTest() {
38 STLDeleteElements(&packets_); 40 STLDeleteElements(&packets_);
39 } 41 }
40 42
41 void VerifyUnackedPackets(QuicPacketSequenceNumber* packets, 43 void VerifyUnackedPackets(QuicPacketSequenceNumber* packets,
42 size_t num_packets) { 44 size_t num_packets) {
43 if (num_packets == 0) { 45 if (num_packets == 0) {
44 EXPECT_FALSE(manager_.HasUnackedPackets()); 46 EXPECT_FALSE(manager_.HasUnackedPackets());
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 237 EXPECT_FALSE(manager_.HasPendingRetransmissions());
236 238
237 // No unacked packets remain. 239 // No unacked packets remain.
238 VerifyUnackedPackets(NULL, 0); 240 VerifyUnackedPackets(NULL, 0);
239 VerifyRetransmittablePackets(NULL, 0); 241 VerifyRetransmittablePackets(NULL, 0);
240 } 242 }
241 243
242 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPrevious) { 244 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPrevious) {
243 SendDataPacket(1); 245 SendDataPacket(1);
244 RetransmitPacket(1, 2); 246 RetransmitPacket(1, 2);
247 QuicTime::Delta rtt = QuicTime::Delta::FromMilliseconds(15);
248 clock_.AdvanceTime(rtt);
245 249
246 // Ack 1 but not 2. 250 // Ack 1 but not 2.
247 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _, _)); 251 EXPECT_CALL(*send_algorithm_, UpdateRtt(rtt));
252 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _));
248 ReceivedPacketInfo received_info; 253 ReceivedPacketInfo received_info;
249 received_info.largest_observed = 1; 254 received_info.largest_observed = 1;
250 EXPECT_TRUE(manager_.OnIncomingAck(received_info, QuicTime::Zero())); 255 EXPECT_TRUE(manager_.OnIncomingAck(received_info, clock_.ApproximateNow()));
251 256
252 // 2 remains unacked, but no packets have retransmittable data. 257 // 2 remains unacked, but no packets have retransmittable data.
253 QuicPacketSequenceNumber unacked[] = { 2 }; 258 QuicPacketSequenceNumber unacked[] = { 2 };
254 VerifyUnackedPackets(unacked, arraysize(unacked)); 259 VerifyUnackedPackets(unacked, arraysize(unacked));
255 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); 260 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
256 VerifyRetransmittablePackets(NULL, 0); 261 VerifyRetransmittablePackets(NULL, 0);
257 262
258 // Verify that the retransmission alarm would not fire, 263 // Verify that the retransmission alarm would not fire,
259 // since there is no retransmittable data outstanding. 264 // since there is no retransmittable data outstanding.
260 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); 265 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime());
261 } 266 }
262 267
263 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPreviousThenNackRetransmit) { 268 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPreviousThenNackRetransmit) {
264 SendDataPacket(1); 269 SendDataPacket(1);
265 RetransmitPacket(1, 2); 270 RetransmitPacket(1, 2);
266 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, 2, _, _, _)) 271 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, 2, _, _, _))
267 .WillOnce(Return(true)); 272 .WillOnce(Return(true));
268 manager_.OnPacketSent(2, clock_.ApproximateNow(), 1000, 273 manager_.OnPacketSent(2, clock_.ApproximateNow(), 1000,
269 NACK_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); 274 NACK_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
275 QuicTime::Delta rtt = QuicTime::Delta::FromMilliseconds(15);
276 clock_.AdvanceTime(rtt);
270 277
271 // First, ACK packet 1 which makes packet 2 non-retransmittable. 278 // First, ACK packet 1 which makes packet 2 non-retransmittable.
272 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _, _)); 279 EXPECT_CALL(*send_algorithm_, UpdateRtt(rtt));
280 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _));
273 ReceivedPacketInfo received_info; 281 ReceivedPacketInfo received_info;
274 received_info.largest_observed = 1; 282 received_info.largest_observed = 1;
275 EXPECT_TRUE(manager_.OnIncomingAck(received_info, QuicTime::Zero())); 283 EXPECT_TRUE(manager_.OnIncomingAck(received_info, clock_.ApproximateNow()));
276 284
277 SendDataPacket(3); 285 SendDataPacket(3);
278 SendDataPacket(4); 286 SendDataPacket(4);
279 SendDataPacket(5); 287 SendDataPacket(5);
288 clock_.AdvanceTime(rtt);
289
280 // Next, NACK packet 2 three times. 290 // Next, NACK packet 2 three times.
281 received_info.largest_observed = 3; 291 received_info.largest_observed = 3;
282 received_info.missing_packets.insert(2); 292 received_info.missing_packets.insert(2);
283 EXPECT_CALL(*send_algorithm_, OnPacketAcked(3, _, _)); 293 EXPECT_CALL(*send_algorithm_, UpdateRtt(rtt));
284 EXPECT_TRUE(manager_.OnIncomingAck(received_info, QuicTime::Zero())); 294 EXPECT_CALL(*send_algorithm_, OnPacketAcked(3, _));
295 EXPECT_TRUE(manager_.OnIncomingAck(received_info, clock_.ApproximateNow()));
285 296
286 received_info.largest_observed = 4; 297 received_info.largest_observed = 4;
287 EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _, _)); 298 EXPECT_CALL(*send_algorithm_, UpdateRtt(rtt));
288 EXPECT_TRUE(manager_.OnIncomingAck(received_info, QuicTime::Zero())); 299 EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _));
300 EXPECT_TRUE(manager_.OnIncomingAck(received_info, clock_.ApproximateNow()));
289 301
290 received_info.largest_observed = 5; 302 received_info.largest_observed = 5;
291 EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _, _)); 303 EXPECT_CALL(*send_algorithm_, UpdateRtt(rtt));
304 EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _));
292 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(2, _)); 305 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(2, _));
293 EXPECT_CALL(*send_algorithm_, OnPacketLost(2, _)); 306 EXPECT_CALL(*send_algorithm_, OnPacketLost(2, _));
294 EXPECT_TRUE(manager_.OnIncomingAck(received_info, QuicTime::Zero())); 307 EXPECT_TRUE(manager_.OnIncomingAck(received_info, clock_.ApproximateNow()));
295 308
296 // No packets remain unacked. 309 // No packets remain unacked.
297 VerifyUnackedPackets(NULL, 0); 310 VerifyUnackedPackets(NULL, 0);
298 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); 311 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
299 VerifyRetransmittablePackets(NULL, 0); 312 VerifyRetransmittablePackets(NULL, 0);
300 313
301 // Verify that the retransmission alarm would not fire, 314 // Verify that the retransmission alarm would not fire,
302 // since there is no retransmittable data outstanding. 315 // since there is no retransmittable data outstanding.
303 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); 316 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime());
304 } 317 }
305 318
306 TEST_F(QuicSentPacketManagerTest, RetransmitTwiceThenAckPreviousBeforeSend) { 319 TEST_F(QuicSentPacketManagerTest, RetransmitTwiceThenAckPreviousBeforeSend) {
307 SendDataPacket(1); 320 SendDataPacket(1);
308 RetransmitAndSendPacket(1, 2); 321 RetransmitAndSendPacket(1, 2);
309 322
310 // Fire the RTO, which will mark 2 for retransmission (but will not send it). 323 // Fire the RTO, which will mark 2 for retransmission (but will not send it).
311 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); 324 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true));
312 manager_.OnRetransmissionTimeout(); 325 manager_.OnRetransmissionTimeout();
313 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 326 EXPECT_TRUE(manager_.HasPendingRetransmissions());
314 327
315 // Ack 1 but not 2, before 2 is able to be sent. 328 // Ack 1 but not 2, before 2 is able to be sent.
316 // Since 1 has been retransmitted, it has already been lost, and so the 329 // Since 1 has been retransmitted, it has already been lost, and so the
317 // send algorithm is not informed that it has been ACK'd. 330 // send algorithm is not informed that it has been ACK'd.
318 ReceivedPacketInfo received_info; 331 ReceivedPacketInfo received_info;
319 received_info.largest_observed = 1; 332 received_info.largest_observed = 1;
320 EXPECT_TRUE(manager_.OnIncomingAck(received_info, QuicTime::Zero())); 333 EXPECT_CALL(*send_algorithm_, UpdateRtt(QuicTime::Delta::Zero()));
334 EXPECT_TRUE(manager_.OnIncomingAck(received_info, clock_.ApproximateNow()));
321 335
322 // Since 2 was marked for retransmit, when 1 is acked, 2 is discarded. 336 // Since 2 was marked for retransmit, when 1 is acked, 2 is discarded.
323 VerifyUnackedPackets(NULL, 0); 337 VerifyUnackedPackets(NULL, 0);
324 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); 338 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
325 VerifyRetransmittablePackets(NULL, 0); 339 VerifyRetransmittablePackets(NULL, 0);
326 340
327 // Verify that the retransmission alarm would not fire, 341 // Verify that the retransmission alarm would not fire,
328 // since there is no retransmittable data outstanding. 342 // since there is no retransmittable data outstanding.
329 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); 343 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime());
330 } 344 }
331 345
332 TEST_F(QuicSentPacketManagerTest, RetransmitTwiceThenAckFirst) { 346 TEST_F(QuicSentPacketManagerTest, RetransmitTwiceThenAckFirst) {
333 SendDataPacket(1); 347 SendDataPacket(1);
334 RetransmitPacket(1, 2); 348 RetransmitPacket(1, 2);
335 RetransmitPacket(2, 3); 349 RetransmitPacket(2, 3);
350 QuicTime::Delta rtt = QuicTime::Delta::FromMilliseconds(15);
351 clock_.AdvanceTime(rtt);
336 352
337 // Ack 1 but not 2 or 3. 353 // Ack 1 but not 2 or 3.
338 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _, _)); 354 EXPECT_CALL(*send_algorithm_, UpdateRtt(rtt));
355 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _));
339 ReceivedPacketInfo received_info; 356 ReceivedPacketInfo received_info;
340 received_info.largest_observed = 1; 357 received_info.largest_observed = 1;
341 manager_.OnIncomingAck(received_info, QuicTime::Zero()); 358 manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
342 359
343 // 3 remains unacked, but no packets have retransmittable data. 360 // 3 remains unacked, but no packets have retransmittable data.
344 QuicPacketSequenceNumber unacked[] = { 3 }; 361 QuicPacketSequenceNumber unacked[] = { 3 };
345 VerifyUnackedPackets(unacked, arraysize(unacked)); 362 VerifyUnackedPackets(unacked, arraysize(unacked));
346 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); 363 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
347 VerifyRetransmittablePackets(NULL, 0); 364 VerifyRetransmittablePackets(NULL, 0);
348 365
349 // Verify that the retransmission alarm would not fire to abandon packet 3. 366 // Verify that the retransmission alarm would not fire to abandon packet 3.
350 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); 367 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime());
351 } 368 }
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 } 653 }
637 EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); 654 EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_));
638 655
639 // Nack the first packet 3 times with increasing largest observed. 656 // Nack the first packet 3 times with increasing largest observed.
640 ReceivedPacketInfo received_info; 657 ReceivedPacketInfo received_info;
641 received_info.delta_time_largest_observed = 658 received_info.delta_time_largest_observed =
642 QuicTime::Delta::FromMilliseconds(5); 659 QuicTime::Delta::FromMilliseconds(5);
643 received_info.missing_packets.insert(1); 660 received_info.missing_packets.insert(1);
644 for (QuicPacketSequenceNumber i = 1; i <= 3; ++i) { 661 for (QuicPacketSequenceNumber i = 1; i <= 3; ++i) {
645 received_info.largest_observed = i + 1; 662 received_info.largest_observed = i + 1;
646 EXPECT_CALL(*send_algorithm_, OnPacketAcked(i + 1, _, _)).Times(1); 663 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
664 EXPECT_CALL(*send_algorithm_, OnPacketAcked(i + 1, _)).Times(1);
647 if (i == 3) { 665 if (i == 3) {
648 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)).Times(1); 666 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)).Times(1);
649 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)).Times(1); 667 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)).Times(1);
650 } 668 }
651 manager_.OnIncomingAck(received_info, clock_.Now()); 669 manager_.OnIncomingAck(received_info, clock_.Now());
652 EXPECT_EQ( 670 EXPECT_EQ(
653 i == 3 ? 1u : 0u, 671 i == 3 ? 1u : 0u,
654 QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_)); 672 QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_));
655 EXPECT_EQ(i, QuicSentPacketManagerPeer::GetNackCount(&manager_, 1)); 673 EXPECT_EQ(i, QuicSentPacketManagerPeer::GetNackCount(&manager_, 1));
656 } 674 }
657 } 675 }
658 676
659 // A stretch ack is an ack that covers more than 1 packet of previously 677 // A stretch ack is an ack that covers more than 1 packet of previously
660 // unacknowledged data. 678 // unacknowledged data.
661 TEST_F(QuicSentPacketManagerTest, NackRetransmit1PacketWith1StretchAck) { 679 TEST_F(QuicSentPacketManagerTest, NackRetransmit1PacketWith1StretchAck) {
662 const size_t kNumSentPackets = 4; 680 const size_t kNumSentPackets = 4;
663 // Transmit 4 packets. 681 // Transmit 4 packets.
664 for (size_t i = 1; i <= kNumSentPackets; ++i) { 682 for (size_t i = 1; i <= kNumSentPackets; ++i) {
665 SendDataPacket(i); 683 SendDataPacket(i);
666 } 684 }
667 685
668 // Nack the first packet 3 times in a single StretchAck. 686 // Nack the first packet 3 times in a single StretchAck.
669 ReceivedPacketInfo received_info; 687 ReceivedPacketInfo received_info;
670 received_info.delta_time_largest_observed = 688 received_info.delta_time_largest_observed =
671 QuicTime::Delta::FromMilliseconds(5); 689 QuicTime::Delta::FromMilliseconds(5);
672 received_info.missing_packets.insert(1); 690 received_info.missing_packets.insert(1);
673 received_info.largest_observed = kNumSentPackets; 691 received_info.largest_observed = kNumSentPackets;
674 EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _, _)).Times(3); 692 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
693 EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _)).Times(3);
675 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)).Times(1); 694 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)).Times(1);
676 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)).Times(1); 695 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)).Times(1);
677 manager_.OnIncomingAck(received_info, clock_.Now()); 696 manager_.OnIncomingAck(received_info, clock_.Now());
678 EXPECT_EQ( 697 EXPECT_EQ(
679 1u, QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_)); 698 1u, QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_));
680 EXPECT_EQ(3u, QuicSentPacketManagerPeer::GetNackCount(&manager_, 1)); 699 EXPECT_EQ(3u, QuicSentPacketManagerPeer::GetNackCount(&manager_, 1));
681 } 700 }
682 701
683 // Ack a packet 3 packets ahead, causing a retransmit. 702 // Ack a packet 3 packets ahead, causing a retransmit.
684 TEST_F(QuicSentPacketManagerTest, NackRetransmit1PacketSingleAck) { 703 TEST_F(QuicSentPacketManagerTest, NackRetransmit1PacketSingleAck) {
685 const size_t kNumSentPackets = 5; 704 const size_t kNumSentPackets = 5;
686 // Transmit 5 packets. 705 // Transmit 5 packets.
687 for (size_t i = 1; i <= kNumSentPackets; ++i) { 706 for (size_t i = 1; i <= kNumSentPackets; ++i) {
688 SendDataPacket(i); 707 SendDataPacket(i);
689 } 708 }
690 709
691 // Nack the first packet 3 times in an AckFrame with three missing packets. 710 // Nack the first packet 3 times in an AckFrame with three missing packets.
692 ReceivedPacketInfo received_info; 711 ReceivedPacketInfo received_info;
693 received_info.delta_time_largest_observed = 712 received_info.delta_time_largest_observed =
694 QuicTime::Delta::FromMilliseconds(5); 713 QuicTime::Delta::FromMilliseconds(5);
695 received_info.missing_packets.insert(1); 714 received_info.missing_packets.insert(1);
696 received_info.missing_packets.insert(2); 715 received_info.missing_packets.insert(2);
697 received_info.missing_packets.insert(3); 716 received_info.missing_packets.insert(3);
698 received_info.largest_observed = 4; 717 received_info.largest_observed = 4;
699 EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _, _)).Times(1); 718 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
719 EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _)).Times(1);
700 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)).Times(1); 720 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)).Times(1);
701 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)).Times(1); 721 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)).Times(1);
702 manager_.OnIncomingAck(received_info, clock_.Now()); 722 manager_.OnIncomingAck(received_info, clock_.Now());
703 EXPECT_EQ( 723 EXPECT_EQ(
704 1u, QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_)); 724 1u, QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_));
705 EXPECT_EQ(3u, QuicSentPacketManagerPeer::GetNackCount(&manager_, 1)); 725 EXPECT_EQ(3u, QuicSentPacketManagerPeer::GetNackCount(&manager_, 1));
706 } 726 }
707 727
708 TEST_F(QuicSentPacketManagerTest, EarlyRetransmit1Packet) { 728 TEST_F(QuicSentPacketManagerTest, EarlyRetransmit1Packet) {
709 const size_t kNumSentPackets = 2; 729 const size_t kNumSentPackets = 2;
710 // Transmit 2 packets. 730 // Transmit 2 packets.
711 for (size_t i = 1; i <= kNumSentPackets; ++i) { 731 for (size_t i = 1; i <= kNumSentPackets; ++i) {
712 SendDataPacket(i); 732 SendDataPacket(i);
713 } 733 }
714 734
715 // Early retransmit when the final packet gets acked and the first is nacked. 735 // Early retransmit when the final packet gets acked and the first is nacked.
716 ReceivedPacketInfo received_info; 736 ReceivedPacketInfo received_info;
717 received_info.delta_time_largest_observed = 737 received_info.delta_time_largest_observed =
718 QuicTime::Delta::FromMilliseconds(5); 738 QuicTime::Delta::FromMilliseconds(5);
719 received_info.missing_packets.insert(1); 739 received_info.missing_packets.insert(1);
720 received_info.largest_observed = kNumSentPackets; 740 received_info.largest_observed = kNumSentPackets;
721 EXPECT_CALL(*send_algorithm_, OnPacketAcked(kNumSentPackets, _, _)).Times(1); 741 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
742 EXPECT_CALL(*send_algorithm_, OnPacketAcked(kNumSentPackets, _)).Times(1);
722 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)).Times(1); 743 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)).Times(1);
723 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)).Times(1); 744 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)).Times(1);
724 manager_.OnIncomingAck(received_info, clock_.Now()); 745 manager_.OnIncomingAck(received_info, clock_.Now());
725 EXPECT_EQ( 746 EXPECT_EQ(
726 1u, QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_)); 747 1u, QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_));
727 EXPECT_EQ(1u, QuicSentPacketManagerPeer::GetNackCount(&manager_, 1)); 748 EXPECT_EQ(1u, QuicSentPacketManagerPeer::GetNackCount(&manager_, 1));
728 } 749 }
729 750
730 TEST_F(QuicSentPacketManagerTest, DontEarlyRetransmitPacket) { 751 TEST_F(QuicSentPacketManagerTest, DontEarlyRetransmitPacket) {
731 const size_t kNumSentPackets = 5; 752 const size_t kNumSentPackets = 5;
732 for (size_t i = 1; i <= kNumSentPackets; ++i) { 753 for (size_t i = 1; i <= kNumSentPackets; ++i) {
733 SendDataPacket(i); 754 SendDataPacket(i);
734 } 755 }
735 756
736 // Fast retransmit when the final packet gets acked, but don't early 757 // Fast retransmit when the final packet gets acked, but don't early
737 // retransmit as well, because there are 4 packets outstanding when the ack 758 // retransmit as well, because there are 4 packets outstanding when the ack
738 // arrives. 759 // arrives.
739 ReceivedPacketInfo received_info; 760 ReceivedPacketInfo received_info;
740 received_info.delta_time_largest_observed = 761 received_info.delta_time_largest_observed =
741 QuicTime::Delta::FromMilliseconds(5); 762 QuicTime::Delta::FromMilliseconds(5);
742 received_info.missing_packets.insert(1); 763 received_info.missing_packets.insert(1);
743 received_info.missing_packets.insert(2); 764 received_info.missing_packets.insert(2);
744 received_info.missing_packets.insert(3); 765 received_info.missing_packets.insert(3);
745 received_info.missing_packets.insert(4); 766 received_info.missing_packets.insert(4);
746 received_info.largest_observed = kNumSentPackets; 767 received_info.largest_observed = kNumSentPackets;
747 EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _, _)).Times(1); 768 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
769 EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _)).Times(1);
748 EXPECT_CALL(*send_algorithm_, OnPacketLost(_, _)).Times(2); 770 EXPECT_CALL(*send_algorithm_, OnPacketLost(_, _)).Times(2);
749 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(2); 771 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(2);
750 manager_.OnIncomingAck(received_info, clock_.Now()); 772 manager_.OnIncomingAck(received_info, clock_.Now());
751 EXPECT_EQ( 773 EXPECT_EQ(
752 2u, QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_)); 774 2u, QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_));
753 EXPECT_EQ(4u, QuicSentPacketManagerPeer::GetNackCount(&manager_, 1)); 775 EXPECT_EQ(4u, QuicSentPacketManagerPeer::GetNackCount(&manager_, 1));
754 } 776 }
755 777
756 TEST_F(QuicSentPacketManagerTest, NackRetransmit2Packets) { 778 TEST_F(QuicSentPacketManagerTest, NackRetransmit2Packets) {
757 const size_t kNumSentPackets = 20; 779 const size_t kNumSentPackets = 20;
758 // Transmit 20 packets. 780 // Transmit 20 packets.
759 for (QuicPacketSequenceNumber i = 1; i <= kNumSentPackets; ++i) { 781 for (QuicPacketSequenceNumber i = 1; i <= kNumSentPackets; ++i) {
760 SendDataPacket(i); 782 SendDataPacket(i);
761 } 783 }
762 784
763 // Nack the first 19 packets 3 times. 785 // Nack the first 19 packets 3 times.
764 ReceivedPacketInfo received_info; 786 ReceivedPacketInfo received_info;
765 received_info.largest_observed = kNumSentPackets; 787 received_info.largest_observed = kNumSentPackets;
766 received_info.delta_time_largest_observed = 788 received_info.delta_time_largest_observed =
767 QuicTime::Delta::FromMilliseconds(5); 789 QuicTime::Delta::FromMilliseconds(5);
768 for (size_t i = 1; i < kNumSentPackets; ++i) { 790 for (size_t i = 1; i < kNumSentPackets; ++i) {
769 received_info.missing_packets.insert(i); 791 received_info.missing_packets.insert(i);
770 } 792 }
793 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
771 EXPECT_CALL(*send_algorithm_, 794 EXPECT_CALL(*send_algorithm_,
772 OnPacketAcked(kNumSentPackets, _, _)).Times(1); 795 OnPacketAcked(kNumSentPackets, _)).Times(1);
773 EXPECT_CALL(*send_algorithm_, OnPacketLost(_, _)).Times(2); 796 EXPECT_CALL(*send_algorithm_, OnPacketLost(_, _)).Times(2);
774 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(2); 797 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(2);
775 manager_.OnIncomingAck(received_info, clock_.Now()); 798 manager_.OnIncomingAck(received_info, clock_.Now());
776 EXPECT_EQ( 799 EXPECT_EQ(
777 2u, QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_)); 800 2u, QuicSentPacketManagerPeer::GetPendingRetransmissionCount(&manager_));
778 for (size_t i = 1; i < kNumSentPackets; ++i) { 801 for (size_t i = 1; i < kNumSentPackets; ++i) {
779 EXPECT_EQ(kNumSentPackets - i, 802 EXPECT_EQ(kNumSentPackets - i,
780 QuicSentPacketManagerPeer::GetNackCount(&manager_, i)); 803 QuicSentPacketManagerPeer::GetNackCount(&manager_, i));
781 } 804 }
782 } 805 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 // Nack the first packet 2 times, then ack it. 855 // Nack the first packet 2 times, then ack it.
833 ReceivedPacketInfo received_info; 856 ReceivedPacketInfo received_info;
834 received_info.missing_packets.insert(1); 857 received_info.missing_packets.insert(1);
835 for (size_t i = 1; i <= 3; ++i) { 858 for (size_t i = 1; i <= 3; ++i) {
836 if (i == 3) { 859 if (i == 3) {
837 received_info.missing_packets.clear(); 860 received_info.missing_packets.clear();
838 } 861 }
839 received_info.largest_observed = i + 1; 862 received_info.largest_observed = i + 1;
840 received_info.delta_time_largest_observed = 863 received_info.delta_time_largest_observed =
841 QuicTime::Delta::FromMilliseconds(5); 864 QuicTime::Delta::FromMilliseconds(5);
865 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
842 EXPECT_CALL(*send_algorithm_, 866 EXPECT_CALL(*send_algorithm_,
843 OnPacketAcked(_, _, _)).Times(i == 3 ? 2 : 1); 867 OnPacketAcked(_, _)).Times(i == 3 ? 2 : 1);
844 manager_.OnIncomingAck(received_info, clock_.Now()); 868 manager_.OnIncomingAck(received_info, clock_.Now());
845 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 869 EXPECT_FALSE(manager_.HasPendingRetransmissions());
846 // The nack count remains at 2 when the packet is acked. 870 // The nack count remains at 2 when the packet is acked.
847 EXPECT_EQ(i == 3 ? 2u : i, 871 EXPECT_EQ(i == 3 ? 2u : i,
848 QuicSentPacketManagerPeer::GetNackCount(&manager_, 1)); 872 QuicSentPacketManagerPeer::GetNackCount(&manager_, 1));
849 } 873 }
850 } 874 }
851 875
852 TEST_F(QuicSentPacketManagerTest, Rtt) { 876 TEST_F(QuicSentPacketManagerTest, Rtt) {
853 QuicPacketSequenceNumber sequence_number = 1; 877 QuicPacketSequenceNumber sequence_number = 1;
854 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(15); 878 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(15);
855 SendDataPacket(sequence_number); 879 SendDataPacket(sequence_number);
856 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); 880 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20));
857 881
882 EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt));
858 EXPECT_CALL(*send_algorithm_, 883 EXPECT_CALL(*send_algorithm_,
859 OnPacketAcked(sequence_number, _, expected_rtt)).Times(1); 884 OnPacketAcked(sequence_number, _)).Times(1);
860 ReceivedPacketInfo received_info; 885 ReceivedPacketInfo received_info;
861 received_info.largest_observed = sequence_number; 886 received_info.largest_observed = sequence_number;
862 received_info.delta_time_largest_observed = 887 received_info.delta_time_largest_observed =
863 QuicTime::Delta::FromMilliseconds(5); 888 QuicTime::Delta::FromMilliseconds(5);
864 manager_.OnIncomingAck(received_info, clock_.Now()); 889 manager_.OnIncomingAck(received_info, clock_.Now());
865 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_)); 890 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_));
866 } 891 }
867 892
868 TEST_F(QuicSentPacketManagerTest, RttWithInvalidDelta) { 893 TEST_F(QuicSentPacketManagerTest, RttWithInvalidDelta) {
869 // Expect that the RTT is equal to the local time elapsed, since the 894 // Expect that the RTT is equal to the local time elapsed, since the
870 // delta_time_largest_observed is larger than the local time elapsed 895 // delta_time_largest_observed is larger than the local time elapsed
871 // and is hence invalid. 896 // and is hence invalid.
872 QuicPacketSequenceNumber sequence_number = 1; 897 QuicPacketSequenceNumber sequence_number = 1;
873 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); 898 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10);
874 SendDataPacket(sequence_number); 899 SendDataPacket(sequence_number);
875 clock_.AdvanceTime(expected_rtt); 900 clock_.AdvanceTime(expected_rtt);
876 901
902 EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt));
877 EXPECT_CALL(*send_algorithm_, 903 EXPECT_CALL(*send_algorithm_,
878 OnPacketAcked(sequence_number, _, expected_rtt)).Times(1); 904 OnPacketAcked(sequence_number, _)).Times(1);
879 ReceivedPacketInfo received_info; 905 ReceivedPacketInfo received_info;
880 received_info.largest_observed = sequence_number; 906 received_info.largest_observed = sequence_number;
881 received_info.delta_time_largest_observed = 907 received_info.delta_time_largest_observed =
882 QuicTime::Delta::FromMilliseconds(11); 908 QuicTime::Delta::FromMilliseconds(11);
883 manager_.OnIncomingAck(received_info, clock_.Now()); 909 manager_.OnIncomingAck(received_info, clock_.Now());
884 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_)); 910 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_));
885 } 911 }
886 912
887 TEST_F(QuicSentPacketManagerTest, RttWithInfiniteDelta) { 913 TEST_F(QuicSentPacketManagerTest, RttWithInfiniteDelta) {
888 // Expect that the RTT is equal to the local time elapsed, since the 914 // Expect that the RTT is equal to the local time elapsed, since the
889 // delta_time_largest_observed is infinite, and is hence invalid. 915 // delta_time_largest_observed is infinite, and is hence invalid.
890 QuicPacketSequenceNumber sequence_number = 1; 916 QuicPacketSequenceNumber sequence_number = 1;
891 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); 917 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10);
892 SendDataPacket(sequence_number); 918 SendDataPacket(sequence_number);
893 clock_.AdvanceTime(expected_rtt); 919 clock_.AdvanceTime(expected_rtt);
894 920
921 EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt));
895 EXPECT_CALL(*send_algorithm_, 922 EXPECT_CALL(*send_algorithm_,
896 OnPacketAcked(sequence_number, _, expected_rtt)).Times(1); 923 OnPacketAcked(sequence_number, _)).Times(1);
897 ReceivedPacketInfo received_info; 924 ReceivedPacketInfo received_info;
898 received_info.largest_observed = sequence_number; 925 received_info.largest_observed = sequence_number;
899 received_info.delta_time_largest_observed = QuicTime::Delta::Infinite(); 926 received_info.delta_time_largest_observed = QuicTime::Delta::Infinite();
900 manager_.OnIncomingAck(received_info, clock_.Now()); 927 manager_.OnIncomingAck(received_info, clock_.Now());
901 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_)); 928 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_));
902 } 929 }
903 930
904 TEST_F(QuicSentPacketManagerTest, RttZeroDelta) { 931 TEST_F(QuicSentPacketManagerTest, RttZeroDelta) {
905 // Expect that the RTT is the time between send and receive since the 932 // Expect that the RTT is the time between send and receive since the
906 // delta_time_largest_observed is zero. 933 // delta_time_largest_observed is zero.
907 QuicPacketSequenceNumber sequence_number = 1; 934 QuicPacketSequenceNumber sequence_number = 1;
908 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); 935 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10);
909 SendDataPacket(sequence_number); 936 SendDataPacket(sequence_number);
910 clock_.AdvanceTime(expected_rtt); 937 clock_.AdvanceTime(expected_rtt);
911 938
912 EXPECT_CALL(*send_algorithm_, OnPacketAcked(sequence_number, _, expected_rtt)) 939 EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt));
940 EXPECT_CALL(*send_algorithm_, OnPacketAcked(sequence_number, _))
913 .Times(1); 941 .Times(1);
914 ReceivedPacketInfo received_info; 942 ReceivedPacketInfo received_info;
915 received_info.largest_observed = sequence_number; 943 received_info.largest_observed = sequence_number;
916 received_info.delta_time_largest_observed = QuicTime::Delta::Zero(); 944 received_info.delta_time_largest_observed = QuicTime::Delta::Zero();
917 manager_.OnIncomingAck(received_info, clock_.Now()); 945 manager_.OnIncomingAck(received_info, clock_.Now());
918 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_)); 946 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_));
919 } 947 }
920 948
921 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeout) { 949 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeout) {
922 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); 950 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2);
923 951
924 // Send 1 packet. 952 // Send 1 packet.
925 QuicPacketSequenceNumber sequence_number = 1; 953 QuicPacketSequenceNumber sequence_number = 1;
926 SendDataPacket(sequence_number); 954 SendDataPacket(sequence_number);
927 955
928 // The first tail loss probe retransmits 1 packet. 956 // The first tail loss probe retransmits 1 packet.
929 manager_.OnRetransmissionTimeout(); 957 manager_.OnRetransmissionTimeout();
930 RetransmitNextPacket(2); 958 RetransmitNextPacket(2);
931 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 959 EXPECT_FALSE(manager_.HasPendingRetransmissions());
932 960
933 // The second tail loss probe retransmits 1 packet. 961 // The second tail loss probe retransmits 1 packet.
934 manager_.OnRetransmissionTimeout(); 962 manager_.OnRetransmissionTimeout();
935 RetransmitNextPacket(3); 963 RetransmitNextPacket(3);
936 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 964 EXPECT_FALSE(manager_.HasPendingRetransmissions());
937 965
938 // Ack the third and ensure the first two are considered lost, but they were 966 // Ack the third and ensure the first two are considered lost, but they were
939 // already abandoned, so that won't occur again. 967 // already abandoned, so that won't occur again.
940 EXPECT_CALL(*send_algorithm_, OnPacketAcked(3, _, _)); 968 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
969 EXPECT_CALL(*send_algorithm_, OnPacketAcked(3, _));
941 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(2); 970 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(2);
942 EXPECT_CALL(*send_algorithm_, OnPacketLost(_, _)).Times(2); 971 EXPECT_CALL(*send_algorithm_, OnPacketLost(_, _)).Times(2);
943 ReceivedPacketInfo received_info; 972 ReceivedPacketInfo received_info;
944 received_info.largest_observed = 3; 973 received_info.largest_observed = 3;
945 received_info.missing_packets.insert(1); 974 received_info.missing_packets.insert(1);
946 received_info.missing_packets.insert(2); 975 received_info.missing_packets.insert(2);
947 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); 976 manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
948 977
949 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 978 EXPECT_FALSE(manager_.HasPendingRetransmissions());
950 } 979 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 // The second retransmits 2 packets. 1029 // The second retransmits 2 packets.
1001 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(2); 1030 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(2);
1002 manager_.OnRetransmissionTimeout(); 1031 manager_.OnRetransmissionTimeout();
1003 RetransmitNextPacket(8); 1032 RetransmitNextPacket(8);
1004 RetransmitNextPacket(9); 1033 RetransmitNextPacket(9);
1005 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 1034 EXPECT_FALSE(manager_.HasPendingRetransmissions());
1006 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); 1035 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_));
1007 1036
1008 // Now ack the two crypto packets and the speculatively encrypted request, 1037 // Now ack the two crypto packets and the speculatively encrypted request,
1009 // and ensure the first four crypto packets get abandoned, but not lost. 1038 // and ensure the first four crypto packets get abandoned, but not lost.
1010 EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _, _)).Times(5); 1039 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
1040 EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _)).Times(5);
1011 ReceivedPacketInfo received_info; 1041 ReceivedPacketInfo received_info;
1012 received_info.largest_observed = 9; 1042 received_info.largest_observed = 9;
1013 received_info.missing_packets.insert(1); 1043 received_info.missing_packets.insert(1);
1014 received_info.missing_packets.insert(2); 1044 received_info.missing_packets.insert(2);
1015 received_info.missing_packets.insert(6); 1045 received_info.missing_packets.insert(6);
1016 received_info.missing_packets.insert(7); 1046 received_info.missing_packets.insert(7);
1017 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); 1047 manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
1018 1048
1019 EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); 1049 EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_));
1020 } 1050 }
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1148 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); 1178 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true));
1149 clock_.AdvanceTime(expected_rto_delay); 1179 clock_.AdvanceTime(expected_rto_delay);
1150 manager_.OnRetransmissionTimeout(); 1180 manager_.OnRetransmissionTimeout();
1151 RetransmitNextPacket(3); 1181 RetransmitNextPacket(3);
1152 RetransmitNextPacket(4); 1182 RetransmitNextPacket(4);
1153 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 1183 EXPECT_FALSE(manager_.HasPendingRetransmissions());
1154 1184
1155 // The delay should double the second time. 1185 // The delay should double the second time.
1156 expected_time = clock_.Now().Add(expected_rto_delay).Add(expected_rto_delay); 1186 expected_time = clock_.Now().Add(expected_rto_delay).Add(expected_rto_delay);
1157 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); 1187 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1188
1189 // Ack a packet and ensure the RTO goes back to the original value.
1190 ReceivedPacketInfo received_info;
1191 received_info.largest_observed = 2;
1192 received_info.missing_packets.insert(1);
1193 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
1194 manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
1195
1196 expected_time = clock_.Now().Add(expected_rto_delay);
1197 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1158 } 1198 }
1159 1199
1160 TEST_F(QuicSentPacketManagerTest, GetTransmissionDelayMin) { 1200 TEST_F(QuicSentPacketManagerTest, GetTransmissionDelayMin) {
1161 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) 1201 EXPECT_CALL(*send_algorithm_, RetransmissionDelay())
1162 .WillOnce(Return(QuicTime::Delta::FromMilliseconds(1))); 1202 .WillOnce(Return(QuicTime::Delta::FromMilliseconds(1)));
1163 1203
1164 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), 1204 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200),
1165 QuicSentPacketManagerPeer::GetRetransmissionDelay(&manager_)); 1205 QuicSentPacketManagerPeer::GetRetransmissionDelay(&manager_));
1166 } 1206 }
1167 1207
(...skipping 18 matching lines...) Expand all
1186 delay = delay.Add(delay); 1226 delay = delay.Add(delay);
1187 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); 1227 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true));
1188 manager_.OnRetransmissionTimeout(); 1228 manager_.OnRetransmissionTimeout();
1189 RetransmitNextPacket(i + 2); 1229 RetransmitNextPacket(i + 2);
1190 } 1230 }
1191 } 1231 }
1192 1232
1193 } // namespace 1233 } // namespace
1194 } // namespace test 1234 } // namespace test
1195 } // namespace net 1235 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/quic_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698