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/quic_flags.h" | 8 #include "net/quic/quic_flags.h" |
9 #include "net/quic/test_tools/quic_config_peer.h" | 9 #include "net/quic/test_tools/quic_config_peer.h" |
10 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" | 10 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" |
(...skipping 957 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
968 | 968 |
969 // The first retransmission timeout retransmits 2 crypto packets. | 969 // The first retransmission timeout retransmits 2 crypto packets. |
970 manager_.OnRetransmissionTimeout(); | 970 manager_.OnRetransmissionTimeout(); |
971 RetransmitNextPacket(6); | 971 RetransmitNextPacket(6); |
972 RetransmitNextPacket(7); | 972 RetransmitNextPacket(7); |
973 EXPECT_FALSE(manager_.HasPendingRetransmissions()); | 973 EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
974 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); | 974 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
975 | 975 |
976 // Now act like a version negotiation packet arrived, which would cause all | 976 // Now act like a version negotiation packet arrived, which would cause all |
977 // unacked packets to be retransmitted. | 977 // unacked packets to be retransmitted. |
978 manager_.RetransmitUnackedPackets(ALL_PACKETS); | 978 manager_.RetransmitUnackedPackets(ALL_UNACKED_RETRANSMISSION); |
979 | 979 |
980 // Ensure the first two pending packets are the crypto retransmits. | 980 // Ensure the first two pending packets are the crypto retransmits. |
981 ASSERT_TRUE(manager_.HasPendingRetransmissions()); | 981 ASSERT_TRUE(manager_.HasPendingRetransmissions()); |
982 EXPECT_EQ(6u, manager_.NextPendingRetransmission().sequence_number); | 982 EXPECT_EQ(6u, manager_.NextPendingRetransmission().sequence_number); |
983 RetransmitNextPacket(8); | 983 RetransmitNextPacket(8); |
984 EXPECT_EQ(7u, manager_.NextPendingRetransmission().sequence_number); | 984 EXPECT_EQ(7u, manager_.NextPendingRetransmission().sequence_number); |
985 RetransmitNextPacket(9); | 985 RetransmitNextPacket(9); |
986 | 986 |
987 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 987 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
| 988 // Send 3 more data packets and ensure the least unacked is raised. |
| 989 RetransmitNextPacket(10); |
| 990 RetransmitNextPacket(11); |
| 991 RetransmitNextPacket(12); |
| 992 EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
| 993 |
| 994 EXPECT_EQ(8u, manager_.GetLeastUnacked()); |
988 } | 995 } |
989 | 996 |
990 TEST_F(QuicSentPacketManagerTest, CryptoHandshakeSpuriousRetransmission) { | 997 TEST_F(QuicSentPacketManagerTest, CryptoHandshakeSpuriousRetransmission) { |
991 // Send 1 crypto packet. | 998 // Send 1 crypto packet. |
992 SendCryptoPacket(1); | 999 SendCryptoPacket(1); |
993 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); | 1000 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
994 | 1001 |
995 // Retransmit the crypto packet as 2. | 1002 // Retransmit the crypto packet as 2. |
996 manager_.OnRetransmissionTimeout(); | 1003 manager_.OnRetransmissionTimeout(); |
997 RetransmitNextPacket(2); | 1004 RetransmitNextPacket(2); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1036 // Send 1 crypto packet. | 1043 // Send 1 crypto packet. |
1037 SendCryptoPacket(1); | 1044 SendCryptoPacket(1); |
1038 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); | 1045 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
1039 | 1046 |
1040 // Retransmit the crypto packet as 2. | 1047 // Retransmit the crypto packet as 2. |
1041 manager_.OnRetransmissionTimeout(); | 1048 manager_.OnRetransmissionTimeout(); |
1042 RetransmitNextPacket(2); | 1049 RetransmitNextPacket(2); |
1043 | 1050 |
1044 // Now retransmit all the unacked packets, which occurs when there is a | 1051 // Now retransmit all the unacked packets, which occurs when there is a |
1045 // version negotiation. | 1052 // version negotiation. |
1046 manager_.RetransmitUnackedPackets(ALL_PACKETS); | 1053 manager_.RetransmitUnackedPackets(ALL_UNACKED_RETRANSMISSION); |
1047 QuicPacketSequenceNumber unacked[] = { 1, 2 }; | 1054 QuicPacketSequenceNumber unacked[] = { 1, 2 }; |
1048 VerifyUnackedPackets(unacked, arraysize(unacked)); | 1055 VerifyUnackedPackets(unacked, arraysize(unacked)); |
1049 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 1056 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
1050 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); | 1057 EXPECT_TRUE(QuicSentPacketManagerPeer::HasUnackedCryptoPackets(&manager_)); |
1051 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); | 1058 EXPECT_FALSE(QuicSentPacketManagerPeer::HasPendingPackets(&manager_)); |
1052 } | 1059 } |
1053 | 1060 |
1054 TEST_F(QuicSentPacketManagerTest, | 1061 TEST_F(QuicSentPacketManagerTest, |
1055 CryptoHandshakeRetransmissionThenNeuterAndAck) { | 1062 CryptoHandshakeRetransmissionThenNeuterAndAck) { |
1056 // Send 1 crypto packet. | 1063 // Send 1 crypto packet. |
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1439 .WillOnce(Return(100 * kDefaultTCPMSS)); | 1446 .WillOnce(Return(100 * kDefaultTCPMSS)); |
1440 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); | 1447 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); |
1441 manager_.SetFromConfig(config); | 1448 manager_.SetFromConfig(config); |
1442 | 1449 |
1443 EXPECT_TRUE(manager_.using_pacing()); | 1450 EXPECT_TRUE(manager_.using_pacing()); |
1444 } | 1451 } |
1445 | 1452 |
1446 } // namespace | 1453 } // namespace |
1447 } // namespace test | 1454 } // namespace test |
1448 } // namespace net | 1455 } // namespace net |
OLD | NEW |