| 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_sent_packet_manager_peer.h" | 8 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" |
| 9 #include "net/quic/test_tools/quic_test_utils.h" | 9 #include "net/quic/test_tools/quic_test_utils.h" |
| 10 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 | 34 |
| 35 ~QuicSentPacketManagerTest() { | 35 ~QuicSentPacketManagerTest() { |
| 36 STLDeleteElements(&packets_); | 36 STLDeleteElements(&packets_); |
| 37 } | 37 } |
| 38 | 38 |
| 39 void VerifyUnackedPackets(QuicPacketSequenceNumber* packets, | 39 void VerifyUnackedPackets(QuicPacketSequenceNumber* packets, |
| 40 size_t num_packets) { | 40 size_t num_packets) { |
| 41 if (num_packets == 0) { | 41 if (num_packets == 0) { |
| 42 EXPECT_FALSE(manager_.HasUnackedPackets()); | 42 EXPECT_FALSE(manager_.HasUnackedPackets()); |
| 43 EXPECT_EQ(0u, manager_.GetNumRetransmittablePackets()); | 43 EXPECT_EQ(0u, manager_.GetNumRetransmittablePackets()); |
| 44 EXPECT_FALSE(manager_.HasUnackedPackets()); | |
| 45 return; | 44 return; |
| 46 } | 45 } |
| 47 | 46 |
| 48 EXPECT_TRUE(manager_.HasUnackedPackets()); | 47 EXPECT_TRUE(manager_.HasUnackedPackets()); |
| 49 EXPECT_EQ(packets[0], manager_.GetLeastUnackedSentPacket()); | 48 EXPECT_EQ(packets[0], manager_.GetLeastUnackedSentPacket()); |
| 50 for (size_t i = 0; i < num_packets; ++i) { | 49 for (size_t i = 0; i < num_packets; ++i) { |
| 51 EXPECT_TRUE(manager_.IsUnacked(packets[i])) << packets[i]; | 50 EXPECT_TRUE(manager_.IsUnacked(packets[i])) << packets[i]; |
| 52 } | 51 } |
| 53 } | 52 } |
| 54 | 53 |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 NULL, 0, false, PACKET_8BYTE_GUID, false, | 109 NULL, 0, false, PACKET_8BYTE_GUID, false, |
| 111 PACKET_6BYTE_SEQUENCE_NUMBER)); | 110 PACKET_6BYTE_SEQUENCE_NUMBER)); |
| 112 return SerializedPacket(sequence_number, PACKET_6BYTE_SEQUENCE_NUMBER, | 111 return SerializedPacket(sequence_number, PACKET_6BYTE_SEQUENCE_NUMBER, |
| 113 packets_.back(), 0u, NULL); | 112 packets_.back(), 0u, NULL); |
| 114 } | 113 } |
| 115 | 114 |
| 116 void SendDataPacket(QuicPacketSequenceNumber sequence_number) { | 115 void SendDataPacket(QuicPacketSequenceNumber sequence_number) { |
| 117 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, sequence_number, _, _, _)) | 116 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, sequence_number, _, _, _)) |
| 118 .Times(1).WillOnce(Return(true)); | 117 .Times(1).WillOnce(Return(true)); |
| 119 SerializedPacket packet(CreatePacket(sequence_number)); | 118 SerializedPacket packet(CreatePacket(sequence_number)); |
| 120 manager_.OnSerializedPacket(packet, clock_.ApproximateNow()); | 119 manager_.OnSerializedPacket(packet); |
| 121 manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(), | 120 manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(), |
| 122 packet.packet->length(), NOT_RETRANSMISSION, | 121 packet.packet->length(), NOT_RETRANSMISSION, |
| 123 HAS_RETRANSMITTABLE_DATA); | 122 HAS_RETRANSMITTABLE_DATA); |
| 124 } | 123 } |
| 125 | 124 |
| 126 // Based on QuicConnection's WritePendingRetransmissions. | 125 // Based on QuicConnection's WritePendingRetransmissions. |
| 127 void RetransmitNextPacket( | 126 void RetransmitNextPacket( |
| 128 QuicPacketSequenceNumber retransmission_sequence_number) { | 127 QuicPacketSequenceNumber retransmission_sequence_number) { |
| 129 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 128 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
| 130 EXPECT_CALL(*send_algorithm_, | 129 EXPECT_CALL(*send_algorithm_, |
| (...skipping 13 matching lines...) Expand all Loading... |
| 144 vector<QuicPacket*> packets_; | 143 vector<QuicPacket*> packets_; |
| 145 MockClock clock_; | 144 MockClock clock_; |
| 146 MockSendAlgorithm* send_algorithm_; | 145 MockSendAlgorithm* send_algorithm_; |
| 147 }; | 146 }; |
| 148 | 147 |
| 149 TEST_F(QuicSentPacketManagerTest, IsUnacked) { | 148 TEST_F(QuicSentPacketManagerTest, IsUnacked) { |
| 150 VerifyUnackedPackets(NULL, 0); | 149 VerifyUnackedPackets(NULL, 0); |
| 151 | 150 |
| 152 SerializedPacket serialized_packet(CreatePacket(1)); | 151 SerializedPacket serialized_packet(CreatePacket(1)); |
| 153 | 152 |
| 154 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); | 153 manager_.OnSerializedPacket(serialized_packet); |
| 155 | 154 |
| 156 QuicPacketSequenceNumber unacked[] = { 1 }; | 155 QuicPacketSequenceNumber unacked[] = { 1 }; |
| 157 VerifyUnackedPackets(unacked, arraysize(unacked)); | 156 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 158 QuicPacketSequenceNumber retransmittable[] = { 1 }; | 157 QuicPacketSequenceNumber retransmittable[] = { 1 }; |
| 159 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 158 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
| 160 } | 159 } |
| 161 | 160 |
| 162 TEST_F(QuicSentPacketManagerTest, IsUnAckedRetransmit) { | 161 TEST_F(QuicSentPacketManagerTest, IsUnAckedRetransmit) { |
| 163 SerializedPacket serialized_packet(CreatePacket(1)); | 162 SerializedPacket serialized_packet(CreatePacket(1)); |
| 164 | 163 |
| 165 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); | 164 manager_.OnSerializedPacket(serialized_packet); |
| 166 RetransmitPacket(1, 2); | 165 RetransmitPacket(1, 2); |
| 167 | 166 |
| 168 EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission(&manager_, 2)); | 167 EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission(&manager_, 2)); |
| 169 QuicPacketSequenceNumber unacked[] = { 1, 2 }; | 168 QuicPacketSequenceNumber unacked[] = { 1, 2 }; |
| 170 VerifyUnackedPackets(unacked, arraysize(unacked)); | 169 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 171 QuicPacketSequenceNumber retransmittable[] = { 2 }; | 170 QuicPacketSequenceNumber retransmittable[] = { 2 }; |
| 172 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 171 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
| 173 } | 172 } |
| 174 | 173 |
| 175 TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) { | 174 TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) { |
| 176 SerializedPacket serialized_packet(CreatePacket(1)); | 175 SerializedPacket serialized_packet(CreatePacket(1)); |
| 177 | 176 |
| 178 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); | 177 manager_.OnSerializedPacket(serialized_packet); |
| 179 RetransmitPacket(1, 2); | 178 RetransmitPacket(1, 2); |
| 180 | 179 |
| 181 // Ack 2 but not 1. | 180 // Ack 2 but not 1. |
| 182 ReceivedPacketInfo received_info; | 181 ReceivedPacketInfo received_info; |
| 183 received_info.largest_observed = 2; | 182 received_info.largest_observed = 2; |
| 184 received_info.missing_packets.insert(1); | 183 received_info.missing_packets.insert(1); |
| 185 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(3u)); | |
| 186 manager_.OnIncomingAck(received_info, QuicTime::Zero()); | 184 manager_.OnIncomingAck(received_info, QuicTime::Zero()); |
| 187 | 185 |
| 188 // No unacked packets remain. | 186 // No unacked packets remain. |
| 189 VerifyUnackedPackets(NULL, 0); | 187 VerifyUnackedPackets(NULL, 0); |
| 190 VerifyRetransmittablePackets(NULL, 0); | 188 VerifyRetransmittablePackets(NULL, 0); |
| 191 } | 189 } |
| 192 | 190 |
| 193 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) { | 191 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) { |
| 194 SerializedPacket serialized_packet(CreatePacket(1)); | 192 SerializedPacket serialized_packet(CreatePacket(1)); |
| 195 | 193 |
| 196 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); | 194 manager_.OnSerializedPacket(serialized_packet); |
| 197 QuicSentPacketManagerPeer::MarkForRetransmission( | 195 QuicSentPacketManagerPeer::MarkForRetransmission( |
| 198 &manager_, 1, NACK_RETRANSMISSION); | 196 &manager_, 1, NACK_RETRANSMISSION); |
| 199 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 197 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
| 200 | 198 |
| 201 // Ack 1. | 199 // Ack 1. |
| 202 ReceivedPacketInfo received_info; | 200 ReceivedPacketInfo received_info; |
| 203 received_info.largest_observed = 1; | 201 received_info.largest_observed = 1; |
| 204 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(2u)); | |
| 205 manager_.OnIncomingAck(received_info, QuicTime::Zero()); | 202 manager_.OnIncomingAck(received_info, QuicTime::Zero()); |
| 206 | 203 |
| 207 // There should no longer be a pending retransmission. | 204 // There should no longer be a pending retransmission. |
| 208 EXPECT_FALSE(manager_.HasPendingRetransmissions()); | 205 EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
| 209 | 206 |
| 210 // No unacked packets remain. | 207 // No unacked packets remain. |
| 211 VerifyUnackedPackets(NULL, 0); | 208 VerifyUnackedPackets(NULL, 0); |
| 212 VerifyRetransmittablePackets(NULL, 0); | 209 VerifyRetransmittablePackets(NULL, 0); |
| 213 } | 210 } |
| 214 | 211 |
| 215 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPrevious) { | 212 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckPrevious) { |
| 216 SerializedPacket serialized_packet(CreatePacket(1)); | 213 SerializedPacket serialized_packet(CreatePacket(1)); |
| 217 | 214 |
| 218 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); | 215 manager_.OnSerializedPacket(serialized_packet); |
| 219 RetransmitPacket(1, 2); | 216 RetransmitPacket(1, 2); |
| 220 | 217 |
| 221 // Ack 1 but not 2. | 218 // Ack 1 but not 2. |
| 222 ReceivedPacketInfo received_info; | 219 ReceivedPacketInfo received_info; |
| 223 received_info.largest_observed = 1; | 220 received_info.largest_observed = 1; |
| 224 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(3u)); | |
| 225 manager_.OnIncomingAck(received_info, QuicTime::Zero()); | 221 manager_.OnIncomingAck(received_info, QuicTime::Zero()); |
| 226 | 222 |
| 227 // 2 remains unacked, but no packets have retransmittable data. | 223 // 2 remains unacked, but no packets have retransmittable data. |
| 228 QuicPacketSequenceNumber unacked[] = { 2 }; | 224 QuicPacketSequenceNumber unacked[] = { 2 }; |
| 229 VerifyUnackedPackets(unacked, arraysize(unacked)); | 225 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 230 VerifyRetransmittablePackets(NULL, 0); | 226 VerifyRetransmittablePackets(NULL, 0); |
| 231 | 227 |
| 232 // Verify that if the retransmission alarm does fire to abandon packet 2, | 228 // Verify that if the retransmission alarm does fire to abandon packet 2, |
| 233 // the sent packet manager is not notified, since there is no retransmittable | 229 // the sent packet manager is not notified, since there is no retransmittable |
| 234 // data outstanding. | 230 // data outstanding. |
| 231 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) |
| 232 .WillOnce(Return(QuicTime::Delta::FromMilliseconds(1))); |
| 235 manager_.OnRetransmissionTimeout(); | 233 manager_.OnRetransmissionTimeout(); |
| 236 } | 234 } |
| 237 | 235 |
| 238 TEST_F(QuicSentPacketManagerTest, RetransmitTwiceThenAckFirst) { | 236 TEST_F(QuicSentPacketManagerTest, RetransmitTwiceThenAckFirst) { |
| 239 SerializedPacket serialized_packet(CreatePacket(1)); | 237 SerializedPacket serialized_packet(CreatePacket(1)); |
| 240 | 238 |
| 241 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); | 239 manager_.OnSerializedPacket(serialized_packet); |
| 242 RetransmitPacket(1, 2); | 240 RetransmitPacket(1, 2); |
| 243 RetransmitPacket(2, 3); | 241 RetransmitPacket(2, 3); |
| 244 | 242 |
| 245 // Ack 1 but not 2 or 3. | 243 // Ack 1 but not 2 or 3. |
| 246 ReceivedPacketInfo received_info; | 244 ReceivedPacketInfo received_info; |
| 247 received_info.largest_observed = 1; | 245 received_info.largest_observed = 1; |
| 248 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(4u)); | |
| 249 manager_.OnIncomingAck(received_info, QuicTime::Zero()); | 246 manager_.OnIncomingAck(received_info, QuicTime::Zero()); |
| 250 | 247 |
| 251 // 3 remains unacked, but no packets have retransmittable data. | 248 // 3 remains unacked, but no packets have retransmittable data. |
| 252 QuicPacketSequenceNumber unacked[] = { 3 }; | 249 QuicPacketSequenceNumber unacked[] = { 3 }; |
| 253 VerifyUnackedPackets(unacked, arraysize(unacked)); | 250 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 254 VerifyRetransmittablePackets(NULL, 0); | 251 VerifyRetransmittablePackets(NULL, 0); |
| 255 | 252 |
| 256 // Verify that if the retransmission alarm does fire to abandon packet 3, | 253 // Verify that if the retransmission alarm does fire to abandon packet 3, |
| 257 // the sent packet manager is not notified, since there is no retransmittable | 254 // the sent packet manager is not notified, since there is no retransmittable |
| 258 // data outstanding. | 255 // data outstanding. |
| 256 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) |
| 257 .WillOnce(Return(QuicTime::Delta::FromMilliseconds(1))); |
| 259 manager_.OnRetransmissionTimeout(); | 258 manager_.OnRetransmissionTimeout(); |
| 260 } | 259 } |
| 261 | 260 |
| 262 TEST_F(QuicSentPacketManagerTest, TruncatedAck) { | 261 TEST_F(QuicSentPacketManagerTest, TruncatedAck) { |
| 263 SerializedPacket serialized_packet(CreatePacket(1)); | 262 SerializedPacket serialized_packet(CreatePacket(1)); |
| 264 | 263 |
| 265 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); | 264 manager_.OnSerializedPacket(serialized_packet); |
| 266 RetransmitPacket(1, 2); | 265 RetransmitPacket(1, 2); |
| 267 RetransmitPacket(2, 3); | 266 RetransmitPacket(2, 3); |
| 268 RetransmitPacket(3, 4); | 267 RetransmitPacket(3, 4); |
| 269 | 268 |
| 270 // Truncated ack with 2 NACKs | 269 // Truncated ack with 2 NACKs |
| 271 ReceivedPacketInfo received_info; | 270 ReceivedPacketInfo received_info; |
| 272 received_info.largest_observed = 2; | 271 received_info.largest_observed = 2; |
| 273 received_info.missing_packets.insert(1); | 272 received_info.missing_packets.insert(1); |
| 274 received_info.missing_packets.insert(2); | 273 received_info.missing_packets.insert(2); |
| 275 received_info.is_truncated = true; | 274 received_info.is_truncated = true; |
| 276 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(5u)); | |
| 277 manager_.OnIncomingAck(received_info, QuicTime::Zero()); | 275 manager_.OnIncomingAck(received_info, QuicTime::Zero()); |
| 278 | 276 |
| 279 // High water mark will be raised. | 277 // High water mark will be raised. |
| 280 QuicPacketSequenceNumber unacked[] = { 2, 3, 4 }; | 278 QuicPacketSequenceNumber unacked[] = { 2, 3, 4 }; |
| 281 VerifyUnackedPackets(unacked, arraysize(unacked)); | 279 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 282 QuicPacketSequenceNumber retransmittable[] = { 4 }; | 280 QuicPacketSequenceNumber retransmittable[] = { 4 }; |
| 283 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 281 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
| 284 } | 282 } |
| 285 | 283 |
| 286 TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) { | 284 TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) { |
| 287 manager_.OnSerializedPacket(CreatePacket(1), QuicTime::Zero()); | 285 manager_.OnSerializedPacket(CreatePacket(1)); |
| 288 manager_.OnSerializedPacket(CreatePacket(2), QuicTime::Zero()); | 286 manager_.OnSerializedPacket(CreatePacket(2)); |
| 289 manager_.OnSerializedPacket(CreatePacket(3), QuicTime::Zero()); | 287 manager_.OnSerializedPacket(CreatePacket(3)); |
| 290 | 288 |
| 291 { | 289 { |
| 292 // Ack packets 1 and 3. | 290 // Ack packets 1 and 3. |
| 293 ReceivedPacketInfo received_info; | 291 ReceivedPacketInfo received_info; |
| 294 received_info.largest_observed = 3; | 292 received_info.largest_observed = 3; |
| 295 received_info.missing_packets.insert(2); | 293 received_info.missing_packets.insert(2); |
| 296 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(4u)); | |
| 297 manager_.OnIncomingAck(received_info, QuicTime::Zero()); | 294 manager_.OnIncomingAck(received_info, QuicTime::Zero()); |
| 298 | 295 |
| 299 QuicPacketSequenceNumber unacked[] = { 2 }; | 296 QuicPacketSequenceNumber unacked[] = { 2 }; |
| 300 VerifyUnackedPackets(unacked, arraysize(unacked)); | 297 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 301 QuicPacketSequenceNumber retransmittable[] = { 2 }; | 298 QuicPacketSequenceNumber retransmittable[] = { 2 }; |
| 302 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 299 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
| 303 } | 300 } |
| 304 | 301 |
| 305 manager_.OnSerializedPacket(CreatePacket(4), QuicTime::Zero()); | 302 manager_.OnSerializedPacket(CreatePacket(4)); |
| 306 manager_.OnSerializedPacket(CreatePacket(5), QuicTime::Zero()); | 303 manager_.OnSerializedPacket(CreatePacket(5)); |
| 307 | 304 |
| 308 { | 305 { |
| 309 // Ack packets 5. | 306 // Ack packets 5. |
| 310 ReceivedPacketInfo received_info; | 307 ReceivedPacketInfo received_info; |
| 311 received_info.largest_observed = 5; | 308 received_info.largest_observed = 5; |
| 312 received_info.missing_packets.insert(2); | 309 received_info.missing_packets.insert(2); |
| 313 received_info.missing_packets.insert(4); | 310 received_info.missing_packets.insert(4); |
| 314 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(6u)); | |
| 315 manager_.OnIncomingAck(received_info, QuicTime::Zero()); | 311 manager_.OnIncomingAck(received_info, QuicTime::Zero()); |
| 316 | 312 |
| 317 QuicPacketSequenceNumber unacked[] = { 2, 4 }; | 313 QuicPacketSequenceNumber unacked[] = { 2, 4 }; |
| 318 VerifyUnackedPackets(unacked, arraysize(unacked)); | 314 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 319 QuicPacketSequenceNumber retransmittable[] = { 2, 4 }; | 315 QuicPacketSequenceNumber retransmittable[] = { 2, 4 }; |
| 320 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 316 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
| 321 } | 317 } |
| 322 | 318 |
| 323 manager_.OnSerializedPacket(CreatePacket(6), QuicTime::Zero()); | 319 manager_.OnSerializedPacket(CreatePacket(6)); |
| 324 manager_.OnSerializedPacket(CreatePacket(7), QuicTime::Zero()); | 320 manager_.OnSerializedPacket(CreatePacket(7)); |
| 325 | 321 |
| 326 { | 322 { |
| 327 // Ack packets 7. | 323 // Ack packets 7. |
| 328 ReceivedPacketInfo received_info; | 324 ReceivedPacketInfo received_info; |
| 329 received_info.largest_observed = 7; | 325 received_info.largest_observed = 7; |
| 330 received_info.missing_packets.insert(2); | 326 received_info.missing_packets.insert(2); |
| 331 received_info.missing_packets.insert(4); | 327 received_info.missing_packets.insert(4); |
| 332 received_info.missing_packets.insert(6); | 328 received_info.missing_packets.insert(6); |
| 333 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(8u)); | |
| 334 manager_.OnIncomingAck(received_info, QuicTime::Zero()); | 329 manager_.OnIncomingAck(received_info, QuicTime::Zero()); |
| 335 | 330 |
| 336 QuicPacketSequenceNumber unacked[] = { 2, 4, 6 }; | 331 QuicPacketSequenceNumber unacked[] = { 2, 4, 6 }; |
| 337 VerifyUnackedPackets(unacked, arraysize(unacked)); | 332 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 338 QuicPacketSequenceNumber retransmittable[] = { 2, 4, 6 }; | 333 QuicPacketSequenceNumber retransmittable[] = { 2, 4, 6 }; |
| 339 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 334 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
| 340 } | 335 } |
| 341 | 336 |
| 342 RetransmitPacket(2, 8); | 337 RetransmitPacket(2, 8); |
| 343 manager_.OnSerializedPacket(CreatePacket(9), QuicTime::Zero()); | 338 manager_.OnSerializedPacket(CreatePacket(9)); |
| 344 manager_.OnSerializedPacket(CreatePacket(10), QuicTime::Zero()); | 339 manager_.OnSerializedPacket(CreatePacket(10)); |
| 345 | 340 |
| 346 { | 341 { |
| 347 // Ack packet 10. | 342 // Ack packet 10. |
| 348 ReceivedPacketInfo received_info; | 343 ReceivedPacketInfo received_info; |
| 349 received_info.largest_observed = 10; | 344 received_info.largest_observed = 10; |
| 350 received_info.missing_packets.insert(2); | 345 received_info.missing_packets.insert(2); |
| 351 received_info.missing_packets.insert(4); | 346 received_info.missing_packets.insert(4); |
| 352 received_info.missing_packets.insert(6); | 347 received_info.missing_packets.insert(6); |
| 353 received_info.missing_packets.insert(8); | 348 received_info.missing_packets.insert(8); |
| 354 received_info.missing_packets.insert(9); | 349 received_info.missing_packets.insert(9); |
| 355 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(11u)); | |
| 356 manager_.OnIncomingAck(received_info, QuicTime::Zero()); | 350 manager_.OnIncomingAck(received_info, QuicTime::Zero()); |
| 357 | 351 |
| 358 QuicPacketSequenceNumber unacked[] = { 2, 4, 6, 8, 9 }; | 352 QuicPacketSequenceNumber unacked[] = { 2, 4, 6, 8, 9 }; |
| 359 VerifyUnackedPackets(unacked, arraysize(unacked)); | 353 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 360 QuicPacketSequenceNumber retransmittable[] = { 4, 6, 8, 9 }; | 354 QuicPacketSequenceNumber retransmittable[] = { 4, 6, 8, 9 }; |
| 361 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 355 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
| 362 } | 356 } |
| 363 | 357 |
| 364 | 358 |
| 365 RetransmitPacket(4, 11); | 359 RetransmitPacket(4, 11); |
| 366 manager_.OnSerializedPacket(CreatePacket(12), QuicTime::Zero()); | 360 manager_.OnSerializedPacket(CreatePacket(12)); |
| 367 manager_.OnSerializedPacket(CreatePacket(13), QuicTime::Zero()); | 361 manager_.OnSerializedPacket(CreatePacket(13)); |
| 368 | 362 |
| 369 { | 363 { |
| 370 // Ack packet 13. | 364 // Ack packet 13. |
| 371 ReceivedPacketInfo received_info; | 365 ReceivedPacketInfo received_info; |
| 372 received_info.largest_observed = 13; | 366 received_info.largest_observed = 13; |
| 373 received_info.missing_packets.insert(2); | 367 received_info.missing_packets.insert(2); |
| 374 received_info.missing_packets.insert(4); | 368 received_info.missing_packets.insert(4); |
| 375 received_info.missing_packets.insert(6); | 369 received_info.missing_packets.insert(6); |
| 376 received_info.missing_packets.insert(8); | 370 received_info.missing_packets.insert(8); |
| 377 received_info.missing_packets.insert(9); | 371 received_info.missing_packets.insert(9); |
| 378 received_info.missing_packets.insert(11); | 372 received_info.missing_packets.insert(11); |
| 379 received_info.missing_packets.insert(12); | 373 received_info.missing_packets.insert(12); |
| 380 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(14u)); | |
| 381 manager_.OnIncomingAck(received_info, QuicTime::Zero()); | 374 manager_.OnIncomingAck(received_info, QuicTime::Zero()); |
| 382 | 375 |
| 383 QuicPacketSequenceNumber unacked[] = { 2, 4, 6, 8, 9, 11, 12 }; | 376 QuicPacketSequenceNumber unacked[] = { 2, 4, 6, 8, 9, 11, 12 }; |
| 384 VerifyUnackedPackets(unacked, arraysize(unacked)); | 377 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 385 QuicPacketSequenceNumber retransmittable[] = { 6, 8, 9, 11, 12 }; | 378 QuicPacketSequenceNumber retransmittable[] = { 6, 8, 9, 11, 12 }; |
| 386 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 379 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
| 387 } | 380 } |
| 388 | 381 |
| 389 RetransmitPacket(6, 14); | 382 RetransmitPacket(6, 14); |
| 390 manager_.OnSerializedPacket(CreatePacket(15), QuicTime::Zero()); | 383 manager_.OnSerializedPacket(CreatePacket(15)); |
| 391 manager_.OnSerializedPacket(CreatePacket(16), QuicTime::Zero()); | 384 manager_.OnSerializedPacket(CreatePacket(16)); |
| 392 | 385 |
| 393 { | 386 { |
| 394 // Ack packet 16. | 387 // Ack packet 16. |
| 395 ReceivedPacketInfo received_info; | 388 ReceivedPacketInfo received_info; |
| 396 received_info.largest_observed = 13; | 389 received_info.largest_observed = 13; |
| 397 received_info.missing_packets.insert(2); | 390 received_info.missing_packets.insert(2); |
| 398 received_info.missing_packets.insert(4); | 391 received_info.missing_packets.insert(4); |
| 399 received_info.missing_packets.insert(6); | 392 received_info.missing_packets.insert(6); |
| 400 received_info.missing_packets.insert(8); | 393 received_info.missing_packets.insert(8); |
| 401 received_info.missing_packets.insert(9); | 394 received_info.missing_packets.insert(9); |
| 402 received_info.missing_packets.insert(11); | 395 received_info.missing_packets.insert(11); |
| 403 received_info.missing_packets.insert(12); | 396 received_info.missing_packets.insert(12); |
| 404 received_info.is_truncated = true; | 397 received_info.is_truncated = true; |
| 405 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(17u)); | |
| 406 manager_.OnIncomingAck(received_info, QuicTime::Zero()); | 398 manager_.OnIncomingAck(received_info, QuicTime::Zero()); |
| 407 | 399 |
| 408 // Truncated ack raises the high water mark by clearing out 2, 4, and 6. | 400 // Truncated ack raises the high water mark by clearing out 2, 4, and 6. |
| 409 QuicPacketSequenceNumber unacked[] = { 8, 9, 11, 12, 14, 15, 16 }; | 401 QuicPacketSequenceNumber unacked[] = { 8, 9, 11, 12, 14, 15, 16 }; |
| 410 VerifyUnackedPackets(unacked, arraysize(unacked)); | 402 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 411 QuicPacketSequenceNumber retransmittable[] = { 8, 9, 11, 12, 14, 15, 16 }; | 403 QuicPacketSequenceNumber retransmittable[] = { 8, 9, 11, 12, 14, 15, 16 }; |
| 412 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); | 404 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); |
| 413 } | 405 } |
| 414 } | 406 } |
| 415 | 407 |
| 416 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) { | 408 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) { |
| 417 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(1u)); | 409 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(1u)); |
| 418 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); | 410 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); |
| 419 } | 411 } |
| 420 | 412 |
| 421 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnacked) { | 413 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnacked) { |
| 422 SerializedPacket serialized_packet(CreatePacket(1)); | 414 SerializedPacket serialized_packet(CreatePacket(1)); |
| 423 | 415 |
| 424 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); | 416 manager_.OnSerializedPacket(serialized_packet); |
| 425 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); | 417 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); |
| 426 } | 418 } |
| 427 | 419 |
| 428 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnackedFec) { | 420 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnackedFec) { |
| 429 SerializedPacket serialized_packet(CreateFecPacket(1)); | 421 SerializedPacket serialized_packet(CreateFecPacket(1)); |
| 430 | 422 |
| 431 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); | 423 manager_.OnSerializedPacket(serialized_packet); |
| 432 // FEC packets do not count as "unacked". | 424 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); |
| 433 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(2u)); | |
| 434 EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket()); | |
| 435 } | 425 } |
| 436 | 426 |
| 437 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketDiscardUnacked) { | 427 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketDiscardUnacked) { |
| 438 SerializedPacket serialized_packet(CreatePacket(1)); | 428 SerializedPacket serialized_packet(CreatePacket(1)); |
| 439 | 429 |
| 440 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); | 430 manager_.OnSerializedPacket(serialized_packet); |
| 441 manager_.DiscardUnackedPacket(1u); | 431 manager_.DiscardUnackedPacket(1u); |
| 442 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(2u)); | 432 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(2u)); |
| 443 EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket()); | 433 EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket()); |
| 444 } | 434 } |
| 445 | 435 |
| 446 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedFecPacketAndDiscard) { | 436 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedPacketAndDiscard) { |
| 447 VerifyUnackedPackets(NULL, 0); | 437 VerifyUnackedPackets(NULL, 0); |
| 448 | 438 |
| 449 SerializedPacket serialized_packet(CreateFecPacket(1)); | 439 SerializedPacket serialized_packet(CreateFecPacket(1)); |
| 450 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); | 440 manager_.OnSerializedPacket(serialized_packet); |
| 451 EXPECT_EQ(1u, manager_.GetLeastUnackedFecPacket()); | 441 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); |
| 452 | 442 |
| 453 SerializedPacket serialized_packet2(CreateFecPacket(2)); | 443 SerializedPacket serialized_packet2(CreateFecPacket(2)); |
| 454 manager_.OnSerializedPacket(serialized_packet2, QuicTime::Zero()); | 444 manager_.OnSerializedPacket(serialized_packet2); |
| 455 EXPECT_EQ(1u, manager_.GetLeastUnackedFecPacket()); | 445 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); |
| 456 | 446 |
| 457 SerializedPacket serialized_packet3(CreateFecPacket(3)); | 447 SerializedPacket serialized_packet3(CreateFecPacket(3)); |
| 458 manager_.OnSerializedPacket(serialized_packet3, QuicTime::Zero()); | 448 manager_.OnSerializedPacket(serialized_packet3); |
| 459 EXPECT_EQ(1u, manager_.GetLeastUnackedFecPacket()); | 449 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); |
| 460 | 450 |
| 461 VerifyUnackedPackets(NULL, 0); | 451 QuicPacketSequenceNumber unacked[] = { 1, 2, 3 }; |
| 452 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 462 VerifyRetransmittablePackets(NULL, 0); | 453 VerifyRetransmittablePackets(NULL, 0); |
| 463 | 454 |
| 464 manager_.DiscardFecPacket(1); | 455 manager_.DiscardUnackedPacket(1); |
| 465 EXPECT_EQ(2u, manager_.GetLeastUnackedFecPacket()); | 456 EXPECT_EQ(2u, manager_.GetLeastUnackedSentPacket()); |
| 466 | 457 |
| 467 // Ack 2. | 458 // Ack 2. |
| 468 ReceivedPacketInfo received_info; | 459 ReceivedPacketInfo received_info; |
| 469 received_info.largest_observed = 2; | 460 received_info.largest_observed = 2; |
| 470 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(4u)); | |
| 471 manager_.OnIncomingAck(received_info, QuicTime::Zero()); | 461 manager_.OnIncomingAck(received_info, QuicTime::Zero()); |
| 472 | 462 |
| 473 EXPECT_EQ(3u, manager_.GetLeastUnackedFecPacket()); | 463 EXPECT_EQ(3u, manager_.GetLeastUnackedSentPacket()); |
| 474 | 464 |
| 475 // Discard the 3rd packet and ensure there are no FEC packets. | 465 // Discard the 3rd packet and ensure there are no FEC packets. |
| 476 manager_.DiscardFecPacket(3); | 466 manager_.DiscardUnackedPacket(3); |
| 477 EXPECT_FALSE(manager_.HasUnackedFecPackets()); | 467 EXPECT_FALSE(manager_.HasUnackedPackets()); |
| 478 } | 468 } |
| 479 | 469 |
| 480 TEST_F(QuicSentPacketManagerTest, GetFecSentTime) { | 470 TEST_F(QuicSentPacketManagerTest, GetSentTime) { |
| 481 VerifyUnackedPackets(NULL, 0); | 471 VerifyUnackedPackets(NULL, 0); |
| 482 | 472 |
| 483 SerializedPacket serialized_packet(CreateFecPacket(1)); | 473 SerializedPacket serialized_packet(CreateFecPacket(1)); |
| 484 manager_.OnSerializedPacket(serialized_packet, QuicTime::Zero()); | 474 manager_.OnSerializedPacket(serialized_packet); |
| 475 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, 1, _, _, _)) |
| 476 .Times(1).WillOnce(Return(true)); |
| 477 manager_.OnPacketSent( |
| 478 1, QuicTime::Zero(), 0, NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); |
| 485 SerializedPacket serialized_packet2(CreateFecPacket(2)); | 479 SerializedPacket serialized_packet2(CreateFecPacket(2)); |
| 486 QuicTime sent_time = QuicTime::Zero().Add(QuicTime::Delta::FromSeconds(1)); | 480 QuicTime sent_time = QuicTime::Zero().Add(QuicTime::Delta::FromSeconds(1)); |
| 487 manager_.OnSerializedPacket(serialized_packet2, sent_time); | 481 manager_.OnSerializedPacket(serialized_packet2); |
| 482 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, 2, _, _, _)) |
| 483 .Times(1).WillOnce(Return(true)); |
| 484 manager_.OnPacketSent( |
| 485 2, sent_time, 0, NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); |
| 488 | 486 |
| 489 VerifyUnackedPackets(NULL, 0); | 487 QuicPacketSequenceNumber unacked[] = { 1, 2 }; |
| 488 VerifyUnackedPackets(unacked, arraysize(unacked)); |
| 490 VerifyRetransmittablePackets(NULL, 0); | 489 VerifyRetransmittablePackets(NULL, 0); |
| 491 | 490 |
| 492 EXPECT_TRUE(manager_.HasUnackedFecPackets()); | 491 EXPECT_TRUE(manager_.HasUnackedPackets()); |
| 493 EXPECT_EQ(QuicTime::Zero(), manager_.GetFecSentTime(1)); | 492 EXPECT_EQ(QuicTime::Zero(), |
| 494 EXPECT_EQ(sent_time, manager_.GetFecSentTime(2)); | 493 QuicSentPacketManagerPeer::GetSentTime(&manager_, 1)); |
| 494 EXPECT_EQ(sent_time, QuicSentPacketManagerPeer::GetSentTime(&manager_, 2)); |
| 495 } | 495 } |
| 496 | 496 |
| 497 TEST_F(QuicSentPacketManagerTest, NackRetransmit1Packet) { | 497 TEST_F(QuicSentPacketManagerTest, NackRetransmit1Packet) { |
| 498 const size_t kNumSentPackets = 4; | 498 const size_t kNumSentPackets = 4; |
| 499 // Transmit 4 packets. | 499 // Transmit 4 packets. |
| 500 for (size_t i = 1; i <= kNumSentPackets; ++i) { | 500 for (size_t i = 1; i <= kNumSentPackets; ++i) { |
| 501 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) | 501 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) |
| 502 .Times(1).WillOnce(Return(true)); | 502 .Times(1).WillOnce(Return(true)); |
| 503 manager_.OnPacketSent(i, clock_.Now(), 1000, | 503 manager_.OnPacketSent(i, clock_.Now(), 1000, |
| 504 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); | 504 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); |
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 819 received_info.largest_observed = sequence_number; | 819 received_info.largest_observed = sequence_number; |
| 820 received_info.delta_time_largest_observed = QuicTime::Delta::Zero(); | 820 received_info.delta_time_largest_observed = QuicTime::Delta::Zero(); |
| 821 manager_.OnIncomingAckFrame(received_info, clock_.Now()); | 821 manager_.OnIncomingAckFrame(received_info, clock_.Now()); |
| 822 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_)); | 822 EXPECT_EQ(expected_rtt, QuicSentPacketManagerPeer::rtt(&manager_)); |
| 823 } | 823 } |
| 824 | 824 |
| 825 TEST_F(QuicSentPacketManagerTest, RetransmissionTimeout) { | 825 TEST_F(QuicSentPacketManagerTest, RetransmissionTimeout) { |
| 826 // Send 100 packets and then ensure all are abandoned when the RTO fires. | 826 // Send 100 packets and then ensure all are abandoned when the RTO fires. |
| 827 const size_t kNumSentPackets = 100; | 827 const size_t kNumSentPackets = 100; |
| 828 for (size_t i = 1; i <= kNumSentPackets; ++i) { | 828 for (size_t i = 1; i <= kNumSentPackets; ++i) { |
| 829 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)) | 829 SendDataPacket(i); |
| 830 .Times(1).WillOnce(Return(true)); | |
| 831 manager_.OnPacketSent(i, clock_.Now(), 1000, | |
| 832 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); | |
| 833 } | 830 } |
| 834 | 831 |
| 835 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(kNumSentPackets); | 832 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(_, _)).Times(kNumSentPackets); |
| 836 | 833 |
| 834 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) |
| 835 .WillOnce(Return(QuicTime::Delta::FromMilliseconds(1))); |
| 836 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout()); |
| 837 manager_.OnRetransmissionTimeout(); | 837 manager_.OnRetransmissionTimeout(); |
| 838 } | 838 } |
| 839 | 839 |
| 840 TEST_F(QuicSentPacketManagerTest, GetTransmissionDelayMin) { | 840 TEST_F(QuicSentPacketManagerTest, GetTransmissionDelayMin) { |
| 841 QuicTime::Delta delay = QuicTime::Delta::FromMilliseconds(1); | |
| 842 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) | 841 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) |
| 843 .WillOnce(Return(delay)); | 842 .WillOnce(Return(QuicTime::Delta::FromMilliseconds(1))); |
| 844 | 843 |
| 845 manager_.OnRetransmissionTimeout(); | |
| 846 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), | 844 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(200), |
| 847 manager_.GetRetransmissionDelay()); | 845 manager_.GetRetransmissionDelay()); |
| 848 } | 846 } |
| 849 | 847 |
| 850 TEST_F(QuicSentPacketManagerTest, GetTransmissionDelayMax) { | 848 TEST_F(QuicSentPacketManagerTest, GetTransmissionDelayMax) { |
| 851 QuicTime::Delta delay = QuicTime::Delta::FromSeconds(500); | |
| 852 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) | 849 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) |
| 853 .WillOnce(Return(delay)); | 850 .WillOnce(Return(QuicTime::Delta::FromSeconds(500))); |
| 854 | 851 |
| 855 manager_.OnRetransmissionTimeout(); | |
| 856 EXPECT_EQ(QuicTime::Delta::FromSeconds(60), | 852 EXPECT_EQ(QuicTime::Delta::FromSeconds(60), |
| 857 manager_.GetRetransmissionDelay()); | 853 manager_.GetRetransmissionDelay()); |
| 858 } | 854 } |
| 859 | 855 |
| 860 TEST_F(QuicSentPacketManagerTest, GetTransmissionDelay) { | 856 TEST_F(QuicSentPacketManagerTest, GetTransmissionDelay) { |
| 861 SendDataPacket(1); | 857 SendDataPacket(1); |
| 862 QuicTime::Delta delay = QuicTime::Delta::FromMilliseconds(500); | 858 QuicTime::Delta delay = QuicTime::Delta::FromMilliseconds(500); |
| 863 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) | 859 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) |
| 864 .WillRepeatedly(Return(delay)); | 860 .WillRepeatedly(Return(delay)); |
| 865 | 861 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 891 RetransmitNextPacket(i + 2); | 887 RetransmitNextPacket(i + 2); |
| 892 } | 888 } |
| 893 | 889 |
| 894 // Then backoff starts | 890 // Then backoff starts |
| 895 EXPECT_EQ(delay.Add(delay), manager_.GetRetransmissionDelay()); | 891 EXPECT_EQ(delay.Add(delay), manager_.GetRetransmissionDelay()); |
| 896 } | 892 } |
| 897 | 893 |
| 898 } // namespace | 894 } // namespace |
| 899 } // namespace test | 895 } // namespace test |
| 900 } // namespace net | 896 } // namespace net |
| OLD | NEW |