| 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 |