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

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

Issue 306573002: Add an IncreaseLargestObserved to QuicUnackedPacketMap to remove the rtt (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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') | net/quic/quic_unacked_packet_map.h » ('j') | 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_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 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 RetransmitPacket(1, 2); 314 RetransmitPacket(1, 2);
315 QuicTime::Delta rtt = QuicTime::Delta::FromMilliseconds(15); 315 QuicTime::Delta rtt = QuicTime::Delta::FromMilliseconds(15);
316 clock_.AdvanceTime(rtt); 316 clock_.AdvanceTime(rtt);
317 317
318 // Ack 1 but not 2. 318 // Ack 1 but not 2.
319 ExpectAck(1); 319 ExpectAck(1);
320 ReceivedPacketInfo received_info; 320 ReceivedPacketInfo received_info;
321 received_info.largest_observed = 1; 321 received_info.largest_observed = 1;
322 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); 322 manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
323 323
324 // No packets should be unacked. 324 // 2 should be unacked, since it may provide an RTT measurement.
325 VerifyUnackedPackets(NULL, 0); 325 QuicPacketSequenceNumber unacked[] = { 2 };
326 VerifyUnackedPackets(unacked, arraysize(unacked));
326 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); 327 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
327 VerifyRetransmittablePackets(NULL, 0); 328 VerifyRetransmittablePackets(NULL, 0);
328 329
329 // Verify that the retransmission alarm would not fire, 330 // Verify that the retransmission alarm would not fire,
330 // since there is no retransmittable data outstanding. 331 // since there is no retransmittable data outstanding.
331 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); 332 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime());
332 EXPECT_EQ(1u, stats_.packets_spuriously_retransmitted); 333 EXPECT_EQ(1u, stats_.packets_spuriously_retransmitted);
333 } 334 }
334 335
335 TEST_F(QuicSentPacketManagerTest, RetransmitAndSendThenAckPrevious) { 336 TEST_F(QuicSentPacketManagerTest, RetransmitAndSendThenAckPrevious) {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 409 EXPECT_TRUE(manager_.HasPendingRetransmissions());
409 410
410 // Ack 1 but not 2, before 2 is able to be sent. 411 // Ack 1 but not 2, before 2 is able to be sent.
411 // Since 1 has been retransmitted, it has already been lost, and so the 412 // Since 1 has been retransmitted, it has already been lost, and so the
412 // send algorithm is not informed that it has been ACK'd. 413 // send algorithm is not informed that it has been ACK'd.
413 ReceivedPacketInfo received_info; 414 ReceivedPacketInfo received_info;
414 received_info.largest_observed = 1; 415 received_info.largest_observed = 1;
415 ExpectUpdatedRtt(1); 416 ExpectUpdatedRtt(1);
416 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); 417 manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
417 418
418 // Since 2 was marked for retransmit, when 1 is acked, 2 is discarded. 419 // Since 2 was marked for retransmit, when 1 is acked, 2 is kept for RTT.
419 VerifyUnackedPackets(NULL, 0); 420 QuicPacketSequenceNumber unacked[] = { 2 };
421 VerifyUnackedPackets(unacked, arraysize(unacked));
420 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); 422 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_));
421 VerifyRetransmittablePackets(NULL, 0); 423 VerifyRetransmittablePackets(NULL, 0);
422 424
423 // Verify that the retransmission alarm would not fire, 425 // Verify that the retransmission alarm would not fire,
424 // since there is no retransmittable data outstanding. 426 // since there is no retransmittable data outstanding.
425 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); 427 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime());
426 } 428 }
427 429
428 TEST_F(QuicSentPacketManagerTest, RetransmitTwiceThenAckFirst) { 430 TEST_F(QuicSentPacketManagerTest, RetransmitTwiceThenAckFirst) {
429 SendDataPacket(1); 431 SendDataPacket(1);
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); 912 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_));
911 913
912 // Retransmit the crypto packet as 2. 914 // Retransmit the crypto packet as 2.
913 manager_.OnRetransmissionTimeout(); 915 manager_.OnRetransmissionTimeout();
914 RetransmitNextPacket(2); 916 RetransmitNextPacket(2);
915 917
916 // Retransmit the crypto packet as 3. 918 // Retransmit the crypto packet as 3.
917 manager_.OnRetransmissionTimeout(); 919 manager_.OnRetransmissionTimeout();
918 RetransmitNextPacket(3); 920 RetransmitNextPacket(3);
919 921
920 // Now ack the first crypto packet, and ensure the second gets abandoned and 922 // Now ack the second crypto packet, and ensure the first gets removed, but
921 // removed from unacked_packets. 923 // the third does not.
922 ExpectUpdatedRtt(2); 924 ExpectUpdatedRtt(2);
923 ReceivedPacketInfo received_info; 925 ReceivedPacketInfo received_info;
924 received_info.largest_observed = 2; 926 received_info.largest_observed = 2;
925 received_info.missing_packets.insert(1); 927 received_info.missing_packets.insert(1);
926 manager_.OnIncomingAck(received_info, clock_.ApproximateNow()); 928 manager_.OnIncomingAck(received_info, clock_.ApproximateNow());
927 929
928 EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); 930 EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_));
929 VerifyUnackedPackets(NULL, 0); 931 QuicPacketSequenceNumber unacked[] = { 3 };
932 VerifyUnackedPackets(unacked, arraysize(unacked));
930 } 933 }
931 934
932 TEST_F(QuicSentPacketManagerTest, CryptoHandshakeTimeoutUnsentDataPacket) { 935 TEST_F(QuicSentPacketManagerTest, CryptoHandshakeTimeoutUnsentDataPacket) {
933 // Send 2 crypto packets and serialize 1 data packet. 936 // Send 2 crypto packets and serialize 1 data packet.
934 const size_t kNumSentCryptoPackets = 2; 937 const size_t kNumSentCryptoPackets = 2;
935 for (size_t i = 1; i <= kNumSentCryptoPackets; ++i) { 938 for (size_t i = 1; i <= kNumSentCryptoPackets; ++i) {
936 SendCryptoPacket(i); 939 SendCryptoPacket(i);
937 } 940 }
938 SerializedPacket packet(CreateDataPacket(3)); 941 SerializedPacket packet(CreateDataPacket(3));
939 manager_.OnSerializedPacket(packet); 942 manager_.OnSerializedPacket(packet);
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
1252 1255
1253 EXPECT_EQ(kTime, 1256 EXPECT_EQ(kTime,
1254 QuicSentPacketManagerPeer::GetLossAlgorithm( 1257 QuicSentPacketManagerPeer::GetLossAlgorithm(
1255 &manager_)->GetLossDetectionType()); 1258 &manager_)->GetLossDetectionType());
1256 } 1259 }
1257 1260
1258 1261
1259 } // namespace 1262 } // namespace
1260 } // namespace test 1263 } // namespace test
1261 } // namespace net 1264 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/quic_unacked_packet_map.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698