| 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 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 494 ack_frame.largest_observed = 5; | 494 ack_frame.largest_observed = 5; |
| 495 ExpectAckAndLoss(true, 5, 2); | 495 ExpectAckAndLoss(true, 5, 2); |
| 496 EXPECT_CALL(debug_delegate, OnPacketLoss(2, LOSS_RETRANSMISSION, _)); | 496 EXPECT_CALL(debug_delegate, OnPacketLoss(2, LOSS_RETRANSMISSION, _)); |
| 497 manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow()); | 497 manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow()); |
| 498 | 498 |
| 499 VerifyUnackedPackets(nullptr, 0); | 499 VerifyUnackedPackets(nullptr, 0); |
| 500 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 500 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
| 501 EXPECT_EQ(2u, stats_.packets_spuriously_retransmitted); | 501 EXPECT_EQ(2u, stats_.packets_spuriously_retransmitted); |
| 502 } | 502 } |
| 503 | 503 |
| 504 TEST_F(QuicSentPacketManagerTest, LoseButDontRetransmitRevivedPacket) { | |
| 505 StrictMock<MockDebugDelegate> debug_delegate; | |
| 506 manager_.set_debug_delegate(&debug_delegate); | |
| 507 | |
| 508 SendDataPacket(1); | |
| 509 SendDataPacket(2); | |
| 510 SendFecPacket(3); | |
| 511 SendDataPacket(4); | |
| 512 | |
| 513 // Ack 2 and 3, and mark 1 as revived. | |
| 514 QuicAckFrame ack_frame; | |
| 515 ack_frame.largest_observed = 3; | |
| 516 ack_frame.missing_packets.Add(1); | |
| 517 ack_frame.latest_revived_packet = 1; | |
| 518 QuicPacketNumber acked[] = {2, 3}; | |
| 519 ExpectAcksAndLosses(true, acked, arraysize(acked), nullptr, 0); | |
| 520 manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow()); | |
| 521 | |
| 522 EXPECT_FALSE(manager_.HasPendingRetransmissions()); | |
| 523 QuicPacketNumber unacked[] = {1, 4}; | |
| 524 VerifyUnackedPackets(unacked, arraysize(unacked)); | |
| 525 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | |
| 526 QuicPacketNumber retransmittable[] = {4}; | |
| 527 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | |
| 528 | |
| 529 // Ack the 4th packet and expect the 1st to be considered lost. | |
| 530 if (FLAGS_quic_log_loss_event) { | |
| 531 EXPECT_CALL(debug_delegate, OnPacketLoss(1, LOSS_RETRANSMISSION, _)); | |
| 532 } | |
| 533 ack_frame.largest_observed = 4; | |
| 534 ExpectAckAndLoss(true, 4, 1); | |
| 535 manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow()); | |
| 536 | |
| 537 EXPECT_FALSE(manager_.HasPendingRetransmissions()); | |
| 538 VerifyRetransmittablePackets(nullptr, 0); | |
| 539 } | |
| 540 | |
| 541 TEST_F(QuicSentPacketManagerTest, MarkLostThenReviveAndDontRetransmitPacket) { | |
| 542 SendDataPacket(1); | |
| 543 SendDataPacket(2); | |
| 544 SendDataPacket(3); | |
| 545 SendDataPacket(4); | |
| 546 SendFecPacket(5); | |
| 547 | |
| 548 // Ack 2, 3, and 4, and expect the 1st to be considered lost. | |
| 549 QuicAckFrame ack_frame; | |
| 550 ack_frame.largest_observed = 4; | |
| 551 ack_frame.missing_packets.Add(1); | |
| 552 QuicPacketNumber acked[] = {2, 3, 4}; | |
| 553 QuicPacketNumber lost[] = {1}; | |
| 554 ExpectAcksAndLosses(true, acked, arraysize(acked), lost, arraysize(lost)); | |
| 555 manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow()); | |
| 556 | |
| 557 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | |
| 558 QuicPacketNumber unacked[] = {1, 5}; | |
| 559 VerifyUnackedPackets(unacked, arraysize(unacked)); | |
| 560 QuicPacketNumber retransmittable[] = {1}; | |
| 561 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | |
| 562 | |
| 563 // Ack 5th packet (FEC) and revive 1st packet. 1st packet should now be | |
| 564 // removed from pending retransmissions map. | |
| 565 ack_frame.largest_observed = 5; | |
| 566 ack_frame.latest_revived_packet = 1; | |
| 567 ExpectAck(5); | |
| 568 manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow()); | |
| 569 | |
| 570 EXPECT_FALSE(manager_.HasPendingRetransmissions()); | |
| 571 VerifyRetransmittablePackets(nullptr, 0); | |
| 572 } | |
| 573 | |
| 574 TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) { | 504 TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) { |
| 575 SendDataPacket(1); | 505 SendDataPacket(1); |
| 576 RetransmitAndSendPacket(1, 2); | 506 RetransmitAndSendPacket(1, 2); |
| 577 RetransmitAndSendPacket(2, 3); | 507 RetransmitAndSendPacket(2, 3); |
| 578 RetransmitAndSendPacket(3, 4); | 508 RetransmitAndSendPacket(3, 4); |
| 579 SendDataPacket(5); | 509 SendDataPacket(5); |
| 580 SendDataPacket(6); | 510 SendDataPacket(6); |
| 581 SendDataPacket(7); | 511 SendDataPacket(7); |
| 582 SendDataPacket(8); | 512 SendDataPacket(8); |
| 583 SendDataPacket(9); | 513 SendDataPacket(9); |
| (...skipping 1186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1770 manager_.OnConnectionMigration(PORT_CHANGE); | 1700 manager_.OnConnectionMigration(PORT_CHANGE); |
| 1771 | 1701 |
| 1772 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); | 1702 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); |
| 1773 EXPECT_EQ(1u, manager_.consecutive_rto_count()); | 1703 EXPECT_EQ(1u, manager_.consecutive_rto_count()); |
| 1774 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); | 1704 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); |
| 1775 } | 1705 } |
| 1776 | 1706 |
| 1777 } // namespace | 1707 } // namespace |
| 1778 } // namespace test | 1708 } // namespace test |
| 1779 } // namespace net | 1709 } // namespace net |
| OLD | NEW |