Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Side by Side Diff: net/quic/quic_sent_packet_manager_test.cc

Issue 1983183002: Landing Recent QUIC changes until 5/14/2016 02:25:25 UTC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: "first try to fix link error for win_clang build" Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/quic_session.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/quic_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698