OLD | NEW |
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/quic_flags.h" | 8 #include "net/quic/quic_flags.h" |
9 #include "net/quic/test_tools/quic_config_peer.h" | 9 #include "net/quic/test_tools/quic_config_peer.h" |
10 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" | 10 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" |
(...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
600 VerifyUnackedPackets(unacked, arraysize(unacked)); | 600 VerifyUnackedPackets(unacked, arraysize(unacked)); |
601 QuicPacketSequenceNumber retransmittable[] = { 5 }; | 601 QuicPacketSequenceNumber retransmittable[] = { 5 }; |
602 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 602 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
603 } | 603 } |
604 | 604 |
605 TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) { | 605 TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) { |
606 SendDataPacket(1); | 606 SendDataPacket(1); |
607 RetransmitAndSendPacket(1, 2); | 607 RetransmitAndSendPacket(1, 2); |
608 RetransmitAndSendPacket(2, 3); | 608 RetransmitAndSendPacket(2, 3); |
609 RetransmitAndSendPacket(3, 4); | 609 RetransmitAndSendPacket(3, 4); |
610 manager_.OnSerializedPacket(CreateDataPacket(5)); | 610 SendDataPacket(5); |
611 manager_.OnSerializedPacket(CreateDataPacket(6)); | 611 SendDataPacket(6); |
612 manager_.OnSerializedPacket(CreateDataPacket(7)); | 612 SendDataPacket(7); |
613 manager_.OnSerializedPacket(CreateDataPacket(8)); | 613 SendDataPacket(8); |
614 manager_.OnSerializedPacket(CreateDataPacket(9)); | 614 SendDataPacket(9); |
615 | 615 |
616 // Ack previous transmission | 616 // Ack previous transmission |
617 { | 617 { |
618 QuicAckFrame ack_frame; | 618 QuicAckFrame ack_frame; |
619 ack_frame.largest_observed = 2; | 619 ack_frame.largest_observed = 2; |
620 ack_frame.missing_packets.insert(1); | 620 ack_frame.missing_packets.insert(1); |
621 ExpectAck(2); | 621 ExpectAck(2); |
622 manager_.OnIncomingAck(ack_frame, clock_.Now()); | 622 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
623 EXPECT_TRUE(manager_.IsUnacked(4)); | 623 EXPECT_TRUE(manager_.IsUnacked(4)); |
624 } | 624 } |
625 | 625 |
626 // Truncated ack with 4 NACKs | 626 // Truncated ack with 4 NACKs |
627 { | 627 { |
628 QuicAckFrame ack_frame; | 628 QuicAckFrame ack_frame; |
629 ack_frame.largest_observed = 6; | 629 ack_frame.largest_observed = 6; |
630 ack_frame.missing_packets.insert(3); | 630 ack_frame.missing_packets.insert(3); |
631 ack_frame.missing_packets.insert(4); | 631 ack_frame.missing_packets.insert(4); |
632 ack_frame.missing_packets.insert(5); | 632 ack_frame.missing_packets.insert(5); |
633 ack_frame.missing_packets.insert(6); | 633 ack_frame.missing_packets.insert(6); |
634 ack_frame.is_truncated = true; | 634 ack_frame.is_truncated = true; |
635 ExpectAckAndLoss(false, 1, 3); | 635 ExpectAckAndLoss(true, 1, 3); |
636 manager_.OnIncomingAck(ack_frame, clock_.Now()); | 636 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
637 } | 637 } |
638 | 638 |
639 // High water mark will be raised. | 639 // High water mark will be raised. |
640 QuicPacketSequenceNumber unacked[] = { 4, 5, 6, 7, 8, 9 }; | 640 QuicPacketSequenceNumber unacked[] = { 4, 5, 6, 7, 8, 9 }; |
641 VerifyUnackedPackets(unacked, arraysize(unacked)); | 641 VerifyUnackedPackets(unacked, arraysize(unacked)); |
642 QuicPacketSequenceNumber retransmittable[] = { 5, 6, 7, 8, 9 }; | 642 QuicPacketSequenceNumber retransmittable[] = { 5, 6, 7, 8, 9 }; |
643 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 643 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
644 } | 644 } |
645 | 645 |
(...skipping 11 matching lines...) Expand all Loading... |
657 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedUnackedFec) { | 657 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedUnackedFec) { |
658 SerializedPacket serialized_packet(CreateFecPacket(1)); | 658 SerializedPacket serialized_packet(CreateFecPacket(1)); |
659 | 659 |
660 manager_.OnSerializedPacket(serialized_packet); | 660 manager_.OnSerializedPacket(serialized_packet); |
661 EXPECT_EQ(1u, manager_.GetLeastUnacked()); | 661 EXPECT_EQ(1u, manager_.GetLeastUnacked()); |
662 } | 662 } |
663 | 663 |
664 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedAndDiscard) { | 664 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedAndDiscard) { |
665 VerifyUnackedPackets(NULL, 0); | 665 VerifyUnackedPackets(NULL, 0); |
666 | 666 |
667 SerializedPacket serialized_packet(CreateFecPacket(1)); | 667 SendFecPacket(1); |
668 manager_.OnSerializedPacket(serialized_packet); | |
669 EXPECT_EQ(1u, manager_.GetLeastUnacked()); | 668 EXPECT_EQ(1u, manager_.GetLeastUnacked()); |
670 | 669 |
671 SerializedPacket serialized_packet2(CreateFecPacket(2)); | 670 SendFecPacket(2); |
672 manager_.OnSerializedPacket(serialized_packet2); | |
673 EXPECT_EQ(1u, manager_.GetLeastUnacked()); | 671 EXPECT_EQ(1u, manager_.GetLeastUnacked()); |
674 | 672 |
675 SerializedPacket serialized_packet3(CreateFecPacket(3)); | 673 SendFecPacket(3); |
676 manager_.OnSerializedPacket(serialized_packet3); | |
677 EXPECT_EQ(1u, manager_.GetLeastUnacked()); | 674 EXPECT_EQ(1u, manager_.GetLeastUnacked()); |
678 | 675 |
679 QuicPacketSequenceNumber unacked[] = { 1, 2, 3 }; | 676 QuicPacketSequenceNumber unacked[] = { 1, 2, 3 }; |
680 VerifyUnackedPackets(unacked, arraysize(unacked)); | 677 VerifyUnackedPackets(unacked, arraysize(unacked)); |
681 VerifyRetransmittablePackets(NULL, 0); | 678 VerifyRetransmittablePackets(NULL, 0); |
682 | 679 |
683 // Ack 2, which has never been sent, so there's no rtt update. | 680 // Ack 2, so there's an rtt update. |
| 681 ExpectAck(2); |
684 QuicAckFrame ack_frame; | 682 QuicAckFrame ack_frame; |
685 ack_frame.largest_observed = 2; | 683 ack_frame.largest_observed = 2; |
| 684 ack_frame.missing_packets.insert(1); |
686 manager_.OnIncomingAck(ack_frame, clock_.Now()); | 685 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
687 | 686 |
688 EXPECT_EQ(3u, manager_.GetLeastUnacked()); | 687 EXPECT_EQ(1u, manager_.GetLeastUnacked()); |
689 } | 688 } |
690 | 689 |
691 TEST_F(QuicSentPacketManagerTest, GetSentTime) { | 690 TEST_F(QuicSentPacketManagerTest, GetSentTime) { |
692 VerifyUnackedPackets(NULL, 0); | 691 VerifyUnackedPackets(NULL, 0); |
693 | 692 |
694 SerializedPacket serialized_packet(CreateFecPacket(1)); | 693 SerializedPacket serialized_packet(CreateFecPacket(1)); |
695 manager_.OnSerializedPacket(serialized_packet); | 694 manager_.OnSerializedPacket(serialized_packet); |
696 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 1, _, _)) | 695 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 1, _, _)) |
697 .Times(1).WillOnce(Return(true)); | 696 .Times(1).WillOnce(Return(true)); |
698 manager_.OnPacketSent(1, QuicTime::Zero(), kDefaultLength, NOT_RETRANSMISSION, | 697 manager_.OnPacketSent(1, QuicTime::Zero(), kDefaultLength, NOT_RETRANSMISSION, |
(...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1463 .WillOnce(Return(100 * kDefaultTCPMSS)); | 1462 .WillOnce(Return(100 * kDefaultTCPMSS)); |
1464 manager_.SetFromConfig(config); | 1463 manager_.SetFromConfig(config); |
1465 | 1464 |
1466 EXPECT_EQ(initial_rtt_us, | 1465 EXPECT_EQ(initial_rtt_us, |
1467 manager_.GetRttStats()->SmoothedRtt().ToMicroseconds()); | 1466 manager_.GetRttStats()->SmoothedRtt().ToMicroseconds()); |
1468 } | 1467 } |
1469 | 1468 |
1470 } // namespace | 1469 } // namespace |
1471 } // namespace test | 1470 } // namespace test |
1472 } // namespace net | 1471 } // namespace net |
OLD | NEW |