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

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

Issue 157403006: Add QUIC_VERSION_15 to add a revived_packets set to replace the (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 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 .Times(1).WillOnce(Return(true)); 142 .Times(1).WillOnce(Return(true));
143 SerializedPacket packet(CreateDataPacket(sequence_number)); 143 SerializedPacket packet(CreateDataPacket(sequence_number));
144 packet.retransmittable_frames->AddStreamFrame( 144 packet.retransmittable_frames->AddStreamFrame(
145 new QuicStreamFrame(1, false, 0, IOVector())); 145 new QuicStreamFrame(1, false, 0, IOVector()));
146 manager_.OnSerializedPacket(packet); 146 manager_.OnSerializedPacket(packet);
147 manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(), 147 manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(),
148 packet.packet->length(), NOT_RETRANSMISSION, 148 packet.packet->length(), NOT_RETRANSMISSION,
149 HAS_RETRANSMITTABLE_DATA); 149 HAS_RETRANSMITTABLE_DATA);
150 } 150 }
151 151
152 void SendFecPacket(QuicPacketSequenceNumber sequence_number) {
153 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, sequence_number, _, _, _))
154 .Times(1).WillOnce(Return(true));
155 SerializedPacket packet(CreateFecPacket(sequence_number));
156 manager_.OnSerializedPacket(packet);
157 manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(),
158 packet.packet->length(), NOT_RETRANSMISSION,
159 NO_RETRANSMITTABLE_DATA);
160 }
161
152 // Based on QuicConnection's WritePendingRetransmissions. 162 // Based on QuicConnection's WritePendingRetransmissions.
153 void RetransmitNextPacket( 163 void RetransmitNextPacket(
154 QuicPacketSequenceNumber retransmission_sequence_number) { 164 QuicPacketSequenceNumber retransmission_sequence_number) {
155 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 165 EXPECT_TRUE(manager_.HasPendingRetransmissions());
156 EXPECT_CALL(*send_algorithm_, 166 EXPECT_CALL(*send_algorithm_,
157 OnPacketSent(_, retransmission_sequence_number, _, _, _)) 167 OnPacketSent(_, retransmission_sequence_number, _, _, _))
158 .Times(1).WillOnce(Return(true)); 168 .Times(1).WillOnce(Return(true));
159 const QuicSentPacketManager::PendingRetransmission pending = 169 const QuicSentPacketManager::PendingRetransmission pending =
160 manager_.NextPendingRetransmission(); 170 manager_.NextPendingRetransmission();
161 manager_.OnRetransmittedPacket( 171 manager_.OnRetransmittedPacket(
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _)); 410 EXPECT_CALL(*send_algorithm_, OnPacketAcked(5, _));
401 EXPECT_CALL(*send_algorithm_, OnPacketLost(2, _)); 411 EXPECT_CALL(*send_algorithm_, OnPacketLost(2, _));
402 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(2, _)); 412 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(2, _));
403 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); 413 manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
404 414
405 VerifyUnackedPackets(NULL, 0); 415 VerifyUnackedPackets(NULL, 0);
406 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); 416 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
407 EXPECT_EQ(1u, stats_.packets_spuriously_retransmitted); 417 EXPECT_EQ(1u, stats_.packets_spuriously_retransmitted);
408 } 418 }
409 419
420 TEST_F(QuicSentPacketManagerTest, LoseButDontRetransmitRevivedPacket) {
421 SendDataPacket(1);
422 SendDataPacket(2);
423 SendFecPacket(3);
424 SendDataPacket(4);
425
426 // Ack 2 and 3, and mark 1 as revived.
427 ReceivedPacketInfo received_info;
428 received_info.largest_observed = 3;
429 received_info.missing_packets.insert(1);
430 received_info.revived_packets.insert(1);
431 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
432 EXPECT_CALL(*send_algorithm_, OnPacketAcked(_, _)).Times(2);
433 manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
434
435 EXPECT_FALSE(manager_.HasPendingRetransmissions());
436 QuicPacketSequenceNumber unacked[] = { 1, 4 };
437 VerifyUnackedPackets(unacked, arraysize(unacked));
438 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
439 QuicPacketSequenceNumber retransmittable[] = { 4 };
440 VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable));
441
442 // Ack the 4th packet and expect the 1st to be considered lost.
443 received_info.largest_observed = 4;
444 EXPECT_CALL(*send_algorithm_, UpdateRtt(_));
445 EXPECT_CALL(*send_algorithm_, OnPacketLost(1, _));
446 EXPECT_CALL(*send_algorithm_, OnPacketAbandoned(1, _));
447 EXPECT_CALL(*send_algorithm_, OnPacketAcked(4, _));
448 manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
449
450 EXPECT_FALSE(manager_.HasPendingRetransmissions());
451 VerifyRetransmittablePackets(NULL, 0);
452 }
453
410 TEST_F(QuicSentPacketManagerTest, TruncatedAck) { 454 TEST_F(QuicSentPacketManagerTest, TruncatedAck) {
411 SendDataPacket(1); 455 SendDataPacket(1);
412 RetransmitAndSendPacket(1, 2); 456 RetransmitAndSendPacket(1, 2);
413 RetransmitAndSendPacket(2, 3); 457 RetransmitAndSendPacket(2, 3);
414 RetransmitAndSendPacket(3, 4); 458 RetransmitAndSendPacket(3, 4);
415 RetransmitAndSendPacket(4, 5); 459 RetransmitAndSendPacket(4, 5);
416 460
417 // Truncated ack with 4 NACKs, so the first packet is lost. 461 // Truncated ack with 4 NACKs, so the first packet is lost.
418 ReceivedPacketInfo received_info; 462 ReceivedPacketInfo received_info;
419 received_info.largest_observed = 4; 463 received_info.largest_observed = 4;
(...skipping 803 matching lines...) Expand 10 before | Expand all | Expand 10 after
1223 delay = delay.Add(delay); 1267 delay = delay.Add(delay);
1224 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); 1268 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true));
1225 manager_.OnRetransmissionTimeout(); 1269 manager_.OnRetransmissionTimeout();
1226 RetransmitNextPacket(i + 2); 1270 RetransmitNextPacket(i + 2);
1227 } 1271 }
1228 } 1272 }
1229 1273
1230 } // namespace 1274 } // namespace
1231 } // namespace test 1275 } // namespace test
1232 } // namespace net 1276 } // 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