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_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 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 } | 190 } |
191 | 191 |
192 void SendCryptoPacket(QuicPacketSequenceNumber sequence_number) { | 192 void SendCryptoPacket(QuicPacketSequenceNumber sequence_number) { |
193 EXPECT_CALL(*send_algorithm_, | 193 EXPECT_CALL(*send_algorithm_, |
194 OnPacketSent(_, BytesInFlight(), sequence_number, | 194 OnPacketSent(_, BytesInFlight(), sequence_number, |
195 kDefaultLength, HAS_RETRANSMITTABLE_DATA)) | 195 kDefaultLength, HAS_RETRANSMITTABLE_DATA)) |
196 .Times(1).WillOnce(Return(true)); | 196 .Times(1).WillOnce(Return(true)); |
197 SerializedPacket packet(CreateDataPacket(sequence_number)); | 197 SerializedPacket packet(CreateDataPacket(sequence_number)); |
198 packet.retransmittable_frames->AddStreamFrame( | 198 packet.retransmittable_frames->AddStreamFrame( |
199 new QuicStreamFrame(1, false, 0, IOVector())); | 199 new QuicStreamFrame(1, false, 0, IOVector())); |
| 200 packet.retransmittable_frames->set_encryption_level(ENCRYPTION_NONE); |
200 manager_.OnSerializedPacket(packet); | 201 manager_.OnSerializedPacket(packet); |
201 manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(), | 202 manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(), |
202 packet.packet->length(), NOT_RETRANSMISSION, | 203 packet.packet->length(), NOT_RETRANSMISSION, |
203 HAS_RETRANSMITTABLE_DATA); | 204 HAS_RETRANSMITTABLE_DATA); |
204 } | 205 } |
205 | 206 |
206 void SendFecPacket(QuicPacketSequenceNumber sequence_number) { | 207 void SendFecPacket(QuicPacketSequenceNumber sequence_number) { |
207 EXPECT_CALL(*send_algorithm_, | 208 EXPECT_CALL(*send_algorithm_, |
208 OnPacketSent(_, BytesInFlight(), sequence_number, | 209 OnPacketSent(_, BytesInFlight(), sequence_number, |
209 kDefaultLength, NO_RETRANSMITTABLE_DATA)) | 210 kDefaultLength, NO_RETRANSMITTABLE_DATA)) |
(...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
980 // Now retransmit all the unacked packets, which occurs when there is a | 981 // Now retransmit all the unacked packets, which occurs when there is a |
981 // version negotiation. | 982 // version negotiation. |
982 manager_.RetransmitUnackedPackets(ALL_PACKETS); | 983 manager_.RetransmitUnackedPackets(ALL_PACKETS); |
983 QuicPacketSequenceNumber unacked[] = { 1, 2 }; | 984 QuicPacketSequenceNumber unacked[] = { 1, 2 }; |
984 VerifyUnackedPackets(unacked, arraysize(unacked)); | 985 VerifyUnackedPackets(unacked, arraysize(unacked)); |
985 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 986 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
986 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); | 987 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
987 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 988 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
988 } | 989 } |
989 | 990 |
| 991 TEST_F(QuicSentPacketManagerTest, |
| 992 CryptoHandshakeRetransmissionThenAbandonAll) { |
| 993 // Send 1 crypto packet. |
| 994 SendCryptoPacket(1); |
| 995 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
| 996 |
| 997 // Retransmit the crypto packet as 2. |
| 998 manager_.OnRetransmissionTimeout(); |
| 999 RetransmitNextPacket(2); |
| 1000 |
| 1001 // Now discard all unacked unencrypted packets, which occurs when the |
| 1002 // connection goes forward secure. |
| 1003 manager_.DiscardUnencryptedPackets(); |
| 1004 VerifyUnackedPackets(NULL, 0); |
| 1005 EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
| 1006 EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
| 1007 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
| 1008 } |
| 1009 |
990 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeoutUnsentDataPacket) { | 1010 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeoutUnsentDataPacket) { |
991 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); | 1011 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); |
992 // Serialize two data packets and send the latter. | 1012 // Serialize two data packets and send the latter. |
993 SerializedPacket packet(CreateDataPacket(1)); | 1013 SerializedPacket packet(CreateDataPacket(1)); |
994 manager_.OnSerializedPacket(packet); | 1014 manager_.OnSerializedPacket(packet); |
995 SendDataPacket(2); | 1015 SendDataPacket(2); |
996 EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); | 1016 EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
997 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 1017 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
998 | 1018 |
999 // Retransmit 1 unacked packets, but not the first serialized packet. | 1019 // Retransmit 1 unacked packets, but not the first serialized packet. |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1199 | 1219 |
1200 EXPECT_EQ(kTime, | 1220 EXPECT_EQ(kTime, |
1201 QuicSentPacketManagerPeer::GetLossAlgorithm( | 1221 QuicSentPacketManagerPeer::GetLossAlgorithm( |
1202 &manager_)->GetLossDetectionType()); | 1222 &manager_)->GetLossDetectionType()); |
1203 } | 1223 } |
1204 | 1224 |
1205 | 1225 |
1206 } // namespace | 1226 } // namespace |
1207 } // namespace test | 1227 } // namespace test |
1208 } // namespace net | 1228 } // namespace net |
OLD | NEW |