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 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 void VerifyUnackedPackets(QuicPacketSequenceNumber* packets, | 73 void VerifyUnackedPackets(QuicPacketSequenceNumber* packets, |
74 size_t num_packets) { | 74 size_t num_packets) { |
75 if (num_packets == 0) { | 75 if (num_packets == 0) { |
76 EXPECT_FALSE(manager_.HasUnackedPackets()); | 76 EXPECT_FALSE(manager_.HasUnackedPackets()); |
77 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetNumRetransmittablePackets( | 77 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetNumRetransmittablePackets( |
78 &manager_)); | 78 &manager_)); |
79 return; | 79 return; |
80 } | 80 } |
81 | 81 |
82 EXPECT_TRUE(manager_.HasUnackedPackets()); | 82 EXPECT_TRUE(manager_.HasUnackedPackets()); |
83 EXPECT_EQ(packets[0], manager_.GetLeastUnackedSentPacket()); | 83 EXPECT_EQ(packets[0], manager_.GetLeastUnacked()); |
84 for (size_t i = 0; i < num_packets; ++i) { | 84 for (size_t i = 0; i < num_packets; ++i) { |
85 EXPECT_TRUE(manager_.IsUnacked(packets[i])) << packets[i]; | 85 EXPECT_TRUE(manager_.IsUnacked(packets[i])) << packets[i]; |
86 } | 86 } |
87 } | 87 } |
88 | 88 |
89 void VerifyRetransmittablePackets(QuicPacketSequenceNumber* packets, | 89 void VerifyRetransmittablePackets(QuicPacketSequenceNumber* packets, |
90 size_t num_packets) { | 90 size_t num_packets) { |
91 EXPECT_EQ(num_packets, | 91 EXPECT_EQ(num_packets, |
92 QuicSentPacketManagerPeer::GetNumRetransmittablePackets( | 92 QuicSentPacketManagerPeer::GetNumRetransmittablePackets( |
93 &manager_)); | 93 &manager_)); |
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 |
646 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) { | 646 TEST_F(QuicSentPacketManagerTest, GetLeastUnacked) { |
647 EXPECT_EQ(0u, manager_.GetLeastUnackedSentPacket()); | 647 EXPECT_EQ(1u, manager_.GetLeastUnacked()); |
648 } | 648 } |
649 | 649 |
650 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnacked) { | 650 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedUnacked) { |
651 SerializedPacket serialized_packet(CreateDataPacket(1)); | 651 SerializedPacket serialized_packet(CreateDataPacket(1)); |
652 | 652 |
653 manager_.OnSerializedPacket(serialized_packet); | 653 manager_.OnSerializedPacket(serialized_packet); |
654 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); | 654 EXPECT_EQ(1u, manager_.GetLeastUnacked()); |
655 } | 655 } |
656 | 656 |
657 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnackedFec) { | 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_.GetLeastUnackedSentPacket()); | 661 EXPECT_EQ(1u, manager_.GetLeastUnacked()); |
662 } | 662 } |
663 | 663 |
664 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedPacketAndDiscard) { | 664 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedAndDiscard) { |
665 VerifyUnackedPackets(NULL, 0); | 665 VerifyUnackedPackets(NULL, 0); |
666 | 666 |
667 SerializedPacket serialized_packet(CreateFecPacket(1)); | 667 SerializedPacket serialized_packet(CreateFecPacket(1)); |
668 manager_.OnSerializedPacket(serialized_packet); | 668 manager_.OnSerializedPacket(serialized_packet); |
669 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); | 669 EXPECT_EQ(1u, manager_.GetLeastUnacked()); |
670 | 670 |
671 SerializedPacket serialized_packet2(CreateFecPacket(2)); | 671 SerializedPacket serialized_packet2(CreateFecPacket(2)); |
672 manager_.OnSerializedPacket(serialized_packet2); | 672 manager_.OnSerializedPacket(serialized_packet2); |
673 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); | 673 EXPECT_EQ(1u, manager_.GetLeastUnacked()); |
674 | 674 |
675 SerializedPacket serialized_packet3(CreateFecPacket(3)); | 675 SerializedPacket serialized_packet3(CreateFecPacket(3)); |
676 manager_.OnSerializedPacket(serialized_packet3); | 676 manager_.OnSerializedPacket(serialized_packet3); |
677 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); | 677 EXPECT_EQ(1u, manager_.GetLeastUnacked()); |
678 | 678 |
679 QuicPacketSequenceNumber unacked[] = { 1, 2, 3 }; | 679 QuicPacketSequenceNumber unacked[] = { 1, 2, 3 }; |
680 VerifyUnackedPackets(unacked, arraysize(unacked)); | 680 VerifyUnackedPackets(unacked, arraysize(unacked)); |
681 VerifyRetransmittablePackets(NULL, 0); | 681 VerifyRetransmittablePackets(NULL, 0); |
682 | 682 |
683 // Ack 2, which has never been sent, so there's no rtt update. | 683 // Ack 2, which has never been sent, so there's no rtt update. |
684 QuicAckFrame ack_frame; | 684 QuicAckFrame ack_frame; |
685 ack_frame.largest_observed = 2; | 685 ack_frame.largest_observed = 2; |
686 manager_.OnIncomingAck(ack_frame, clock_.Now()); | 686 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
687 | 687 |
688 EXPECT_EQ(3u, manager_.GetLeastUnackedSentPacket()); | 688 EXPECT_EQ(3u, manager_.GetLeastUnacked()); |
689 } | 689 } |
690 | 690 |
691 TEST_F(QuicSentPacketManagerTest, GetSentTime) { | 691 TEST_F(QuicSentPacketManagerTest, GetSentTime) { |
692 VerifyUnackedPackets(NULL, 0); | 692 VerifyUnackedPackets(NULL, 0); |
693 | 693 |
694 SerializedPacket serialized_packet(CreateFecPacket(1)); | 694 SerializedPacket serialized_packet(CreateFecPacket(1)); |
695 manager_.OnSerializedPacket(serialized_packet); | 695 manager_.OnSerializedPacket(serialized_packet); |
696 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 1, _, _)) | 696 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 1, _, _)) |
697 .Times(1).WillOnce(Return(true)); | 697 .Times(1).WillOnce(Return(true)); |
698 manager_.OnPacketSent(1, QuicTime::Zero(), kDefaultLength, NOT_RETRANSMISSION, | 698 manager_.OnPacketSent(1, QuicTime::Zero(), kDefaultLength, NOT_RETRANSMISSION, |
(...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1439 .WillOnce(Return(100 * kDefaultTCPMSS)); | 1439 .WillOnce(Return(100 * kDefaultTCPMSS)); |
1440 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); | 1440 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); |
1441 manager_.SetFromConfig(config); | 1441 manager_.SetFromConfig(config); |
1442 | 1442 |
1443 EXPECT_TRUE(manager_.using_pacing()); | 1443 EXPECT_TRUE(manager_.using_pacing()); |
1444 } | 1444 } |
1445 | 1445 |
1446 } // namespace | 1446 } // namespace |
1447 } // namespace test | 1447 } // namespace test |
1448 } // namespace net | 1448 } // namespace net |
OLD | NEW |