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