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 941 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
952 EXPECT_EQ(7u, manager_.NextPendingRetransmission().packet_number); | 952 EXPECT_EQ(7u, manager_.NextPendingRetransmission().packet_number); |
953 RetransmitNextPacket(9); | 953 RetransmitNextPacket(9); |
954 | 954 |
955 EXPECT_TRUE(manager_.HasPendingRetransmissions()); | 955 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
956 // Send 3 more data packets and ensure the least unacked is raised. | 956 // Send 3 more data packets and ensure the least unacked is raised. |
957 RetransmitNextPacket(10); | 957 RetransmitNextPacket(10); |
958 RetransmitNextPacket(11); | 958 RetransmitNextPacket(11); |
959 RetransmitNextPacket(12); | 959 RetransmitNextPacket(12); |
960 EXPECT_FALSE(manager_.HasPendingRetransmissions()); | 960 EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
961 | 961 |
962 if (!FLAGS_quic_track_single_retransmission) { | |
963 EXPECT_EQ(8u, manager_.GetLeastUnacked()); | |
964 return; | |
965 } | |
966 EXPECT_EQ(1u, manager_.GetLeastUnacked()); | 962 EXPECT_EQ(1u, manager_.GetLeastUnacked()); |
967 // Least unacked isn't raised until an ack is received, so ack the | 963 // Least unacked isn't raised until an ack is received, so ack the |
968 // crypto packets. | 964 // crypto packets. |
969 QuicPacketNumber acked[] = {8, 9}; | 965 QuicPacketNumber acked[] = {8, 9}; |
970 ExpectAcksAndLosses(true, acked, arraysize(acked), nullptr, 0); | 966 ExpectAcksAndLosses(true, acked, arraysize(acked), nullptr, 0); |
971 QuicAckFrame ack_frame; | 967 QuicAckFrame ack_frame; |
972 ack_frame.largest_observed = 9; | 968 ack_frame.largest_observed = 9; |
973 for (QuicPacketNumber i = 1; i < 8; ++i) { | 969 for (QuicPacketNumber i = 1; i < 8; ++i) { |
974 ack_frame.missing_packets.Add(i); | 970 ack_frame.missing_packets.Add(i); |
975 } | 971 } |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1400 QuicSentPacketManagerPeer::SetLossAlgorithm(&manager_, loss_algorithm); | 1396 QuicSentPacketManagerPeer::SetLossAlgorithm(&manager_, loss_algorithm); |
1401 | 1397 |
1402 EXPECT_CALL(*loss_algorithm, GetLossTimeout()) | 1398 EXPECT_CALL(*loss_algorithm, GetLossTimeout()) |
1403 .WillRepeatedly(Return(QuicTime::Zero())); | 1399 .WillRepeatedly(Return(QuicTime::Zero())); |
1404 SendDataPacket(1); | 1400 SendDataPacket(1); |
1405 SendDataPacket(2); | 1401 SendDataPacket(2); |
1406 | 1402 |
1407 // Handle an ack which causes the loss algorithm to be evaluated and | 1403 // Handle an ack which causes the loss algorithm to be evaluated and |
1408 // set the loss timeout. | 1404 // set the loss timeout. |
1409 ExpectAck(2); | 1405 ExpectAck(2); |
1410 if (FLAGS_quic_general_loss_algorithm) { | 1406 EXPECT_CALL(*loss_algorithm, DetectLosses(_, _, _, _)); |
1411 EXPECT_CALL(*loss_algorithm, DetectLosses(_, _, _, _)); | |
1412 } else { | |
1413 EXPECT_CALL(*loss_algorithm, DetectLostPackets(_, _, _, _)) | |
1414 .WillOnce(Return(PacketNumberSet())); | |
1415 } | |
1416 QuicAckFrame ack_frame; | 1407 QuicAckFrame ack_frame; |
1417 ack_frame.largest_observed = 2; | 1408 ack_frame.largest_observed = 2; |
1418 ack_frame.missing_packets.Add(1); | 1409 ack_frame.missing_packets.Add(1); |
1419 manager_.OnIncomingAck(ack_frame, clock_.Now()); | 1410 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
1420 | 1411 |
1421 QuicTime timeout(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10))); | 1412 QuicTime timeout(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10))); |
1422 EXPECT_CALL(*loss_algorithm, GetLossTimeout()) | 1413 EXPECT_CALL(*loss_algorithm, GetLossTimeout()) |
1423 .WillRepeatedly(Return(timeout)); | 1414 .WillRepeatedly(Return(timeout)); |
1424 EXPECT_EQ(timeout, manager_.GetRetransmissionTime()); | 1415 EXPECT_EQ(timeout, manager_.GetRetransmissionTime()); |
1425 | 1416 |
1426 // Fire the retransmission timeout and ensure the loss detection algorithm | 1417 // Fire the retransmission timeout and ensure the loss detection algorithm |
1427 // is invoked. | 1418 // is invoked. |
1428 if (FLAGS_quic_general_loss_algorithm) { | 1419 EXPECT_CALL(*loss_algorithm, DetectLosses(_, _, _, _)); |
1429 EXPECT_CALL(*loss_algorithm, DetectLosses(_, _, _, _)); | |
1430 } else { | |
1431 EXPECT_CALL(*loss_algorithm, DetectLostPackets(_, _, _, _)) | |
1432 .WillOnce(Return(PacketNumberSet())); | |
1433 } | |
1434 manager_.OnRetransmissionTimeout(); | 1420 manager_.OnRetransmissionTimeout(); |
1435 } | 1421 } |
1436 | 1422 |
1437 TEST_F(QuicSentPacketManagerTest, NegotiateTimeLossDetectionFromOptions) { | 1423 TEST_F(QuicSentPacketManagerTest, NegotiateTimeLossDetectionFromOptions) { |
1438 EXPECT_EQ(kNack, QuicSentPacketManagerPeer::GetLossAlgorithm(&manager_) | 1424 EXPECT_EQ(kNack, QuicSentPacketManagerPeer::GetLossAlgorithm(&manager_) |
1439 ->GetLossDetectionType()); | 1425 ->GetLossDetectionType()); |
1440 | 1426 |
1441 QuicConfig config; | 1427 QuicConfig config; |
1442 QuicTagVector options; | 1428 QuicTagVector options; |
1443 options.push_back(kTIME); | 1429 options.push_back(kTIME); |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1710 | 1696 |
1711 EXPECT_CALL(*send_algorithm_, ResumeConnectionState(_, false)); | 1697 EXPECT_CALL(*send_algorithm_, ResumeConnectionState(_, false)); |
1712 manager_.ResumeConnectionState(cached_network_params, false); | 1698 manager_.ResumeConnectionState(cached_network_params, false); |
1713 EXPECT_EQ(kRttMs * kNumMicrosPerMilli, | 1699 EXPECT_EQ(kRttMs * kNumMicrosPerMilli, |
1714 static_cast<uint64_t>(manager_.GetRttStats()->initial_rtt_us())); | 1700 static_cast<uint64_t>(manager_.GetRttStats()->initial_rtt_us())); |
1715 } | 1701 } |
1716 | 1702 |
1717 } // namespace | 1703 } // namespace |
1718 } // namespace test | 1704 } // namespace test |
1719 } // namespace net | 1705 } // namespace net |
OLD | NEW |