| 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/test_tools/quic_config_peer.h" | 8 #include "net/quic/test_tools/quic_config_peer.h" |
| 9 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" | 9 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" |
| 10 #include "net/quic/test_tools/quic_test_utils.h" | 10 #include "net/quic/test_tools/quic_test_utils.h" |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 vector<QuicPacketSequenceNumber> lost_vector; | 109 vector<QuicPacketSequenceNumber> lost_vector; |
| 110 for (size_t i = 0; i < num_packets_lost; ++i) { | 110 for (size_t i = 0; i < num_packets_lost; ++i) { |
| 111 lost_vector.push_back(packets_lost[i]); | 111 lost_vector.push_back(packets_lost[i]); |
| 112 } | 112 } |
| 113 EXPECT_CALL(*send_algorithm_, | 113 EXPECT_CALL(*send_algorithm_, |
| 114 OnCongestionEvent(rtt_updated, _, | 114 OnCongestionEvent(rtt_updated, _, |
| 115 Pointwise(KeyEq(), ack_vector), | 115 Pointwise(KeyEq(), ack_vector), |
| 116 Pointwise(KeyEq(), lost_vector))); | 116 Pointwise(KeyEq(), lost_vector))); |
| 117 } | 117 } |
| 118 | 118 |
| 119 // Retransmits a packet as though it was a TLP retransmission, because TLP |
| 120 // leaves the |old_sequence_number| pending. |
| 121 // TODO(ianswett): Test with transmission types besides TLP. |
| 119 void RetransmitPacket(QuicPacketSequenceNumber old_sequence_number, | 122 void RetransmitPacket(QuicPacketSequenceNumber old_sequence_number, |
| 120 QuicPacketSequenceNumber new_sequence_number) { | 123 QuicPacketSequenceNumber new_sequence_number) { |
| 121 QuicSentPacketManagerPeer::MarkForRetransmission( | 124 QuicSentPacketManagerPeer::MarkForRetransmission( |
| 122 &manager_, old_sequence_number, LOSS_RETRANSMISSION); | 125 &manager_, old_sequence_number, TLP_RETRANSMISSION); |
| 123 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 126 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
| 124 QuicSentPacketManager::PendingRetransmission next_retransmission = | 127 QuicSentPacketManager::PendingRetransmission next_retransmission = |
| 125 manager_.NextPendingRetransmission(); | 128 manager_.NextPendingRetransmission(); |
| 126 EXPECT_EQ(old_sequence_number, next_retransmission.sequence_number); | 129 EXPECT_EQ(old_sequence_number, next_retransmission.sequence_number); |
| 127 EXPECT_EQ(LOSS_RETRANSMISSION, | 130 EXPECT_EQ(TLP_RETRANSMISSION, |
| 128 next_retransmission.transmission_type); | 131 next_retransmission.transmission_type); |
| 129 manager_.OnRetransmittedPacket(old_sequence_number, new_sequence_number); | 132 manager_.OnRetransmittedPacket(old_sequence_number, new_sequence_number); |
| 130 EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission( | 133 EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission( |
| 131 &manager_, new_sequence_number)); | 134 &manager_, new_sequence_number)); |
| 132 } | 135 } |
| 133 | 136 |
| 134 void RetransmitAndSendPacket(QuicPacketSequenceNumber old_sequence_number, | 137 void RetransmitAndSendPacket(QuicPacketSequenceNumber old_sequence_number, |
| 135 QuicPacketSequenceNumber new_sequence_number) { | 138 QuicPacketSequenceNumber new_sequence_number) { |
| 136 RetransmitPacket(old_sequence_number, new_sequence_number); | 139 RetransmitPacket(old_sequence_number, new_sequence_number); |
| 137 | 140 |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 // Packet 1 is unacked, pending, but not retransmittable. | 283 // Packet 1 is unacked, pending, but not retransmittable. |
| 281 QuicPacketSequenceNumber unacked[] = { 1 }; | 284 QuicPacketSequenceNumber unacked[] = { 1 }; |
| 282 VerifyUnackedPackets(unacked, arraysize(unacked)); | 285 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 283 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 286 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
| 284 VerifyRetransmittablePackets(NULL, 0); | 287 VerifyRetransmittablePackets(NULL, 0); |
| 285 } | 288 } |
| 286 | 289 |
| 287 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) { | 290 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) { |
| 288 SendDataPacket(1); | 291 SendDataPacket(1); |
| 289 QuicSentPacketManagerPeer::MarkForRetransmission( | 292 QuicSentPacketManagerPeer::MarkForRetransmission( |
| 290 &manager_, 1, LOSS_RETRANSMISSION); | 293 &manager_, 1, TLP_RETRANSMISSION); |
| 291 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 294 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
| 292 | 295 |
| 293 // Ack 1. | 296 // Ack 1. |
| 294 ReceivedPacketInfo received_info; | 297 ReceivedPacketInfo received_info; |
| 295 received_info.largest_observed = 1; | 298 received_info.largest_observed = 1; |
| 296 ExpectAck(1); | 299 ExpectAck(1); |
| 297 manager_.OnIncomingAck(received_info, clock_.Now()); | 300 manager_.OnIncomingAck(received_info, clock_.Now()); |
| 298 | 301 |
| 299 // There should no longer be a pending retransmission. | 302 // There should no longer be a pending retransmission. |
| 300 EXPECT_FALSE(manager_.HasPendingRetransmissions()); | 303 EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
| (...skipping 889 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1190 | 1193 |
| 1191 EXPECT_EQ(kTime, | 1194 EXPECT_EQ(kTime, |
| 1192 QuicSentPacketManagerPeer::GetLossAlgorithm( | 1195 QuicSentPacketManagerPeer::GetLossAlgorithm( |
| 1193 &manager_)->GetLossDetectionType()); | 1196 &manager_)->GetLossDetectionType()); |
| 1194 } | 1197 } |
| 1195 | 1198 |
| 1196 | 1199 |
| 1197 } // namespace | 1200 } // namespace |
| 1198 } // namespace test | 1201 } // namespace test |
| 1199 } // namespace net | 1202 } // namespace net |
| OLD | NEW |