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 |