Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(375)

Side by Side Diff: net/quic/quic_sent_packet_manager_test.cc

Issue 145123003: Remove an impossible check in QuicConnection for when a packet is (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 184
185 manager_.OnSerializedPacket(serialized_packet); 185 manager_.OnSerializedPacket(serialized_packet);
186 186
187 QuicPacketSequenceNumber unacked[] = { 1 }; 187 QuicPacketSequenceNumber unacked[] = { 1 };
188 VerifyUnackedPackets(unacked, arraysize(unacked)); 188 VerifyUnackedPackets(unacked, arraysize(unacked));
189 QuicPacketSequenceNumber retransmittable[] = { 1 }; 189 QuicPacketSequenceNumber retransmittable[] = { 1 };
190 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 190 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
191 } 191 }
192 192
193 TEST_F(QuicSentPacketManagerTest, IsUnAckedRetransmit) { 193 TEST_F(QuicSentPacketManagerTest, IsUnAckedRetransmit) {
194 SerializedPacket serialized_packet(CreateDataPacket(1)); 194 SendDataPacket(1);
195
196 manager_.OnSerializedPacket(serialized_packet);
197 RetransmitPacket(1, 2); 195 RetransmitPacket(1, 2);
198 196
199 EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission(&manager_, 2)); 197 EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission(&manager_, 2));
200 QuicPacketSequenceNumber unacked[] = { 1, 2 }; 198 QuicPacketSequenceNumber unacked[] = { 1, 2 };
201 VerifyUnackedPackets(unacked, arraysize(unacked)); 199 VerifyUnackedPackets(unacked, arraysize(unacked));
202 QuicPacketSequenceNumber retransmittable[] = { 2 }; 200 QuicPacketSequenceNumber retransmittable[] = { 2 };
203 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 201 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
204 } 202 }
205 203
206 TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) { 204 TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) {
207 SerializedPacket serialized_packet(CreateDataPacket(1)); 205 SendDataPacket(1);
208 206 RetransmitAndSendPacket(1, 2);
209 manager_.OnSerializedPacket(serialized_packet);
210 RetransmitPacket(1, 2);
211 207
212 // Ack 2 but not 1. 208 // Ack 2 but not 1.
213 ReceivedPacketInfo received_info; 209 ReceivedPacketInfo received_info;
214 received_info.largest_observed = 2; 210 received_info.largest_observed = 2;
215 received_info.missing_packets.insert(1); 211 received_info.missing_packets.insert(1);
212 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
213 EXPECT_CALL(*send_algorithm_, OnPacketAcked(2, _)).Times(1);
216 manager_.OnIncomingAck(received_info, QuicTime::Zero()); 214 manager_.OnIncomingAck(received_info, QuicTime::Zero());
217 215
218 // No unacked packets remain. 216 // Packet 1 is unacked, pending, but not retransmittable.
219 VerifyUnackedPackets(NULL, 0); 217 QuicPacketSequenceNumber unacked[] = { 1 };
218 VerifyUnackedPackets(unacked, arraysize(unacked));
219 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
220 VerifyRetransmittablePackets(NULL, 0); 220 VerifyRetransmittablePackets(NULL, 0);
221 } 221 }
222 222
223 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) { 223 TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) {
224 SerializedPacket serialized_packet(CreateDataPacket(1)); 224 SendDataPacket(1);
225
226 manager_.OnSerializedPacket(serialized_packet);
227 QuicSentPacketManagerPeer::MarkForRetransmission( 225 QuicSentPacketManagerPeer::MarkForRetransmission(
228 &manager_, 1, NACK_RETRANSMISSION); 226 &manager_, 1, NACK_RETRANSMISSION);
229 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 227 EXPECT_TRUE(manager_.HasPendingRetransmissions());
230 228
231 // Ack 1. 229 // Ack 1.
232 ReceivedPacketInfo received_info; 230 ReceivedPacketInfo received_info;
233 received_info.largest_observed = 1; 231 received_info.largest_observed = 1;
232 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
233 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _)).Times(1);
234 manager_.OnIncomingAck(received_info, QuicTime::Zero()); 234 manager_.OnIncomingAck(received_info, QuicTime::Zero());
235 235
236 // There should no longer be a pending retransmission. 236 // There should no longer be a pending retransmission.
237 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 237 EXPECT_FALSE(manager_.HasPendingRetransmissions());
238 238
239 // No unacked packets remain. 239 // No unacked packets remain.
240 VerifyUnackedPackets(NULL, 0); 240 VerifyUnackedPackets(NULL, 0);
241 VerifyRetransmittablePackets(NULL, 0); 241 VerifyRetransmittablePackets(NULL, 0);
242 } 242 }
243 243
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _)); 382 EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _));
383 EXPECT_CALL(*send_algorithm_, OnPacketLost(2, _)); 383 EXPECT_CALL(*send_algorithm_, OnPacketLost(2, _));
384 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(2, _)); 384 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(2, _));
385 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); 385 manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
386 386
387 VerifyUnackedPackets(NULL, 0); 387 VerifyUnackedPackets(NULL, 0);
388 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); 388 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
389 } 389 }
390 390
391 TEST_F(QuicSentPacketManagerTest, TruncatedAck) { 391 TEST_F(QuicSentPacketManagerTest, TruncatedAck) {
392 SerializedPacket serialized_packet(CreateDataPacket(1)); 392 SendDataPacket(1);
393 RetransmitAndSendPacket(1, 2);
394 RetransmitAndSendPacket(2, 3);
395 RetransmitAndSendPacket(3, 4);
396 RetransmitAndSendPacket(4, 5);
393 397
394 manager_.OnSerializedPacket(serialized_packet); 398 // Truncated ack with 4 NACKs, so the first packet is lost.
395 RetransmitPacket(1, 2);
396 RetransmitPacket(2, 3);
397 RetransmitPacket(3, 4);
398
399 // Truncated ack with 2 NACKs
400 ReceivedPacketInfo received_info; 399 ReceivedPacketInfo received_info;
401 received_info.largest_observed = 2; 400 received_info.largest_observed = 4;
402 received_info.missing_packets.insert(1); 401 received_info.missing_packets.insert(1);
403 received_info.missing_packets.insert(2); 402 received_info.missing_packets.insert(2);
403 received_info.missing_packets.insert(3);
404 received_info.missing_packets.insert(4);
404 received_info.is_truncated = true; 405 received_info.is_truncated = true;
406 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
407 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _));
408 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _));
405 manager_.OnIncomingAck(received_info, QuicTime::Zero()); 409 manager_.OnIncomingAck(received_info, QuicTime::Zero());
406 410
407 // High water mark will be raised. 411 // High water mark will be raised.
408 QuicPacketSequenceNumber unacked[] = { 2, 3, 4 }; 412 QuicPacketSequenceNumber unacked[] = { 2, 3, 4 };
409 VerifyUnackedPackets(unacked, arraysize(unacked)); 413 VerifyUnackedPackets(unacked, arraysize(unacked));
410 QuicPacketSequenceNumber retransmittable[] = { 4 }; 414 QuicPacketSequenceNumber retransmittable[] = { 4 };
411 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 415 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
412 } 416 }
413 417
414 TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) { 418 TEST_F(QuicSentPacketManagerTest, AckPreviousTransmissionThenTruncatedAck) {
415 SerializedPacket serialized_packet(CreateDataPacket(1)); 419 SendDataPacket(1);
416 420 RetransmitAndSendPacket(1, 2);
417 manager_.OnSerializedPacket(serialized_packet); 421 RetransmitAndSendPacket(2, 3);
418 RetransmitPacket(1, 2); 422 RetransmitAndSendPacket(3, 4);
419 RetransmitPacket(2, 3);
420 RetransmitPacket(3, 4);
421 manager_.OnSerializedPacket(CreateDataPacket(5)); 423 manager_.OnSerializedPacket(CreateDataPacket(5));
422 manager_.OnSerializedPacket(CreateDataPacket(6)); 424 manager_.OnSerializedPacket(CreateDataPacket(6));
423 manager_.OnSerializedPacket(CreateDataPacket(7)); 425 manager_.OnSerializedPacket(CreateDataPacket(7));
424 manager_.OnSerializedPacket(CreateDataPacket(8)); 426 manager_.OnSerializedPacket(CreateDataPacket(8));
425 manager_.OnSerializedPacket(CreateDataPacket(9)); 427 manager_.OnSerializedPacket(CreateDataPacket(9));
426 428
427 // Ack previous transmission 429 // Ack previous transmission
428 { 430 {
429 ReceivedPacketInfo received_info; 431 ReceivedPacketInfo received_info;
430 received_info.largest_observed = 2; 432 received_info.largest_observed = 2;
431 received_info.missing_packets.insert(1); 433 received_info.missing_packets.insert(1);
434 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
435 EXPECT_CALL(*send_algorithm_, OnPacketAcked(2, _));
432 manager_.OnIncomingAck(received_info, QuicTime::Zero()); 436 manager_.OnIncomingAck(received_info, QuicTime::Zero());
433 EXPECT_TRUE(manager_.IsUnacked(4)); 437 EXPECT_TRUE(manager_.IsUnacked(4));
434 } 438 }
435 439
436 // Truncated ack with 4 NACKs 440 // Truncated ack with 4 NACKs
437 { 441 {
438 ReceivedPacketInfo received_info; 442 ReceivedPacketInfo received_info;
439 received_info.largest_observed = 6; 443 received_info.largest_observed = 6;
440 received_info.missing_packets.insert(3); 444 received_info.missing_packets.insert(3);
441 received_info.missing_packets.insert(4); 445 received_info.missing_packets.insert(4);
442 received_info.missing_packets.insert(5); 446 received_info.missing_packets.insert(5);
443 received_info.missing_packets.insert(6); 447 received_info.missing_packets.insert(6);
444 received_info.is_truncated = true; 448 received_info.is_truncated = true;
449 EXPECT_CALL(*send_algorithm_, OnPacketAcked(1, _));
450 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(3, _));
451 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(4, _));
445 manager_.OnIncomingAck(received_info, QuicTime::Zero()); 452 manager_.OnIncomingAck(received_info, QuicTime::Zero());
446 } 453 }
447 454
448 // High water mark will be raised. 455 // High water mark will be raised.
449 QuicPacketSequenceNumber unacked[] = { 5, 6, 7, 8, 9 }; 456 QuicPacketSequenceNumber unacked[] = { 5, 6, 7, 8, 9 };
450 VerifyUnackedPackets(unacked, arraysize(unacked)); 457 VerifyUnackedPackets(unacked, arraysize(unacked));
451 QuicPacketSequenceNumber retransmittable[] = { 5, 6, 7, 8, 9 }; 458 QuicPacketSequenceNumber retransmittable[] = { 5, 6, 7, 8, 9 };
452 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); 459 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
453 } 460 }
454 461
455 TEST_F(QuicSentPacketManagerTest, SendDropAckRetransmitManyPackets) {
456 manager_.OnSerializedPacket(CreateDataPacket(1));
457 manager_.OnSerializedPacket(CreateDataPacket(2));
458 manager_.OnSerializedPacket(CreateDataPacket(3));
459
460 {
461 // Ack packets 1 and 3.
462 ReceivedPacketInfo received_info;
463 received_info.largest_observed = 3;
464 received_info.missing_packets.insert(2);
465 manager_.OnIncomingAck(received_info, QuicTime::Zero());
466
467 QuicPacketSequenceNumber unacked[] = { 2 };
468 VerifyUnackedPackets(unacked, arraysize(unacked));
469 QuicPacketSequenceNumber retransmittable[] = { 2 };
470 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
471 }
472
473 manager_.OnSerializedPacket(CreateDataPacket(4));
474 manager_.OnSerializedPacket(CreateDataPacket(5));
475
476 {
477 // Ack packets 5.
478 ReceivedPacketInfo received_info;
479 received_info.largest_observed = 5;
480 received_info.missing_packets.insert(2);
481 received_info.missing_packets.insert(4);
482 manager_.OnIncomingAck(received_info, QuicTime::Zero());
483
484 QuicPacketSequenceNumber unacked[] = { 2, 4 };
485 VerifyUnackedPackets(unacked, arraysize(unacked));
486 QuicPacketSequenceNumber retransmittable[] = { 2, 4 };
487 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
488 }
489
490 manager_.OnSerializedPacket(CreateDataPacket(6));
491 manager_.OnSerializedPacket(CreateDataPacket(7));
492
493 {
494 // Ack packets 7.
495 ReceivedPacketInfo received_info;
496 received_info.largest_observed = 7;
497 received_info.missing_packets.insert(2);
498 received_info.missing_packets.insert(4);
499 received_info.missing_packets.insert(6);
500 manager_.OnIncomingAck(received_info, QuicTime::Zero());
501
502 QuicPacketSequenceNumber unacked[] = { 2, 4, 6 };
503 VerifyUnackedPackets(unacked, arraysize(unacked));
504 QuicPacketSequenceNumber retransmittable[] = { 2, 4, 6 };
505 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
506 }
507
508 RetransmitPacket(2, 8);
509 manager_.OnSerializedPacket(CreateDataPacket(9));
510 manager_.OnSerializedPacket(CreateDataPacket(10));
511
512 {
513 // Ack packet 10.
514 ReceivedPacketInfo received_info;
515 received_info.largest_observed = 10;
516 received_info.missing_packets.insert(2);
517 received_info.missing_packets.insert(4);
518 received_info.missing_packets.insert(6);
519 received_info.missing_packets.insert(8);
520 received_info.missing_packets.insert(9);
521 manager_.OnIncomingAck(received_info, QuicTime::Zero());
522
523 QuicPacketSequenceNumber unacked[] = { 2, 4, 6, 8, 9 };
524 VerifyUnackedPackets(unacked, arraysize(unacked));
525 QuicPacketSequenceNumber retransmittable[] = { 4, 6, 8, 9 };
526 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
527 }
528
529
530 RetransmitPacket(4, 11);
531 manager_.OnSerializedPacket(CreateDataPacket(12));
532 manager_.OnSerializedPacket(CreateDataPacket(13));
533
534 {
535 // Ack packet 13.
536 ReceivedPacketInfo received_info;
537 received_info.largest_observed = 13;
538 received_info.missing_packets.insert(2);
539 received_info.missing_packets.insert(4);
540 received_info.missing_packets.insert(6);
541 received_info.missing_packets.insert(8);
542 received_info.missing_packets.insert(9);
543 received_info.missing_packets.insert(11);
544 received_info.missing_packets.insert(12);
545 manager_.OnIncomingAck(received_info, QuicTime::Zero());
546
547 QuicPacketSequenceNumber unacked[] = { 2, 4, 6, 8, 9, 11, 12 };
548 VerifyUnackedPackets(unacked, arraysize(unacked));
549 QuicPacketSequenceNumber retransmittable[] = { 6, 8, 9, 11, 12 };
550 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
551 }
552
553 RetransmitPacket(6, 14);
554 manager_.OnSerializedPacket(CreateDataPacket(15));
555 manager_.OnSerializedPacket(CreateDataPacket(16));
556
557 {
558 // Ack packet 16.
559 ReceivedPacketInfo received_info;
560 received_info.largest_observed = 13;
561 received_info.missing_packets.insert(2);
562 received_info.missing_packets.insert(4);
563 received_info.missing_packets.insert(6);
564 received_info.missing_packets.insert(8);
565 received_info.missing_packets.insert(9);
566 received_info.missing_packets.insert(11);
567 received_info.missing_packets.insert(12);
568 received_info.is_truncated = true;
569 manager_.OnIncomingAck(received_info, QuicTime::Zero());
570
571 // Truncated ack raises the high water mark by clearing out 2, 4, and 6.
572 QuicPacketSequenceNumber unacked[] = { 8, 9, 11, 12, 14, 15, 16 };
573 VerifyUnackedPackets(unacked, arraysize(unacked));
574 QuicPacketSequenceNumber retransmittable[] = { 8, 9, 11, 12, 14, 15, 16 };
575 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
576 }
577 }
578
579 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) { 462 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacket) {
580 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(1u)); 463 EXPECT_CALL(helper_, GetNextPacketSequenceNumber()).WillOnce(Return(1u));
581 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); 464 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket());
582 } 465 }
583 466
584 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnacked) { 467 TEST_F(QuicSentPacketManagerTest, GetLeastUnackedSentPacketUnacked) {
585 SerializedPacket serialized_packet(CreateDataPacket(1)); 468 SerializedPacket serialized_packet(CreateDataPacket(1));
586 469
587 manager_.OnSerializedPacket(serialized_packet); 470 manager_.OnSerializedPacket(serialized_packet);
588 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket()); 471 EXPECT_EQ(1u, manager_.GetLeastUnackedSentPacket());
(...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after
1282 delay = delay.Add(delay); 1165 delay = delay.Add(delay);
1283 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); 1166 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true));
1284 manager_.OnRetransmissionTimeout(); 1167 manager_.OnRetransmissionTimeout();
1285 RetransmitNextPacket(i + 2); 1168 RetransmitNextPacket(i + 2);
1286 } 1169 }
1287 } 1170 }
1288 1171
1289 } // namespace 1172 } // namespace
1290 } // namespace test 1173 } // namespace test
1291 } // namespace net 1174 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698