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 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 } | 181 } |
182 | 182 |
183 void SendCryptoPacket(QuicPacketSequenceNumber sequence_number) { | 183 void SendCryptoPacket(QuicPacketSequenceNumber sequence_number) { |
184 EXPECT_CALL(*send_algorithm_, | 184 EXPECT_CALL(*send_algorithm_, |
185 OnPacketSent(_, BytesInFlight(), sequence_number, | 185 OnPacketSent(_, BytesInFlight(), sequence_number, |
186 kDefaultLength, HAS_RETRANSMITTABLE_DATA)) | 186 kDefaultLength, HAS_RETRANSMITTABLE_DATA)) |
187 .Times(1).WillOnce(Return(true)); | 187 .Times(1).WillOnce(Return(true)); |
188 SerializedPacket packet(CreateDataPacket(sequence_number)); | 188 SerializedPacket packet(CreateDataPacket(sequence_number)); |
189 packet.retransmittable_frames->AddStreamFrame( | 189 packet.retransmittable_frames->AddStreamFrame( |
190 new QuicStreamFrame(1, false, 0, IOVector())); | 190 new QuicStreamFrame(1, false, 0, IOVector())); |
191 packet.retransmittable_frames->set_encryption_level(ENCRYPTION_NONE); | |
192 manager_.OnSerializedPacket(packet); | 191 manager_.OnSerializedPacket(packet); |
193 manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(), | 192 manager_.OnPacketSent(sequence_number, clock_.ApproximateNow(), |
194 packet.packet->length(), NOT_RETRANSMISSION, | 193 packet.packet->length(), NOT_RETRANSMISSION, |
195 HAS_RETRANSMITTABLE_DATA); | 194 HAS_RETRANSMITTABLE_DATA); |
196 } | 195 } |
197 | 196 |
198 void SendFecPacket(QuicPacketSequenceNumber sequence_number) { | 197 void SendFecPacket(QuicPacketSequenceNumber sequence_number) { |
199 EXPECT_CALL(*send_algorithm_, | 198 EXPECT_CALL(*send_algorithm_, |
200 OnPacketSent(_, BytesInFlight(), sequence_number, | 199 OnPacketSent(_, BytesInFlight(), sequence_number, |
201 kDefaultLength, NO_RETRANSMITTABLE_DATA)) | 200 kDefaultLength, NO_RETRANSMITTABLE_DATA)) |
(...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
972 // Now retransmit all the unacked packets, which occurs when there is a | 971 // Now retransmit all the unacked packets, which occurs when there is a |
973 // version negotiation. | 972 // version negotiation. |
974 manager_.RetransmitUnackedPackets(ALL_PACKETS); | 973 manager_.RetransmitUnackedPackets(ALL_PACKETS); |
975 QuicPacketSequenceNumber unacked[] = { 1, 2 }; | 974 QuicPacketSequenceNumber unacked[] = { 1, 2 }; |
976 VerifyUnackedPackets(unacked, arraysize(unacked)); | 975 VerifyUnackedPackets(unacked, arraysize(unacked)); |
977 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 976 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
978 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); | 977 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
979 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 978 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
980 } | 979 } |
981 | 980 |
982 TEST_F(QuicSentPacketManagerTest, | |
983 CryptoHandshakeRetransmissionThenAbandonAll) { | |
984 // Send 1 crypto packet. | |
985 SendCryptoPacket(1); | |
986 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); | |
987 | |
988 // Retransmit the crypto packet as 2. | |
989 manager_.OnRetransmissionTimeout(); | |
990 RetransmitNextPacket(2); | |
991 | |
992 // Now discard all unacked unencrypted packets, which occurs when the | |
993 // connection goes forward secure. | |
994 manager_.DiscardUnencryptedPackets(); | |
995 VerifyUnackedPackets(NULL, 0); | |
996 EXPECT_FALSE(manager_.HasPendingRetransmissions()); | |
997 EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); | |
998 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | |
999 } | |
1000 | |
1001 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeoutUnsentDataPacket) { | 981 TEST_F(QuicSentPacketManagerTest, TailLossProbeTimeoutUnsentDataPacket) { |
1002 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); | 982 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); |
1003 // Serialize two data packets and send the latter. | 983 // Serialize two data packets and send the latter. |
1004 SerializedPacket packet(CreateDataPacket(1)); | 984 SerializedPacket packet(CreateDataPacket(1)); |
1005 manager_.OnSerializedPacket(packet); | 985 manager_.OnSerializedPacket(packet); |
1006 SendDataPacket(2); | 986 SendDataPacket(2); |
1007 EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); | 987 EXPECT_FALSE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
1008 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 988 EXPECT_TRUE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
1009 | 989 |
1010 // Retransmit 1 unacked packets, but not the first serialized packet. | 990 // Retransmit 1 unacked packets, but not the first serialized packet. |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1210 | 1190 |
1211 EXPECT_EQ(kTime, | 1191 EXPECT_EQ(kTime, |
1212 QuicSentPacketManagerPeer::GetLossAlgorithm( | 1192 QuicSentPacketManagerPeer::GetLossAlgorithm( |
1213 &manager_)->GetLossDetectionType()); | 1193 &manager_)->GetLossDetectionType()); |
1214 } | 1194 } |
1215 | 1195 |
1216 | 1196 |
1217 } // namespace | 1197 } // namespace |
1218 } // namespace test | 1198 } // namespace test |
1219 } // namespace net | 1199 } // namespace net |
OLD | NEW |