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

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

Issue 188333003: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compilation error - added NET_EXPORT_PRIVATE to QuicFixedUint32 Created 6 years, 9 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_unacked_packet_map.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 17 matching lines...) Expand all
28 // Disable tail loss probes for most tests. 28 // Disable tail loss probes for most tests.
29 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 0); 29 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 0);
30 // Advance the time 1s so the send times are never QuicTime::Zero. 30 // Advance the time 1s so the send times are never QuicTime::Zero.
31 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1000)); 31 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1000));
32 } 32 }
33 33
34 virtual ~QuicSentPacketManagerTest() { 34 virtual ~QuicSentPacketManagerTest() {
35 STLDeleteElements(&packets_); 35 STLDeleteElements(&packets_);
36 } 36 }
37 37
38 virtual void SetUp() {
39 // Ack handling requests a smoothed rtt for loss detection.
40 EXPECT_CALL(*send_algorithm_, SmoothedRtt())
41 .WillRepeatedly(Return(QuicTime::Delta::FromMilliseconds(1)));
42 }
43
44 void VerifyUnackedPackets(QuicPacketSequenceNumber* packets, 38 void VerifyUnackedPackets(QuicPacketSequenceNumber* packets,
45 size_t num_packets) { 39 size_t num_packets) {
46 if (num_packets == 0) { 40 if (num_packets == 0) {
47 EXPECT_FALSE(manager_.HasUnackedPackets()); 41 EXPECT_FALSE(manager_.HasUnackedPackets());
48 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetNumRetransmittablePackets( 42 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetNumRetransmittablePackets(
49 &manager_)); 43 &manager_));
50 return; 44 return;
51 } 45 }
52 46
53 EXPECT_TRUE(manager_.HasUnackedPackets()); 47 EXPECT_TRUE(manager_.HasUnackedPackets());
(...skipping 16 matching lines...) Expand all
70 if (manager_.HasRetransmittableFrames(*it)) { 64 if (manager_.HasRetransmittableFrames(*it)) {
71 ++num_retransmittable; 65 ++num_retransmittable;
72 } 66 }
73 } 67 }
74 EXPECT_EQ(num_packets, 68 EXPECT_EQ(num_packets,
75 QuicSentPacketManagerPeer::GetNumRetransmittablePackets( 69 QuicSentPacketManagerPeer::GetNumRetransmittablePackets(
76 &manager_)); 70 &manager_));
77 EXPECT_EQ(num_packets, num_retransmittable); 71 EXPECT_EQ(num_packets, num_retransmittable);
78 } 72 }
79 73
80 void VerifyAckedPackets(QuicPacketSequenceNumber* expected,
81 size_t num_expected,
82 const SequenceNumberSet& actual) {
83 if (num_expected == 0) {
84 EXPECT_TRUE(actual.empty());
85 return;
86 }
87
88 EXPECT_EQ(num_expected, actual.size());
89 for (size_t i = 0; i < num_expected; ++i) {
90 EXPECT_TRUE(ContainsKey(actual, expected[i])) << expected[i];
91 }
92 }
93
94 void RetransmitPacket(QuicPacketSequenceNumber old_sequence_number, 74 void RetransmitPacket(QuicPacketSequenceNumber old_sequence_number,
95 QuicPacketSequenceNumber new_sequence_number) { 75 QuicPacketSequenceNumber new_sequence_number) {
96 QuicSentPacketManagerPeer::MarkForRetransmission( 76 QuicSentPacketManagerPeer::MarkForRetransmission(
97 &manager_, old_sequence_number, NACK_RETRANSMISSION); 77 &manager_, old_sequence_number, NACK_RETRANSMISSION);
98 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 78 EXPECT_TRUE(manager_.HasPendingRetransmissions());
99 QuicSentPacketManager::PendingRetransmission next_retransmission = 79 QuicSentPacketManager::PendingRetransmission next_retransmission =
100 manager_.NextPendingRetransmission(); 80 manager_.NextPendingRetransmission();
101 EXPECT_EQ(old_sequence_number, next_retransmission.sequence_number); 81 EXPECT_EQ(old_sequence_number, next_retransmission.sequence_number);
102 EXPECT_EQ(NACK_RETRANSMISSION, next_retransmission.transmission_type); 82 EXPECT_EQ(NACK_RETRANSMISSION, next_retransmission.transmission_type);
103 manager_.OnRetransmittedPacket(old_sequence_number, new_sequence_number); 83 manager_.OnRetransmittedPacket(old_sequence_number, new_sequence_number);
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) { 199 TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) {
220 SendDataPacket(1); 200 SendDataPacket(1);
221 RetransmitAndSendPacket(1, 2); 201 RetransmitAndSendPacket(1, 2);
222 202
223 // Ack 2 but not 1. 203 // Ack 2 but not 1.
224 ReceivedPacketInfo received_info; 204 ReceivedPacketInfo received_info;
225 received_info.largest_observed = 2; 205 received_info.largest_observed = 2;
226 received_info.missing_packets.insert(1); 206 received_info.missing_packets.insert(1);
227 EXPECT_CALL(*send_algorithm_, UpdateRtt(_)); 207 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
228 EXPECT_CALL(*send_algorithm_, OnPacketAcked(2, _)).Times(1); 208 EXPECT_CALL(*send_algorithm_, OnPacketAcked(2, _)).Times(1);
229 manager_.OnIncomingAck(received_info, QuicTime::Zero()); 209 manager_.OnIncomingAck(received_info, clock_.Now());
230 210
231 // Packet 1 is unacked, pending, but not retransmittable. 211 // Packet 1 is unacked, pending, but not retransmittable.
232 QuicPacketSequenceNumber unacked[] = { 1 }; 212 QuicPacketSequenceNumber unacked[] = { 1 };
233 VerifyUnackedPackets(unacked, arraysize(unacked)); 213 VerifyUnackedPackets(unacked, arraysize(unacked));
234 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); 214 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
235 VerifyRetransmittablePackets(NULL, 0); 215 VerifyRetransmittablePackets(NULL, 0);
236 } 216 }
237 217
238 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) { 218 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) {
239 SendDataPacket(1); 219 SendDataPacket(1);
240 QuicSentPacketManagerPeer::MarkForRetransmission( 220 QuicSentPacketManagerPeer::MarkForRetransmission(
241 &manager_, 1, NACK_RETRANSMISSION); 221 &manager_, 1, NACK_RETRANSMISSION);
242 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 222 EXPECT_TRUE(manager_.HasPendingRetransmissions());
243 223
244 // Ack 1. 224 // Ack 1.
245 ReceivedPacketInfo received_info; 225 ReceivedPacketInfo received_info;
246 received_info.largest_observed = 1; 226 received_info.largest_observed = 1;
247 EXPECT_CALL(*send_algorithm_, UpdateRtt(_)); 227 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
248 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)).Times(1); 228 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)).Times(1);
249 manager_.OnIncomingAck(received_info, QuicTime::Zero()); 229 manager_.OnIncomingAck(received_info, clock_.Now());
250 230
251 // There should no longer be a pending retransmission. 231 // There should no longer be a pending retransmission.
252 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 232 EXPECT_FALSE(manager_.HasPendingRetransmissions());
253 233
254 // No unacked packets remain. 234 // No unacked packets remain.
255 VerifyUnackedPackets(NULL, 0); 235 VerifyUnackedPackets(NULL, 0);
256 VerifyRetransmittablePackets(NULL, 0); 236 VerifyRetransmittablePackets(NULL, 0);
257 EXPECT_EQ(0u, stats_.packets_spuriously_retransmitted); 237 EXPECT_EQ(0u, stats_.packets_spuriously_retransmitted);
258 } 238 }
259 239
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 ReceivedPacketInfo received_info; 452 ReceivedPacketInfo received_info;
473 received_info.largest_observed = 4; 453 received_info.largest_observed = 4;
474 received_info.missing_packets.insert(1); 454 received_info.missing_packets.insert(1);
475 received_info.missing_packets.insert(2); 455 received_info.missing_packets.insert(2);
476 received_info.missing_packets.insert(3); 456 received_info.missing_packets.insert(3);
477 received_info.missing_packets.insert(4); 457 received_info.missing_packets.insert(4);
478 received_info.is_truncated = true; 458 received_info.is_truncated = true;
479 EXPECT_CALL(*send_algorithm_, UpdateRtt(_)); 459 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
480 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _)); 460 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _));
481 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _)); 461 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _));
482 manager_.OnIncomingAck(received_info, QuicTime::Zero()); 462 manager_.OnIncomingAck(received_info, clock_.Now());
483 463
484 // High water mark will be raised. 464 // High water mark will be raised.
485 QuicPacketSequenceNumber unacked[] = { 2, 3, 4 }; 465 QuicPacketSequenceNumber unacked[] = { 2, 3, 4 };
486 VerifyUnackedPackets(unacked, arraysize(unacked)); 466 VerifyUnackedPackets(unacked, arraysize(unacked));
487 QuicPacketSequenceNumber retransmittable[] = { 4 }; 467 QuicPacketSequenceNumber retransmittable[] = { 4 };
488 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 468 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
489 } 469 }
490 470
491 TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) { 471 TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) {
492 SendDataPacket(1); 472 SendDataPacket(1);
493 RetransmitAndSendPacket(1, 2); 473 RetransmitAndSendPacket(1, 2);
494 RetransmitAndSendPacket(2, 3); 474 RetransmitAndSendPacket(2, 3);
495 RetransmitAndSendPacket(3, 4); 475 RetransmitAndSendPacket(3, 4);
496 manager_.OnSerializedPacket(CreateDataPacket(5)); 476 manager_.OnSerializedPacket(CreateDataPacket(5));
497 manager_.OnSerializedPacket(CreateDataPacket(6)); 477 manager_.OnSerializedPacket(CreateDataPacket(6));
498 manager_.OnSerializedPacket(CreateDataPacket(7)); 478 manager_.OnSerializedPacket(CreateDataPacket(7));
499 manager_.OnSerializedPacket(CreateDataPacket(8)); 479 manager_.OnSerializedPacket(CreateDataPacket(8));
500 manager_.OnSerializedPacket(CreateDataPacket(9)); 480 manager_.OnSerializedPacket(CreateDataPacket(9));
501 481
502 // Ack previous transmission 482 // Ack previous transmission
503 { 483 {
504 ReceivedPacketInfo received_info; 484 ReceivedPacketInfo received_info;
505 received_info.largest_observed = 2; 485 received_info.largest_observed = 2;
506 received_info.missing_packets.insert(1); 486 received_info.missing_packets.insert(1);
507 EXPECT_CALL(*send_algorithm_, UpdateRtt(_)); 487 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
508 EXPECT_CALL(*send_algorithm_, OnPacketAcked(2, _)); 488 EXPECT_CALL(*send_algorithm_, OnPacketAcked(2, _));
509 manager_.OnIncomingAck(received_info, QuicTime::Zero()); 489 manager_.OnIncomingAck(received_info, clock_.Now());
510 EXPECT_TRUE(manager_.IsUnacked(4)); 490 EXPECT_TRUE(manager_.IsUnacked(4));
511 } 491 }
512 492
513 // Truncated ack with 4 NACKs 493 // Truncated ack with 4 NACKs
514 { 494 {
515 ReceivedPacketInfo received_info; 495 ReceivedPacketInfo received_info;
516 received_info.largest_observed = 6; 496 received_info.largest_observed = 6;
517 received_info.missing_packets.insert(3); 497 received_info.missing_packets.insert(3);
518 received_info.missing_packets.insert(4); 498 received_info.missing_packets.insert(4);
519 received_info.missing_packets.insert(5); 499 received_info.missing_packets.insert(5);
520 received_info.missing_packets.insert(6); 500 received_info.missing_packets.insert(6);
521 received_info.is_truncated = true; 501 received_info.is_truncated = true;
522 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)); 502 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _));
523 EXPECT_CALL(*send_algorithm_, OnPacketLost(3, _)); 503 EXPECT_CALL(*send_algorithm_, OnPacketLost(3, _));
524 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(3, _)); 504 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(3, _));
525 manager_.OnIncomingAck(received_info, QuicTime::Zero()); 505 manager_.OnIncomingAck(received_info, clock_.Now());
526 } 506 }
527 507
528 // High water mark will be raised. 508 // High water mark will be raised.
529 QuicPacketSequenceNumber unacked[] = { 4, 5, 6, 7, 8, 9 }; 509 QuicPacketSequenceNumber unacked[] = { 4, 5, 6, 7, 8, 9 };
530 VerifyUnackedPackets(unacked, arraysize(unacked)); 510 VerifyUnackedPackets(unacked, arraysize(unacked));
531 QuicPacketSequenceNumber retransmittable[] = { 5, 6, 7, 8, 9 }; 511 QuicPacketSequenceNumber retransmittable[] = { 5, 6, 7, 8, 9 };
532 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 512 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
533 } 513 }
534 514
535 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) { 515 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 QuicPacketSequenceNumber unacked[] = { 1, 2, 3 }; 556 QuicPacketSequenceNumber unacked[] = { 1, 2, 3 };
577 VerifyUnackedPackets(unacked, arraysize(unacked)); 557 VerifyUnackedPackets(unacked, arraysize(unacked));
578 VerifyRetransmittablePackets(NULL, 0); 558 VerifyRetransmittablePackets(NULL, 0);
579 559
580 manager_.DiscardUnackedPacket(1); 560 manager_.DiscardUnackedPacket(1);
581 EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket()); 561 EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket());
582 562
583 // Ack 2. 563 // Ack 2.
584 ReceivedPacketInfo received_info; 564 ReceivedPacketInfo received_info;
585 received_info.largest_observed = 2; 565 received_info.largest_observed = 2;
586 manager_.OnIncomingAck(received_info, QuicTime::Zero()); 566 manager_.OnIncomingAck(received_info, clock_.Now());
587 567
588 EXPECT_EQ(3u, manager_.GetLeastUnackedSentPacket()); 568 EXPECT_EQ(3u, manager_.GetLeastUnackedSentPacket());
589 569
590 // Discard the 3rd packet and ensure there are no FEC packets. 570 // Discard the 3rd packet and ensure there are no FEC packets.
591 manager_.DiscardUnackedPacket(3); 571 manager_.DiscardUnackedPacket(3);
592 EXPECT_FALSE(manager_.HasUnackedPackets()); 572 EXPECT_FALSE(manager_.HasUnackedPackets());
593 } 573 }
594 574
595 TEST_F(QuicSentPacketManagerTest, GetSentTime) { 575 TEST_F(QuicSentPacketManagerTest, GetSentTime) {
596 VerifyUnackedPackets(NULL, 0); 576 VerifyUnackedPackets(NULL, 0);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); 680 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20));
701 681
702 EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt)); 682 EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt));
703 EXPECT_CALL(*send_algorithm_, 683 EXPECT_CALL(*send_algorithm_,
704 OnPacketAcked(sequence_number, _)).Times(1); 684 OnPacketAcked(sequence_number, _)).Times(1);
705 ReceivedPacketInfo received_info; 685 ReceivedPacketInfo received_info;
706 received_info.largest_observed = sequence_number; 686 received_info.largest_observed = sequence_number;
707 received_info.delta_time_largest_observed = 687 received_info.delta_time_largest_observed =
708 QuicTime::Delta::FromMilliseconds(5); 688 QuicTime::Delta::FromMilliseconds(5);
709 manager_.OnIncomingAck(received_info, clock_.Now()); 689 manager_.OnIncomingAck(received_info, clock_.Now());
710 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_)); 690 EXPECT_EQ(expected_rtt,
691 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt());
711 } 692 }
712 693
713 TEST_F(QuicSentPacketManagerTest, RttWithInvalidDelta) { 694 TEST_F(QuicSentPacketManagerTest, RttWithInvalidDelta) {
714 // Expect that the RTT is equal to the local time elapsed, since the 695 // Expect that the RTT is equal to the local time elapsed, since the
715 // delta_time_largest_observed is larger than the local time elapsed 696 // delta_time_largest_observed is larger than the local time elapsed
716 // and is hence invalid. 697 // and is hence invalid.
717 QuicPacketSequenceNumber sequence_number = 1; 698 QuicPacketSequenceNumber sequence_number = 1;
718 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); 699 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10);
719 SendDataPacket(sequence_number); 700 SendDataPacket(sequence_number);
720 clock_.AdvanceTime(expected_rtt); 701 clock_.AdvanceTime(expected_rtt);
721 702
722 EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt)); 703 EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt));
723 EXPECT_CALL(*send_algorithm_, 704 EXPECT_CALL(*send_algorithm_,
724 OnPacketAcked(sequence_number, _)).Times(1); 705 OnPacketAcked(sequence_number, _)).Times(1);
725 ReceivedPacketInfo received_info; 706 ReceivedPacketInfo received_info;
726 received_info.largest_observed = sequence_number; 707 received_info.largest_observed = sequence_number;
727 received_info.delta_time_largest_observed = 708 received_info.delta_time_largest_observed =
728 QuicTime::Delta::FromMilliseconds(11); 709 QuicTime::Delta::FromMilliseconds(11);
729 manager_.OnIncomingAck(received_info, clock_.Now()); 710 manager_.OnIncomingAck(received_info, clock_.Now());
730 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_)); 711 EXPECT_EQ(expected_rtt,
712 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt());
731 } 713 }
732 714
733 TEST_F(QuicSentPacketManagerTest, RttWithInfiniteDelta) { 715 TEST_F(QuicSentPacketManagerTest, RttWithInfiniteDelta) {
734 // Expect that the RTT is equal to the local time elapsed, since the 716 // Expect that the RTT is equal to the local time elapsed, since the
735 // delta_time_largest_observed is infinite, and is hence invalid. 717 // delta_time_largest_observed is infinite, and is hence invalid.
736 QuicPacketSequenceNumber sequence_number = 1; 718 QuicPacketSequenceNumber sequence_number = 1;
737 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); 719 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10);
738 SendDataPacket(sequence_number); 720 SendDataPacket(sequence_number);
739 clock_.AdvanceTime(expected_rtt); 721 clock_.AdvanceTime(expected_rtt);
740 722
741 EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt)); 723 EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt));
742 EXPECT_CALL(*send_algorithm_, 724 EXPECT_CALL(*send_algorithm_,
743 OnPacketAcked(sequence_number, _)).Times(1); 725 OnPacketAcked(sequence_number, _)).Times(1);
744 ReceivedPacketInfo received_info; 726 ReceivedPacketInfo received_info;
745 received_info.largest_observed = sequence_number; 727 received_info.largest_observed = sequence_number;
746 received_info.delta_time_largest_observed = QuicTime::Delta::Infinite(); 728 received_info.delta_time_largest_observed = QuicTime::Delta::Infinite();
747 manager_.OnIncomingAck(received_info, clock_.Now()); 729 manager_.OnIncomingAck(received_info, clock_.Now());
748 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_)); 730 EXPECT_EQ(expected_rtt,
731 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt());
749 } 732 }
750 733
751 TEST_F(QuicSentPacketManagerTest, RttZeroDelta) { 734 TEST_F(QuicSentPacketManagerTest, RttZeroDelta) {
752 // Expect that the RTT is the time between send and receive since the 735 // Expect that the RTT is the time between send and receive since the
753 // delta_time_largest_observed is zero. 736 // delta_time_largest_observed is zero.
754 QuicPacketSequenceNumber sequence_number = 1; 737 QuicPacketSequenceNumber sequence_number = 1;
755 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); 738 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10);
756 SendDataPacket(sequence_number); 739 SendDataPacket(sequence_number);
757 clock_.AdvanceTime(expected_rtt); 740 clock_.AdvanceTime(expected_rtt);
758 741
759 EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt)); 742 EXPECT_CALL(*send_algorithm_, UpdateRtt(expected_rtt));
760 EXPECT_CALL(*send_algorithm_, OnPacketAcked(sequence_number, _)) 743 EXPECT_CALL(*send_algorithm_, OnPacketAcked(sequence_number, _))
761 .Times(1); 744 .Times(1);
762 ReceivedPacketInfo received_info; 745 ReceivedPacketInfo received_info;
763 received_info.largest_observed = sequence_number; 746 received_info.largest_observed = sequence_number;
764 received_info.delta_time_largest_observed = QuicTime::Delta::Zero(); 747 received_info.delta_time_largest_observed = QuicTime::Delta::Zero();
765 manager_.OnIncomingAck(received_info, clock_.Now()); 748 manager_.OnIncomingAck(received_info, clock_.Now());
766 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_)); 749 EXPECT_EQ(expected_rtt,
750 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt());
767 } 751 }
768 752
769 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeout) { 753 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeout) {
770 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); 754 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2);
771 755
772 // Send 1 packet. 756 // Send 1 packet.
773 QuicPacketSequenceNumber sequence_number = 1; 757 QuicPacketSequenceNumber sequence_number = 1;
774 SendDataPacket(sequence_number); 758 SendDataPacket(sequence_number);
775 759
776 // The first tail loss probe retransmits 1 packet. 760 // The first tail loss probe retransmits 1 packet.
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
977 } 961 }
978 962
979 TEST_F(QuicSentPacketManagerTest, GetTransmissionTime) { 963 TEST_F(QuicSentPacketManagerTest, GetTransmissionTime) {
980 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); 964 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime());
981 } 965 }
982 966
983 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeCryptoHandshake) { 967 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeCryptoHandshake) {
984 SendCryptoPacket(1); 968 SendCryptoPacket(1);
985 969
986 // Check the min. 970 // Check the min.
987 EXPECT_CALL(*send_algorithm_, SmoothedRtt()) 971 QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us(
988 .WillRepeatedly(Return(QuicTime::Delta::FromMilliseconds(1))); 972 1 * base::Time::kMicrosecondsPerMillisecond);
989 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), 973 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)),
990 manager_.GetRetransmissionTime()); 974 manager_.GetRetransmissionTime());
991 975
992 // Test with a standard smoothed RTT. 976 // Test with a standard smoothed RTT.
993 EXPECT_CALL(*send_algorithm_, SmoothedRtt()) 977 QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us(
994 .WillRepeatedly(Return(QuicTime::Delta::FromMilliseconds(100))); 978 100 * base::Time::kMicrosecondsPerMillisecond);
995 979
996 QuicTime::Delta srtt = manager_.SmoothedRtt(); 980 QuicTime::Delta srtt = manager_.SmoothedRtt();
997 QuicTime expected_time = clock_.Now().Add(QuicTime::Delta::FromMilliseconds( 981 QuicTime expected_time = clock_.Now().Add(srtt.Multiply(1.5));
998 static_cast<int64>(1.5 * srtt.ToMilliseconds())));
999 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); 982 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1000 983
1001 // Retransmit the packet by invoking the retransmission timeout. 984 // Retransmit the packet by invoking the retransmission timeout.
1002 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds( 985 clock_.AdvanceTime(srtt.Multiply(1.5));
1003 static_cast<int64>(1.5 * srtt.ToMilliseconds())));
1004 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)); 986 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _));
1005 manager_.OnRetransmissionTimeout(); 987 manager_.OnRetransmissionTimeout();
1006 RetransmitNextPacket(2); 988 RetransmitNextPacket(2);
1007 989
1008 // The retransmission time should now be twice as far in the future. 990 // The retransmission time should now be twice as far in the future.
1009 expected_time = clock_.Now().Add(QuicTime::Delta::FromMilliseconds( 991 expected_time = clock_.Now().Add(srtt.Multiply(2).Multiply(1.5));
1010 static_cast<int64>(2 * 1.5 * srtt.ToMilliseconds())));
1011 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); 992 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1012 } 993 }
1013 994
1014 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeTailLossProbe) { 995 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeTailLossProbe) {
1015 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); 996 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2);
1016 SendDataPacket(1); 997 SendDataPacket(1);
1017 SendDataPacket(2); 998 SendDataPacket(2);
1018 999
1019 // Check the min. 1000 // Check the min.
1020 EXPECT_CALL(*send_algorithm_, SmoothedRtt()) 1001 QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us(
1021 .WillRepeatedly(Return(QuicTime::Delta::FromMilliseconds(1))); 1002 1 * base::Time::kMicrosecondsPerMillisecond);
1022 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), 1003 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)),
1023 manager_.GetRetransmissionTime()); 1004 manager_.GetRetransmissionTime());
1024 1005
1025 // Test with a standard smoothed RTT. 1006 // Test with a standard smoothed RTT.
1026 EXPECT_CALL(*send_algorithm_, SmoothedRtt()) 1007 QuicSentPacketManagerPeer::GetRttStats(&manager_)->set_initial_rtt_us(
1027 .WillRepeatedly(Return(QuicTime::Delta::FromMilliseconds(100))); 1008 100 * base::Time::kMicrosecondsPerMillisecond);
1028 QuicTime::Delta srtt = manager_.SmoothedRtt(); 1009 QuicTime::Delta srtt = manager_.SmoothedRtt();
1029 QuicTime::Delta expected_tlp_delay = QuicTime::Delta::FromMilliseconds( 1010 QuicTime::Delta expected_tlp_delay = srtt.Multiply(2);
1030 static_cast<int64>(2 * srtt.ToMilliseconds()));
1031 QuicTime expected_time = clock_.Now().Add(expected_tlp_delay); 1011 QuicTime expected_time = clock_.Now().Add(expected_tlp_delay);
1032 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); 1012 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1033 1013
1034 // Retransmit the packet by invoking the retransmission timeout. 1014 // Retransmit the packet by invoking the retransmission timeout.
1035 clock_.AdvanceTime(expected_tlp_delay); 1015 clock_.AdvanceTime(expected_tlp_delay);
1036 manager_.OnRetransmissionTimeout(); 1016 manager_.OnRetransmissionTimeout();
1037 RetransmitNextPacket(3); 1017 RetransmitNextPacket(3);
1038 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 1018 EXPECT_FALSE(manager_.HasPendingRetransmissions());
1039 1019
1040 expected_time = clock_.Now().Add(expected_tlp_delay); 1020 expected_time = clock_.Now().Add(expected_tlp_delay);
1041 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); 1021 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1042 } 1022 }
1043 1023
1044 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeRTO) { 1024 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeRTO) {
1045 EXPECT_CALL(*send_algorithm_, SmoothedRtt()) 1025 QuicSentPacketManagerPeer::GetRttStats(&manager_)->UpdateRtt(
1046 .WillRepeatedly(Return(QuicTime::Delta::FromMilliseconds(100))); 1026 QuicTime::Delta::FromMilliseconds(100), QuicTime::Delta::Zero());
1047 1027
1048 SendDataPacket(1); 1028 SendDataPacket(1);
1049 SendDataPacket(2); 1029 SendDataPacket(2);
1050 1030
1051 QuicTime::Delta expected_rto_delay = QuicTime::Delta::FromMilliseconds(500); 1031 QuicTime::Delta expected_rto_delay = QuicTime::Delta::FromMilliseconds(500);
1052 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) 1032 EXPECT_CALL(*send_algorithm_, RetransmissionDelay())
1053 .WillRepeatedly(Return(expected_rto_delay)); 1033 .WillRepeatedly(Return(expected_rto_delay));
1054 QuicTime expected_time = clock_.Now().Add(expected_rto_delay); 1034 QuicTime expected_time = clock_.Now().Add(expected_rto_delay);
1055 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); 1035 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1056 1036
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1126 1106
1127 EXPECT_CALL(*loss_algorithm, GetLossTimeout()) 1107 EXPECT_CALL(*loss_algorithm, GetLossTimeout())
1128 .WillRepeatedly(Return(QuicTime::Zero())); 1108 .WillRepeatedly(Return(QuicTime::Zero()));
1129 SendDataPacket(1); 1109 SendDataPacket(1);
1130 SendDataPacket(2); 1110 SendDataPacket(2);
1131 1111
1132 // Handle an ack which causes the loss algorithm to be evaluated and 1112 // Handle an ack which causes the loss algorithm to be evaluated and
1133 // set the loss timeout. 1113 // set the loss timeout.
1134 EXPECT_CALL(*send_algorithm_, UpdateRtt(_)); 1114 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
1135 EXPECT_CALL(*send_algorithm_, OnPacketAcked(2, _)); 1115 EXPECT_CALL(*send_algorithm_, OnPacketAcked(2, _));
1136 EXPECT_CALL(*loss_algorithm, DetectLostPackets(_, _, _, _, _)) 1116 EXPECT_CALL(*loss_algorithm, DetectLostPackets(_, _, _, _))
1137 .WillOnce(Return(SequenceNumberSet())); 1117 .WillOnce(Return(SequenceNumberSet()));
1138 ReceivedPacketInfo received_info; 1118 ReceivedPacketInfo received_info;
1139 received_info.largest_observed = 2; 1119 received_info.largest_observed = 2;
1140 received_info.missing_packets.insert(1); 1120 received_info.missing_packets.insert(1);
1141 manager_.OnIncomingAck(received_info, clock_.Now()); 1121 manager_.OnIncomingAck(received_info, clock_.Now());
1142 1122
1143 QuicTime timeout(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10))); 1123 QuicTime timeout(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)));
1144 EXPECT_CALL(*loss_algorithm, GetLossTimeout()) 1124 EXPECT_CALL(*loss_algorithm, GetLossTimeout())
1145 .WillRepeatedly(Return(timeout)); 1125 .WillRepeatedly(Return(timeout));
1146 EXPECT_EQ(timeout, manager_.GetRetransmissionTime()); 1126 EXPECT_EQ(timeout, manager_.GetRetransmissionTime());
1147 1127
1148 // Fire the retransmission timeout and ensure the loss detection algorithm 1128 // Fire the retransmission timeout and ensure the loss detection algorithm
1149 // is invoked. 1129 // is invoked.
1150 EXPECT_CALL(*loss_algorithm, DetectLostPackets(_, _, _, _, _)) 1130 EXPECT_CALL(*loss_algorithm, DetectLostPackets(_, _, _, _))
1151 .WillOnce(Return(SequenceNumberSet())); 1131 .WillOnce(Return(SequenceNumberSet()));
1152 manager_.OnRetransmissionTimeout(); 1132 manager_.OnRetransmissionTimeout();
1153 } 1133 }
1154 1134
1155 } // namespace 1135 } // namespace
1156 } // namespace test 1136 } // namespace test
1157 } // namespace net 1137 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/quic_unacked_packet_map.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698