diff options
author | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-13 07:44:22 +0000 |
---|---|---|
committer | rtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-13 07:44:22 +0000 |
commit | 6d9ca3b790e9cc01e1ae0b39730c27423e2e7d7f (patch) | |
tree | e34edb10a3166cfdf5f4e0f71e8e8e754b801ffe /net/quic/quic_sent_packet_manager_test.cc | |
parent | 4c900827947228c8642a594d682817444cd4a559 (diff) | |
download | chromium_src-6d9ca3b790e9cc01e1ae0b39730c27423e2e7d7f.zip chromium_src-6d9ca3b790e9cc01e1ae0b39730c27423e2e7d7f.tar.gz chromium_src-6d9ca3b790e9cc01e1ae0b39730c27423e2e7d7f.tar.bz2 |
Land Recent QUIC Changes.
Fix a flaky EndToEndTest where packet loss is possible with a large
buffer that may overrun.
Merge internal change: 66821654
https://codereview.chromium.org/280383003/
QUIC change to invoke SetNotPending for retransmissions in
MarkForRetransmission and a minor cleanup in UnackedPacketMap.
Merge internal change: 66729074
https://codereview.chromium.org/278823005/
Remove unused IsHandshake argument to QuicConnection::OnCanWrite.
Merge internal change: 66652078
https://codereview.chromium.org/286563003/
Revert of Fix a bug where if a crypto packet is spuriously retransmitted
and thenneutered, it remains in missing_packets until the end of the
connection.
Reverted chromium cl: https://codereview.chromium.org/270213002/
Rollback of Merge internal change: 66262890.
*** Reason for rollback ***
This appears to have caused a major QUIC loadtest regression on
internal server.
Additionally, it's wrong in some other subtle ways, so rolling it back
and trying a new approach.
*** Original change description ***
Fix a bug where if a crypto packet is spuriously retransmitted and then
neutered, it remains in missing_packets until the end of the
connection.
***
Merge internal change: 66615668
https://codereview.chromium.org/287583002/
Revert of Minor QUIC cleanup to combine QuicUnackedPacketMap's
RemovePacket and NeuterPacket into RemoveOrNeuterPacket.
Rollback of merge internal change: 66306887
Rollback of Chromium's CL https://codereview.chromium.org/271443008/
*** Reason for rollback ***
After further issues with the QUIC handshake packets, rolling back this
change in favor of a different approach.
*** Original change description ***
Minor QUIC cleanup to combine QuicUnackedPacketMap's RemovePacket and
NeuterPacket into RemoveOrNeuterPacket.
This prevents potential bugs where a packet can be set not pending, then
neuter'd, which cuases the packet to never be removed from the unacked
packet map.
***
Merge internal change: 66573334
https://codereview.chromium.org/280753002/
Merging end_to_end_test.cc with the internal source tree.
+ Fixed comments (MB for megabytes and 256KB per sec instead of 1Mbit).
+ Made LargePostWithPacketLossAndBlockedSocket and
LargePostNoPacketLossWithDelayAndReordering to be in the same
order as the internal source tree.
Merge internal change: 66556306
https://codereview.chromium.org/283683002/
Allows QUIC connections to remain established even though the peer's
port has changed. Should make things a bit better for clients
experiencing NAT rebindign while talking QUIC to Bandaid.
QUIC connection port migration. Protected behind
FLAGS_quic_allow_port_migration
Merge internal change: 66523001
https://codereview.chromium.org/279453004/
Remove unnecessary methods from QuicUnackedPacketMap and a minor
QuicSentPacketManagerTest fix as a result.
Merge internal change: 66427453
https://codereview.chromium.org/287443003/
R=rch@chromium.org
Review URL: https://codereview.chromium.org/283693002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270046 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic/quic_sent_packet_manager_test.cc')
-rw-r--r-- | net/quic/quic_sent_packet_manager_test.cc | 50 |
1 files changed, 12 insertions, 38 deletions
diff --git a/net/quic/quic_sent_packet_manager_test.cc b/net/quic/quic_sent_packet_manager_test.cc index e44dca5..7d0bfed 100644 --- a/net/quic/quic_sent_packet_manager_test.cc +++ b/net/quic/quic_sent_packet_manager_test.cc @@ -69,22 +69,13 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> { void VerifyRetransmittablePackets(QuicPacketSequenceNumber* packets, size_t num_packets) { - SequenceNumberSet unacked = - QuicSentPacketManagerPeer::GetUnackedPackets(&manager_); - for (size_t i = 0; i < num_packets; ++i) { - EXPECT_TRUE(ContainsKey(unacked, packets[i])) << packets[i]; - } - size_t num_retransmittable = 0; - for (SequenceNumberSet::const_iterator it = unacked.begin(); - it != unacked.end(); ++it) { - if (manager_.HasRetransmittableFrames(*it)) { - ++num_retransmittable; - } - } EXPECT_EQ(num_packets, QuicSentPacketManagerPeer::GetNumRetransmittablePackets( &manager_)); - EXPECT_EQ(num_packets, num_retransmittable); + for (size_t i = 0; i < num_packets; ++i) { + EXPECT_TRUE(manager_.HasRetransmittableFrames(packets[i])) + << " packets[" << i << "]:" << packets[i]; + } } void ExpectAck(QuicPacketSequenceNumber largest_observed) { @@ -125,15 +116,18 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> { Pointwise(KeyEq(), lost_vector))); } + // Retransmits a packet as though it was a TLP retransmission, because TLP + // leaves the |old_sequence_number| pending. + // TODO(ianswett): Test with transmission types besides TLP. void RetransmitPacket(QuicPacketSequenceNumber old_sequence_number, QuicPacketSequenceNumber new_sequence_number) { QuicSentPacketManagerPeer::MarkForRetransmission( - &manager_, old_sequence_number, LOSS_RETRANSMISSION); + &manager_, old_sequence_number, TLP_RETRANSMISSION); EXPECT_TRUE(manager_.HasPendingRetransmissions()); QuicSentPacketManager::PendingRetransmission next_retransmission = manager_.NextPendingRetransmission(); EXPECT_EQ(old_sequence_number, next_retransmission.sequence_number); - EXPECT_EQ(LOSS_RETRANSMISSION, + EXPECT_EQ(TLP_RETRANSMISSION, next_retransmission.transmission_type); manager_.OnRetransmittedPacket(old_sequence_number, new_sequence_number); EXPECT_TRUE(QuicSentPacketManagerPeer::IsRetransmission( @@ -197,7 +191,6 @@ class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> { SerializedPacket packet(CreateDataPacket(sequence_number)); packet.retransmittable_frames->AddStreamFrame( new QuicStreamFrame(1, false, 0, IOVector())); - packet.retransmittable_frames->set_encryption_level(ENCRYPTION_NONE); manager_.OnSerializedPacket(packet); manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(), packet.packet->length(), NOT_RETRANSMISSION, @@ -297,7 +290,7 @@ TEST_F(QuicSentPacketManagerTest, RetransmitThenAck) { TEST_F(QuicSentPacketManagerTest, RetransmitThenAckBeforeSend) { SendDataPacket(1); QuicSentPacketManagerPeer::MarkForRetransmission( - &manager_, 1, LOSS_RETRANSMISSION); + &manager_, 1, TLP_RETRANSMISSION); EXPECT_TRUE(manager_.HasPendingRetransmissions()); // Ack 1. @@ -557,9 +550,9 @@ TEST_F(QuicSentPacketManagerTest, TruncatedAck) { manager_.OnIncomingAck(received_info, clock_.Now()); // High water mark will be raised. - QuicPacketSequenceNumber unacked[] = { 2, 3, 4 }; + QuicPacketSequenceNumber unacked[] = { 2, 3, 4, 5 }; VerifyUnackedPackets(unacked, arraysize(unacked)); - QuicPacketSequenceNumber retransmittable[] = { 4 }; + QuicPacketSequenceNumber retransmittable[] = { 5 }; VerifyRetransmittablePackets(retransmittable, arraysize(retransmittable)); } @@ -988,25 +981,6 @@ TEST_F(QuicSentPacketManagerTest, EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); } -TEST_F(QuicSentPacketManagerTest, - CryptoHandshakeRetransmissionThenAbandonAll) { - // Send 1 crypto packet. - SendCryptoPacket(1); - EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); - - // Retransmit the crypto packet as 2. - manager_.OnRetransmissionTimeout(); - RetransmitNextPacket(2); - - // Now discard all unacked unencrypted packets, which occurs when the - // connection goes forward secure. - manager_.DiscardUnencryptedPackets(); - VerifyUnackedPackets(NULL, 0); - EXPECT_FALSE(manager_.HasPendingRetransmissions()); - EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); - EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); -} - TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeoutUnsentDataPacket) { QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); // Serialize two data packets and send the latter. |