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 <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "net/quic/quic_flags.h" | 10 #include "net/quic/quic_flags.h" |
11 #include "net/quic/test_tools/quic_config_peer.h" | 11 #include "net/quic/test_tools/quic_config_peer.h" |
12 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" | 12 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" |
13 #include "net/quic/test_tools/quic_test_utils.h" | 13 #include "net/quic/test_tools/quic_test_utils.h" |
14 #include "testing/gmock/include/gmock/gmock.h" | 14 #include "testing/gmock/include/gmock/gmock.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
16 | 16 |
17 using std::vector; | 17 using std::vector; |
18 using testing::AnyNumber; | 18 using testing::AnyNumber; |
19 using testing::ElementsAre; | 19 using testing::ElementsAre; |
20 using testing::IsEmpty; | 20 using testing::IsEmpty; |
21 using testing::Not; | 21 using testing::Not; |
22 using testing::Pair; | 22 using testing::Pair; |
23 using testing::Pointwise; | 23 using testing::Pointwise; |
24 using testing::Return; | 24 using testing::Return; |
| 25 using testing::SetArgPointee; |
25 using testing::StrictMock; | 26 using testing::StrictMock; |
26 using testing::_; | 27 using testing::_; |
27 | 28 |
28 namespace net { | 29 namespace net { |
29 namespace test { | 30 namespace test { |
30 namespace { | 31 namespace { |
31 | 32 |
32 // Default packet length. | 33 // Default packet length. |
33 const uint32_t kDefaultLength = 1000; | 34 const uint32_t kDefaultLength = 1000; |
34 | 35 |
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
643 TEST_P(QuicSentPacketManagerTest, Rtt) { | 644 TEST_P(QuicSentPacketManagerTest, Rtt) { |
644 QuicPacketNumber packet_number = 1; | 645 QuicPacketNumber packet_number = 1; |
645 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(15); | 646 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(15); |
646 SendDataPacket(packet_number); | 647 SendDataPacket(packet_number); |
647 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); | 648 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); |
648 | 649 |
649 ExpectAck(packet_number); | 650 ExpectAck(packet_number); |
650 QuicAckFrame ack_frame = InitAckFrame(packet_number); | 651 QuicAckFrame ack_frame = InitAckFrame(packet_number); |
651 ack_frame.ack_delay_time = QuicTime::Delta::FromMilliseconds(5); | 652 ack_frame.ack_delay_time = QuicTime::Delta::FromMilliseconds(5); |
652 manager_.OnIncomingAck(ack_frame, clock_.Now()); | 653 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
653 EXPECT_EQ(expected_rtt, | 654 EXPECT_EQ(expected_rtt, manager_.GetRttStats()->latest_rtt()); |
654 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt()); | |
655 } | 655 } |
656 | 656 |
657 TEST_P(QuicSentPacketManagerTest, RttWithInvalidDelta) { | 657 TEST_P(QuicSentPacketManagerTest, RttWithInvalidDelta) { |
658 // Expect that the RTT is equal to the local time elapsed, since the | 658 // Expect that the RTT is equal to the local time elapsed, since the |
659 // ack_delay_time is larger than the local time elapsed | 659 // ack_delay_time is larger than the local time elapsed |
660 // and is hence invalid. | 660 // and is hence invalid. |
661 QuicPacketNumber packet_number = 1; | 661 QuicPacketNumber packet_number = 1; |
662 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); | 662 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); |
663 SendDataPacket(packet_number); | 663 SendDataPacket(packet_number); |
664 clock_.AdvanceTime(expected_rtt); | 664 clock_.AdvanceTime(expected_rtt); |
665 | 665 |
666 ExpectAck(packet_number); | 666 ExpectAck(packet_number); |
667 QuicAckFrame ack_frame = InitAckFrame(packet_number); | 667 QuicAckFrame ack_frame = InitAckFrame(packet_number); |
668 ack_frame.ack_delay_time = QuicTime::Delta::FromMilliseconds(11); | 668 ack_frame.ack_delay_time = QuicTime::Delta::FromMilliseconds(11); |
669 manager_.OnIncomingAck(ack_frame, clock_.Now()); | 669 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
670 EXPECT_EQ(expected_rtt, | 670 EXPECT_EQ(expected_rtt, manager_.GetRttStats()->latest_rtt()); |
671 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt()); | |
672 } | 671 } |
673 | 672 |
674 TEST_P(QuicSentPacketManagerTest, RttWithInfiniteDelta) { | 673 TEST_P(QuicSentPacketManagerTest, RttWithInfiniteDelta) { |
675 // Expect that the RTT is equal to the local time elapsed, since the | 674 // Expect that the RTT is equal to the local time elapsed, since the |
676 // ack_delay_time is infinite, and is hence invalid. | 675 // ack_delay_time is infinite, and is hence invalid. |
677 QuicPacketNumber packet_number = 1; | 676 QuicPacketNumber packet_number = 1; |
678 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); | 677 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); |
679 SendDataPacket(packet_number); | 678 SendDataPacket(packet_number); |
680 clock_.AdvanceTime(expected_rtt); | 679 clock_.AdvanceTime(expected_rtt); |
681 | 680 |
682 ExpectAck(packet_number); | 681 ExpectAck(packet_number); |
683 QuicAckFrame ack_frame = InitAckFrame(packet_number); | 682 QuicAckFrame ack_frame = InitAckFrame(packet_number); |
684 ack_frame.ack_delay_time = QuicTime::Delta::Infinite(); | 683 ack_frame.ack_delay_time = QuicTime::Delta::Infinite(); |
685 manager_.OnIncomingAck(ack_frame, clock_.Now()); | 684 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
686 EXPECT_EQ(expected_rtt, | 685 EXPECT_EQ(expected_rtt, manager_.GetRttStats()->latest_rtt()); |
687 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt()); | |
688 } | 686 } |
689 | 687 |
690 TEST_P(QuicSentPacketManagerTest, RttZeroDelta) { | 688 TEST_P(QuicSentPacketManagerTest, RttZeroDelta) { |
691 // Expect that the RTT is the time between send and receive since the | 689 // Expect that the RTT is the time between send and receive since the |
692 // ack_delay_time is zero. | 690 // ack_delay_time is zero. |
693 QuicPacketNumber packet_number = 1; | 691 QuicPacketNumber packet_number = 1; |
694 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); | 692 QuicTime::Delta expected_rtt = QuicTime::Delta::FromMilliseconds(10); |
695 SendDataPacket(packet_number); | 693 SendDataPacket(packet_number); |
696 clock_.AdvanceTime(expected_rtt); | 694 clock_.AdvanceTime(expected_rtt); |
697 | 695 |
698 ExpectAck(packet_number); | 696 ExpectAck(packet_number); |
699 QuicAckFrame ack_frame = InitAckFrame(packet_number); | 697 QuicAckFrame ack_frame = InitAckFrame(packet_number); |
700 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); | 698 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); |
701 manager_.OnIncomingAck(ack_frame, clock_.Now()); | 699 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
702 EXPECT_EQ(expected_rtt, | 700 EXPECT_EQ(expected_rtt, manager_.GetRttStats()->latest_rtt()); |
703 QuicSentPacketManagerPeer::GetRttStats(&manager_)->latest_rtt()); | |
704 } | 701 } |
705 | 702 |
706 TEST_P(QuicSentPacketManagerTest, TailLossProbeTimeout) { | 703 TEST_P(QuicSentPacketManagerTest, TailLossProbeTimeout) { |
707 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); | 704 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); |
708 | 705 |
709 // Send 1 packet. | 706 // Send 1 packet. |
710 QuicPacketNumber packet_number = 1; | 707 QuicPacketNumber packet_number = 1; |
711 SendDataPacket(packet_number); | 708 SendDataPacket(packet_number); |
712 | 709 |
713 // The first tail loss probe retransmits 1 packet. | 710 // The first tail loss probe retransmits 1 packet. |
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1181 } | 1178 } |
1182 | 1179 |
1183 TEST_P(QuicSentPacketManagerTest, GetTransmissionTime) { | 1180 TEST_P(QuicSentPacketManagerTest, GetTransmissionTime) { |
1184 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); | 1181 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); |
1185 } | 1182 } |
1186 | 1183 |
1187 TEST_P(QuicSentPacketManagerTest, GetTransmissionTimeCryptoHandshake) { | 1184 TEST_P(QuicSentPacketManagerTest, GetTransmissionTimeCryptoHandshake) { |
1188 SendCryptoPacket(1); | 1185 SendCryptoPacket(1); |
1189 | 1186 |
1190 // Check the min. | 1187 // Check the min. |
1191 RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_); | 1188 RttStats* rtt_stats = const_cast<RttStats*>(manager_.GetRttStats()); |
1192 rtt_stats->set_initial_rtt_us(1 * kNumMicrosPerMilli); | 1189 rtt_stats->set_initial_rtt_us(1 * kNumMicrosPerMilli); |
1193 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), | 1190 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), |
1194 manager_.GetRetransmissionTime()); | 1191 manager_.GetRetransmissionTime()); |
1195 | 1192 |
1196 // Test with a standard smoothed RTT. | 1193 // Test with a standard smoothed RTT. |
1197 rtt_stats->set_initial_rtt_us(100 * kNumMicrosPerMilli); | 1194 rtt_stats->set_initial_rtt_us(100 * kNumMicrosPerMilli); |
1198 | 1195 |
1199 QuicTime::Delta srtt = | 1196 QuicTime::Delta srtt = |
1200 QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us()); | 1197 QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us()); |
1201 QuicTime expected_time = clock_.Now().Add(srtt.Multiply(1.5)); | 1198 QuicTime expected_time = clock_.Now().Add(srtt.Multiply(1.5)); |
1202 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); | 1199 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); |
1203 | 1200 |
1204 // Retransmit the packet by invoking the retransmission timeout. | 1201 // Retransmit the packet by invoking the retransmission timeout. |
1205 clock_.AdvanceTime(srtt.Multiply(1.5)); | 1202 clock_.AdvanceTime(srtt.Multiply(1.5)); |
1206 manager_.OnRetransmissionTimeout(); | 1203 manager_.OnRetransmissionTimeout(); |
1207 RetransmitNextPacket(2); | 1204 RetransmitNextPacket(2); |
1208 | 1205 |
1209 // The retransmission time should now be twice as far in the future. | 1206 // The retransmission time should now be twice as far in the future. |
1210 expected_time = clock_.Now().Add(srtt.Multiply(2).Multiply(1.5)); | 1207 expected_time = clock_.Now().Add(srtt.Multiply(2).Multiply(1.5)); |
1211 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); | 1208 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); |
1212 } | 1209 } |
1213 | 1210 |
1214 TEST_P(QuicSentPacketManagerTest, GetTransmissionTimeTailLossProbe) { | 1211 TEST_P(QuicSentPacketManagerTest, GetTransmissionTimeTailLossProbe) { |
1215 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); | 1212 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); |
1216 SendDataPacket(1); | 1213 SendDataPacket(1); |
1217 SendDataPacket(2); | 1214 SendDataPacket(2); |
1218 | 1215 |
1219 // Check the min. | 1216 // Check the min. |
1220 RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_); | 1217 RttStats* rtt_stats = const_cast<RttStats*>(manager_.GetRttStats()); |
1221 rtt_stats->set_initial_rtt_us(1 * kNumMicrosPerMilli); | 1218 rtt_stats->set_initial_rtt_us(1 * kNumMicrosPerMilli); |
1222 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), | 1219 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), |
1223 manager_.GetRetransmissionTime()); | 1220 manager_.GetRetransmissionTime()); |
1224 | 1221 |
1225 // Test with a standard smoothed RTT. | 1222 // Test with a standard smoothed RTT. |
1226 rtt_stats->set_initial_rtt_us(100 * kNumMicrosPerMilli); | 1223 rtt_stats->set_initial_rtt_us(100 * kNumMicrosPerMilli); |
1227 QuicTime::Delta srtt = | 1224 QuicTime::Delta srtt = |
1228 QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us()); | 1225 QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us()); |
1229 QuicTime::Delta expected_tlp_delay = srtt.Multiply(2); | 1226 QuicTime::Delta expected_tlp_delay = srtt.Multiply(2); |
1230 QuicTime expected_time = clock_.Now().Add(expected_tlp_delay); | 1227 QuicTime expected_time = clock_.Now().Add(expected_tlp_delay); |
(...skipping 12 matching lines...) Expand all Loading... |
1243 .WillOnce(Return(QuicTime::Delta::Infinite())); | 1240 .WillOnce(Return(QuicTime::Delta::Infinite())); |
1244 EXPECT_EQ(QuicTime::Delta::Infinite(), | 1241 EXPECT_EQ(QuicTime::Delta::Infinite(), |
1245 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); | 1242 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); |
1246 EXPECT_FALSE(manager_.HasPendingRetransmissions()); | 1243 EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
1247 | 1244 |
1248 expected_time = clock_.Now().Add(expected_tlp_delay); | 1245 expected_time = clock_.Now().Add(expected_tlp_delay); |
1249 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); | 1246 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); |
1250 } | 1247 } |
1251 | 1248 |
1252 TEST_P(QuicSentPacketManagerTest, GetTransmissionTimeSpuriousRTO) { | 1249 TEST_P(QuicSentPacketManagerTest, GetTransmissionTimeSpuriousRTO) { |
1253 QuicSentPacketManagerPeer::GetRttStats(&manager_) | 1250 const_cast<RttStats*>(manager_.GetRttStats()) |
1254 ->UpdateRtt(QuicTime::Delta::FromMilliseconds(100), | 1251 ->UpdateRtt(QuicTime::Delta::FromMilliseconds(100), |
1255 QuicTime::Delta::Zero(), QuicTime::Zero()); | 1252 QuicTime::Delta::Zero(), QuicTime::Zero()); |
1256 | |
1257 SendDataPacket(1); | 1253 SendDataPacket(1); |
1258 SendDataPacket(2); | 1254 SendDataPacket(2); |
1259 SendDataPacket(3); | 1255 SendDataPacket(3); |
1260 SendDataPacket(4); | 1256 SendDataPacket(4); |
1261 | 1257 |
1262 QuicTime::Delta expected_rto_delay = QuicTime::Delta::FromMilliseconds(500); | 1258 QuicTime::Delta expected_rto_delay = QuicTime::Delta::FromMilliseconds(500); |
1263 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) | 1259 EXPECT_CALL(*send_algorithm_, RetransmissionDelay()) |
1264 .WillRepeatedly(Return(expected_rto_delay)); | 1260 .WillRepeatedly(Return(expected_rto_delay)); |
1265 QuicTime expected_time = clock_.Now().Add(expected_rto_delay); | 1261 QuicTime expected_time = clock_.Now().Add(expected_rto_delay); |
1266 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); | 1262 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1541 | 1537 |
1542 options.push_back(kNRTO); | 1538 options.push_back(kNRTO); |
1543 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); | 1539 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); |
1544 client_config.SetConnectionOptionsToSend(options); | 1540 client_config.SetConnectionOptionsToSend(options); |
1545 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); | 1541 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); |
1546 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); | 1542 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); |
1547 manager_.SetFromConfig(client_config); | 1543 manager_.SetFromConfig(client_config); |
1548 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); | 1544 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); |
1549 } | 1545 } |
1550 | 1546 |
| 1547 TEST_P(QuicSentPacketManagerTest, NegotiateUndoFromOptionsAtServer) { |
| 1548 FLAGS_quic_loss_recovery_use_largest_acked = true; |
| 1549 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUndoRetransmits(&manager_)); |
| 1550 QuicConfig config; |
| 1551 QuicTagVector options; |
| 1552 |
| 1553 options.push_back(kUNDO); |
| 1554 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); |
| 1555 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); |
| 1556 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); |
| 1557 manager_.SetFromConfig(config); |
| 1558 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUndoRetransmits(&manager_)); |
| 1559 |
| 1560 // Ensure undo works as intended. |
| 1561 // Send 5 packets, mark the first 4 for retransmission, and then cancel |
| 1562 // them when 1 is acked. |
| 1563 EXPECT_CALL(*send_algorithm_, PacingRate()) |
| 1564 .WillRepeatedly(Return(QuicBandwidth::Zero())); |
| 1565 EXPECT_CALL(*send_algorithm_, GetCongestionWindow()) |
| 1566 .WillOnce(Return(10 * kDefaultTCPMSS)); |
| 1567 const size_t kNumSentPackets = 5; |
| 1568 for (size_t i = 1; i <= kNumSentPackets; ++i) { |
| 1569 SendDataPacket(i); |
| 1570 } |
| 1571 MockLossAlgorithm* loss_algorithm = new MockLossAlgorithm(); |
| 1572 QuicSentPacketManagerPeer::SetLossAlgorithm(&manager_, loss_algorithm); |
| 1573 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); |
| 1574 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); |
| 1575 SendAlgorithmInterface::CongestionVector lost_packets; |
| 1576 for (size_t i = 1; i < kNumSentPackets; ++i) { |
| 1577 lost_packets.push_back(std::make_pair(i, kMaxPacketSize)); |
| 1578 } |
| 1579 EXPECT_CALL(*loss_algorithm, DetectLosses(_, _, _, _, _)) |
| 1580 .WillOnce(SetArgPointee<4>(lost_packets)); |
| 1581 QuicAckFrame ack_frame = InitAckFrame(kNumSentPackets); |
| 1582 NackPackets(1, kNumSentPackets, &ack_frame); |
| 1583 // Congestion block the sending right before losing the packets. |
| 1584 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) |
| 1585 .WillRepeatedly(Return(QuicTime::Delta::Infinite())); |
| 1586 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
| 1587 EXPECT_TRUE(manager_.HasPendingRetransmissions()); |
| 1588 EXPECT_EQ(0u, BytesInFlight()); |
| 1589 |
| 1590 // Ack 1 and ensure the retransmissions are cancelled and put back in flight. |
| 1591 EXPECT_CALL(*loss_algorithm, DetectLosses(_, _, _, _, _)); |
| 1592 ack_frame = InitAckFrame(5); |
| 1593 NackPackets(2, kNumSentPackets, &ack_frame); |
| 1594 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
| 1595 EXPECT_FALSE(manager_.HasPendingRetransmissions()); |
| 1596 EXPECT_EQ(3u * kDefaultLength, BytesInFlight()); |
| 1597 } |
| 1598 |
| 1599 TEST_P(QuicSentPacketManagerTest, NegotiateUndoFromOptionsAtClient) { |
| 1600 FLAGS_quic_loss_recovery_use_largest_acked = true; |
| 1601 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUndoRetransmits(&manager_)); |
| 1602 QuicConfig client_config; |
| 1603 QuicTagVector options; |
| 1604 |
| 1605 options.push_back(kUNDO); |
| 1606 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); |
| 1607 client_config.SetConnectionOptionsToSend(options); |
| 1608 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); |
| 1609 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); |
| 1610 manager_.SetFromConfig(client_config); |
| 1611 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUndoRetransmits(&manager_)); |
| 1612 } |
| 1613 |
1551 TEST_P(QuicSentPacketManagerTest, | 1614 TEST_P(QuicSentPacketManagerTest, |
1552 NegotiateConservativeReceiveWindowFromOptions) { | 1615 NegotiateConservativeReceiveWindowFromOptions) { |
1553 EXPECT_EQ(kDefaultSocketReceiveBuffer, | 1616 EXPECT_EQ(kDefaultSocketReceiveBuffer, |
1554 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); | 1617 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); |
1555 | 1618 |
1556 // Try to set a size below the minimum and ensure it gets set to the min. | 1619 // Try to set a size below the minimum and ensure it gets set to the min. |
1557 QuicConfig client_config; | 1620 QuicConfig client_config; |
1558 QuicConfigPeer::SetReceivedSocketReceiveBuffer(&client_config, 1024); | 1621 QuicConfigPeer::SetReceivedSocketReceiveBuffer(&client_config, 1024); |
1559 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); | 1622 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); |
1560 EXPECT_CALL(*send_algorithm_, | 1623 EXPECT_CALL(*send_algorithm_, |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1635 CachedNetworkParameters cached_network_params; | 1698 CachedNetworkParameters cached_network_params; |
1636 cached_network_params.set_min_rtt_ms(kRttMs); | 1699 cached_network_params.set_min_rtt_ms(kRttMs); |
1637 | 1700 |
1638 EXPECT_CALL(*send_algorithm_, ResumeConnectionState(_, false)); | 1701 EXPECT_CALL(*send_algorithm_, ResumeConnectionState(_, false)); |
1639 manager_.ResumeConnectionState(cached_network_params, false); | 1702 manager_.ResumeConnectionState(cached_network_params, false); |
1640 EXPECT_EQ(kRttMs * kNumMicrosPerMilli, | 1703 EXPECT_EQ(kRttMs * kNumMicrosPerMilli, |
1641 static_cast<uint64_t>(manager_.GetRttStats()->initial_rtt_us())); | 1704 static_cast<uint64_t>(manager_.GetRttStats()->initial_rtt_us())); |
1642 } | 1705 } |
1643 | 1706 |
1644 TEST_P(QuicSentPacketManagerTest, ConnectionMigrationUnspecifiedChange) { | 1707 TEST_P(QuicSentPacketManagerTest, ConnectionMigrationUnspecifiedChange) { |
1645 RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_); | 1708 RttStats* rtt_stats = const_cast<RttStats*>(manager_.GetRttStats()); |
1646 int64_t default_init_rtt = rtt_stats->initial_rtt_us(); | 1709 int64_t default_init_rtt = rtt_stats->initial_rtt_us(); |
1647 rtt_stats->set_initial_rtt_us(default_init_rtt * 2); | 1710 rtt_stats->set_initial_rtt_us(default_init_rtt * 2); |
1648 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); | 1711 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); |
1649 | 1712 |
1650 QuicSentPacketManagerPeer::SetConsecutiveRtoCount(&manager_, 1); | 1713 QuicSentPacketManagerPeer::SetConsecutiveRtoCount(&manager_, 1); |
1651 EXPECT_EQ(1u, manager_.consecutive_rto_count()); | 1714 EXPECT_EQ(1u, manager_.consecutive_rto_count()); |
1652 QuicSentPacketManagerPeer::SetConsecutiveTlpCount(&manager_, 2); | 1715 QuicSentPacketManagerPeer::SetConsecutiveTlpCount(&manager_, 2); |
1653 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); | 1716 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); |
1654 | 1717 |
1655 EXPECT_CALL(*send_algorithm_, OnConnectionMigration()); | 1718 EXPECT_CALL(*send_algorithm_, OnConnectionMigration()); |
1656 manager_.OnConnectionMigration(UNSPECIFIED_CHANGE); | 1719 manager_.OnConnectionMigration(UNSPECIFIED_CHANGE); |
1657 | 1720 |
1658 EXPECT_EQ(default_init_rtt, rtt_stats->initial_rtt_us()); | 1721 EXPECT_EQ(default_init_rtt, rtt_stats->initial_rtt_us()); |
1659 EXPECT_EQ(0u, manager_.consecutive_rto_count()); | 1722 EXPECT_EQ(0u, manager_.consecutive_rto_count()); |
1660 EXPECT_EQ(0u, manager_.consecutive_tlp_count()); | 1723 EXPECT_EQ(0u, manager_.consecutive_tlp_count()); |
1661 } | 1724 } |
1662 | 1725 |
1663 TEST_P(QuicSentPacketManagerTest, ConnectionMigrationIPSubnetChange) { | 1726 TEST_P(QuicSentPacketManagerTest, ConnectionMigrationIPSubnetChange) { |
1664 RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_); | 1727 RttStats* rtt_stats = const_cast<RttStats*>(manager_.GetRttStats()); |
1665 int64_t default_init_rtt = rtt_stats->initial_rtt_us(); | 1728 int64_t default_init_rtt = rtt_stats->initial_rtt_us(); |
1666 rtt_stats->set_initial_rtt_us(default_init_rtt * 2); | 1729 rtt_stats->set_initial_rtt_us(default_init_rtt * 2); |
1667 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); | 1730 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); |
1668 | 1731 |
1669 QuicSentPacketManagerPeer::SetConsecutiveRtoCount(&manager_, 1); | 1732 QuicSentPacketManagerPeer::SetConsecutiveRtoCount(&manager_, 1); |
1670 EXPECT_EQ(1u, manager_.consecutive_rto_count()); | 1733 EXPECT_EQ(1u, manager_.consecutive_rto_count()); |
1671 QuicSentPacketManagerPeer::SetConsecutiveTlpCount(&manager_, 2); | 1734 QuicSentPacketManagerPeer::SetConsecutiveTlpCount(&manager_, 2); |
1672 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); | 1735 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); |
1673 | 1736 |
1674 manager_.OnConnectionMigration(IPV4_SUBNET_CHANGE); | 1737 manager_.OnConnectionMigration(IPV4_SUBNET_CHANGE); |
1675 | 1738 |
1676 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); | 1739 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); |
1677 EXPECT_EQ(1u, manager_.consecutive_rto_count()); | 1740 EXPECT_EQ(1u, manager_.consecutive_rto_count()); |
1678 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); | 1741 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); |
1679 } | 1742 } |
1680 | 1743 |
1681 TEST_P(QuicSentPacketManagerTest, ConnectionMigrationPortChange) { | 1744 TEST_P(QuicSentPacketManagerTest, ConnectionMigrationPortChange) { |
1682 RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_); | 1745 RttStats* rtt_stats = const_cast<RttStats*>(manager_.GetRttStats()); |
1683 int64_t default_init_rtt = rtt_stats->initial_rtt_us(); | 1746 int64_t default_init_rtt = rtt_stats->initial_rtt_us(); |
1684 rtt_stats->set_initial_rtt_us(default_init_rtt * 2); | 1747 rtt_stats->set_initial_rtt_us(default_init_rtt * 2); |
1685 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); | 1748 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); |
1686 | 1749 |
1687 QuicSentPacketManagerPeer::SetConsecutiveRtoCount(&manager_, 1); | 1750 QuicSentPacketManagerPeer::SetConsecutiveRtoCount(&manager_, 1); |
1688 EXPECT_EQ(1u, manager_.consecutive_rto_count()); | 1751 EXPECT_EQ(1u, manager_.consecutive_rto_count()); |
1689 QuicSentPacketManagerPeer::SetConsecutiveTlpCount(&manager_, 2); | 1752 QuicSentPacketManagerPeer::SetConsecutiveTlpCount(&manager_, 2); |
1690 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); | 1753 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); |
1691 | 1754 |
1692 manager_.OnConnectionMigration(PORT_CHANGE); | 1755 manager_.OnConnectionMigration(PORT_CHANGE); |
1693 | 1756 |
1694 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); | 1757 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); |
1695 EXPECT_EQ(1u, manager_.consecutive_rto_count()); | 1758 EXPECT_EQ(1u, manager_.consecutive_rto_count()); |
1696 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); | 1759 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); |
1697 } | 1760 } |
1698 | 1761 |
1699 } // namespace | 1762 } // namespace |
1700 } // namespace test | 1763 } // namespace test |
1701 } // namespace net | 1764 } // namespace net |
OLD | NEW |