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

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

Issue 1981643002: Combine OnCongestionWindowChange and OnRttChange to OnCongestionChange in QuicSentPacketManager::Ne… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@121732198
Patch Set: 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/test_tools/quic_test_utils.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"
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 EXPECT_TRUE(manager_.HasRetransmittableFrames(packets[i])) 139 EXPECT_TRUE(manager_.HasRetransmittableFrames(packets[i]))
140 << " packets[" << i << "]:" << packets[i]; 140 << " packets[" << i << "]:" << packets[i];
141 } 141 }
142 } 142 }
143 143
144 void ExpectAck(QuicPacketNumber largest_observed) { 144 void ExpectAck(QuicPacketNumber largest_observed) {
145 EXPECT_CALL( 145 EXPECT_CALL(
146 *send_algorithm_, 146 *send_algorithm_,
147 OnCongestionEvent(true, _, ElementsAre(Pair(largest_observed, _)), 147 OnCongestionEvent(true, _, ElementsAre(Pair(largest_observed, _)),
148 IsEmpty())); 148 IsEmpty()));
149 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 149 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
150 EXPECT_CALL(*network_change_visitor_, OnRttChange());
151 } 150 }
152 151
153 void ExpectUpdatedRtt(QuicPacketNumber largest_observed) { 152 void ExpectUpdatedRtt(QuicPacketNumber largest_observed) {
154 EXPECT_CALL(*send_algorithm_, 153 EXPECT_CALL(*send_algorithm_,
155 OnCongestionEvent(true, _, IsEmpty(), IsEmpty())); 154 OnCongestionEvent(true, _, IsEmpty(), IsEmpty()));
156 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 155 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
157 EXPECT_CALL(*network_change_visitor_, OnRttChange());
158 } 156 }
159 157
160 void ExpectAckAndLoss(bool rtt_updated, 158 void ExpectAckAndLoss(bool rtt_updated,
161 QuicPacketNumber largest_observed, 159 QuicPacketNumber largest_observed,
162 QuicPacketNumber lost_packet) { 160 QuicPacketNumber lost_packet) {
163 EXPECT_CALL(*send_algorithm_, 161 EXPECT_CALL(*send_algorithm_,
164 OnCongestionEvent(rtt_updated, _, 162 OnCongestionEvent(rtt_updated, _,
165 ElementsAre(Pair(largest_observed, _)), 163 ElementsAre(Pair(largest_observed, _)),
166 ElementsAre(Pair(lost_packet, _)))); 164 ElementsAre(Pair(lost_packet, _))));
167 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 165 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
168 EXPECT_CALL(*network_change_visitor_, OnRttChange());
169 } 166 }
170 167
171 // |packets_acked| and |packets_lost| should be in packet number order. 168 // |packets_acked| and |packets_lost| should be in packet number order.
172 void ExpectAcksAndLosses(bool rtt_updated, 169 void ExpectAcksAndLosses(bool rtt_updated,
173 QuicPacketNumber* packets_acked, 170 QuicPacketNumber* packets_acked,
174 size_t num_packets_acked, 171 size_t num_packets_acked,
175 QuicPacketNumber* packets_lost, 172 QuicPacketNumber* packets_lost,
176 size_t num_packets_lost) { 173 size_t num_packets_lost) {
177 vector<QuicPacketNumber> ack_vector; 174 vector<QuicPacketNumber> ack_vector;
178 for (size_t i = 0; i < num_packets_acked; ++i) { 175 for (size_t i = 0; i < num_packets_acked; ++i) {
179 ack_vector.push_back(packets_acked[i]); 176 ack_vector.push_back(packets_acked[i]);
180 } 177 }
181 vector<QuicPacketNumber> lost_vector; 178 vector<QuicPacketNumber> lost_vector;
182 for (size_t i = 0; i < num_packets_lost; ++i) { 179 for (size_t i = 0; i < num_packets_lost; ++i) {
183 lost_vector.push_back(packets_lost[i]); 180 lost_vector.push_back(packets_lost[i]);
184 } 181 }
185 EXPECT_CALL( 182 EXPECT_CALL(
186 *send_algorithm_, 183 *send_algorithm_,
187 OnCongestionEvent(rtt_updated, _, Pointwise(KeyEq(), ack_vector), 184 OnCongestionEvent(rtt_updated, _, Pointwise(KeyEq(), ack_vector),
188 Pointwise(KeyEq(), lost_vector))); 185 Pointwise(KeyEq(), lost_vector)));
189 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()) 186 EXPECT_CALL(*network_change_visitor_, OnCongestionChange())
190 .Times(AnyNumber()); 187 .Times(AnyNumber());
191 EXPECT_CALL(*network_change_visitor_, OnRttChange()).Times(AnyNumber());
192 } 188 }
193 189
194 void RetransmitAndSendPacket(QuicPacketNumber old_packet_number, 190 void RetransmitAndSendPacket(QuicPacketNumber old_packet_number,
195 QuicPacketNumber new_packet_number) { 191 QuicPacketNumber new_packet_number) {
196 RetransmitAndSendPacket(old_packet_number, new_packet_number, 192 RetransmitAndSendPacket(old_packet_number, new_packet_number,
197 TLP_RETRANSMISSION); 193 TLP_RETRANSMISSION);
198 } 194 }
199 195
200 void RetransmitAndSendPacket(QuicPacketNumber old_packet_number, 196 void RetransmitAndSendPacket(QuicPacketNumber old_packet_number,
201 QuicPacketNumber new_packet_number, 197 QuicPacketNumber new_packet_number,
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); 455 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime());
460 } 456 }
461 457
462 TEST_P(QuicSentPacketManagerTest, 458 TEST_P(QuicSentPacketManagerTest,
463 DISABLED_RetransmitTwiceThenAckPreviousBeforeSend) { 459 DISABLED_RetransmitTwiceThenAckPreviousBeforeSend) {
464 SendDataPacket(1); 460 SendDataPacket(1);
465 RetransmitAndSendPacket(1, 2); 461 RetransmitAndSendPacket(1, 2);
466 462
467 // Fire the RTO, which will mark 2 for retransmission (but will not send it). 463 // Fire the RTO, which will mark 2 for retransmission (but will not send it).
468 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); 464 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true));
469 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 465 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
470 manager_.OnRetransmissionTimeout(); 466 manager_.OnRetransmissionTimeout();
471 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 467 EXPECT_TRUE(manager_.HasPendingRetransmissions());
472 468
473 // Ack 1 but not 2, before 2 is able to be sent. 469 // Ack 1 but not 2, before 2 is able to be sent.
474 // Since 1 has been retransmitted, it has already been lost, and so the 470 // Since 1 has been retransmitted, it has already been lost, and so the
475 // send algorithm is not informed that it has been ACK'd. 471 // send algorithm is not informed that it has been ACK'd.
476 QuicAckFrame ack_frame = InitAckFrame(1); 472 QuicAckFrame ack_frame = InitAckFrame(1);
477 ExpectUpdatedRtt(1); 473 ExpectUpdatedRtt(1);
478 EXPECT_CALL(*send_algorithm_, RevertRetransmissionTimeout()); 474 EXPECT_CALL(*send_algorithm_, RevertRetransmissionTimeout());
479 manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow()); 475 manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow());
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 // Send and Ack the RTO and ensure OnRetransmissionTimeout is called. 817 // Send and Ack the RTO and ensure OnRetransmissionTimeout is called.
822 EXPECT_EQ(102 * kDefaultLength, 818 EXPECT_EQ(102 * kDefaultLength,
823 QuicSentPacketManagerPeer::GetBytesInFlight(&manager_)); 819 QuicSentPacketManagerPeer::GetBytesInFlight(&manager_));
824 820
825 RetransmitNextPacket(103); 821 RetransmitNextPacket(103);
826 QuicAckFrame ack_frame = InitAckFrame(103); 822 QuicAckFrame ack_frame = InitAckFrame(103);
827 NackPackets(0, 103, &ack_frame); 823 NackPackets(0, 103, &ack_frame);
828 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); 824 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true));
829 EXPECT_CALL(*send_algorithm_, 825 EXPECT_CALL(*send_algorithm_,
830 OnCongestionEvent(true, _, ElementsAre(Pair(103, _)), _)); 826 OnCongestionEvent(true, _, ElementsAre(Pair(103, _)), _));
831 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 827 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
832 EXPECT_CALL(*network_change_visitor_, OnRttChange());
833 manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow()); 828 manager_.OnIncomingAck(ack_frame, clock_.ApproximateNow());
834 // All packets before 103 should be lost. 829 // All packets before 103 should be lost.
835 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetBytesInFlight(&manager_)); 830 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetBytesInFlight(&manager_));
836 } 831 }
837 832
838 TEST_P(QuicSentPacketManagerTest, CryptoHandshakeTimeout) { 833 TEST_P(QuicSentPacketManagerTest, CryptoHandshakeTimeout) {
839 // Send 2 crypto packets and 3 data packets. 834 // Send 2 crypto packets and 3 data packets.
840 const size_t kNumSentCryptoPackets = 2; 835 const size_t kNumSentCryptoPackets = 2;
841 for (size_t i = 1; i <= kNumSentCryptoPackets; ++i) { 836 for (size_t i = 1; i <= kNumSentCryptoPackets; ++i) {
842 SendCryptoPacket(i); 837 SendCryptoPacket(i);
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
1045 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 1040 EXPECT_FALSE(manager_.HasPendingRetransmissions());
1046 1041
1047 // Ack a retransmission. 1042 // Ack a retransmission.
1048 QuicAckFrame ack_frame = InitAckFrame(102); 1043 QuicAckFrame ack_frame = InitAckFrame(102);
1049 NackPackets(0, 102, &ack_frame); 1044 NackPackets(0, 102, &ack_frame);
1050 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); 1045 ack_frame.ack_delay_time = QuicTime::Delta::Zero();
1051 // Ensure no packets are lost. 1046 // Ensure no packets are lost.
1052 EXPECT_CALL(*send_algorithm_, 1047 EXPECT_CALL(*send_algorithm_,
1053 OnCongestionEvent(true, _, ElementsAre(Pair(102, _)), 1048 OnCongestionEvent(true, _, ElementsAre(Pair(102, _)),
1054 /*lost_packets=*/IsEmpty())); 1049 /*lost_packets=*/IsEmpty()));
1055 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1050 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1056 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1057 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); 1051 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true));
1058 // RTO's use loss detection instead of immediately declaring retransmitted 1052 // RTO's use loss detection instead of immediately declaring retransmitted
1059 // packets lost. 1053 // packets lost.
1060 for (int i = 1; i <= 99; ++i) { 1054 for (int i = 1; i <= 99; ++i) {
1061 EXPECT_CALL(debug_delegate, OnPacketLoss(i, LOSS_RETRANSMISSION, _)); 1055 EXPECT_CALL(debug_delegate, OnPacketLoss(i, LOSS_RETRANSMISSION, _));
1062 } 1056 }
1063 manager_.OnIncomingAck(ack_frame, clock_.Now()); 1057 manager_.OnIncomingAck(ack_frame, clock_.Now());
1064 } 1058 }
1065 1059
1066 TEST_P(QuicSentPacketManagerTest, NewRetransmissionTimeout) { 1060 TEST_P(QuicSentPacketManagerTest, NewRetransmissionTimeout) {
1067 QuicConfig client_config; 1061 QuicConfig client_config;
1068 QuicTagVector options; 1062 QuicTagVector options;
1069 options.push_back(kNRTO); 1063 options.push_back(kNRTO);
1070 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); 1064 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT);
1071 client_config.SetConnectionOptionsToSend(options); 1065 client_config.SetConnectionOptionsToSend(options);
1072 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1066 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1073 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1074 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1067 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1075 EXPECT_CALL(*send_algorithm_, PacingRate()) 1068 EXPECT_CALL(*send_algorithm_, PacingRate())
1076 .WillRepeatedly(Return(QuicBandwidth::Zero())); 1069 .WillRepeatedly(Return(QuicBandwidth::Zero()));
1077 EXPECT_CALL(*send_algorithm_, GetCongestionWindow()) 1070 EXPECT_CALL(*send_algorithm_, GetCongestionWindow())
1078 .WillOnce(Return(10 * kDefaultTCPMSS)); 1071 .WillOnce(Return(10 * kDefaultTCPMSS));
1079 manager_.SetFromConfig(client_config); 1072 manager_.SetFromConfig(client_config);
1080 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); 1073 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_));
1081 1074
1082 // Send 100 packets. 1075 // Send 100 packets.
1083 const size_t kNumSentPackets = 100; 1076 const size_t kNumSentPackets = 100;
(...skipping 11 matching lines...) Expand all
1095 EXPECT_FALSE(manager_.HasPendingRetransmissions()); 1088 EXPECT_FALSE(manager_.HasPendingRetransmissions());
1096 1089
1097 // Ack a retransmission and expect no call to OnRetransmissionTimeout. 1090 // Ack a retransmission and expect no call to OnRetransmissionTimeout.
1098 QuicAckFrame ack_frame = InitAckFrame(102); 1091 QuicAckFrame ack_frame = InitAckFrame(102);
1099 NackPackets(0, 102, &ack_frame); 1092 NackPackets(0, 102, &ack_frame);
1100 ack_frame.ack_delay_time = QuicTime::Delta::Zero(); 1093 ack_frame.ack_delay_time = QuicTime::Delta::Zero();
1101 // This will include packets in the lost packet map. 1094 // This will include packets in the lost packet map.
1102 EXPECT_CALL(*send_algorithm_, 1095 EXPECT_CALL(*send_algorithm_,
1103 OnCongestionEvent(true, _, ElementsAre(Pair(102, _)), 1096 OnCongestionEvent(true, _, ElementsAre(Pair(102, _)),
1104 /*lost_packets=*/Not(IsEmpty()))); 1097 /*lost_packets=*/Not(IsEmpty())));
1105 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1098 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1106 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1107 manager_.OnIncomingAck(ack_frame, clock_.Now()); 1099 manager_.OnIncomingAck(ack_frame, clock_.Now());
1108 } 1100 }
1109 1101
1110 TEST_P(QuicSentPacketManagerTest, TwoRetransmissionTimeoutsAckSecond) { 1102 TEST_P(QuicSentPacketManagerTest, TwoRetransmissionTimeoutsAckSecond) {
1111 // Send 1 packet. 1103 // Send 1 packet.
1112 SendDataPacket(1); 1104 SendDataPacket(1);
1113 1105
1114 manager_.OnRetransmissionTimeout(); 1106 manager_.OnRetransmissionTimeout();
1115 EXPECT_TRUE(manager_.HasPendingRetransmissions()); 1107 EXPECT_TRUE(manager_.HasPendingRetransmissions());
1116 EXPECT_EQ(kDefaultLength, 1108 EXPECT_EQ(kDefaultLength,
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
1385 1377
1386 TEST_P(QuicSentPacketManagerTest, NegotiateTimeLossDetectionFromOptions) { 1378 TEST_P(QuicSentPacketManagerTest, NegotiateTimeLossDetectionFromOptions) {
1387 EXPECT_EQ(kNack, QuicSentPacketManagerPeer::GetLossAlgorithm(&manager_) 1379 EXPECT_EQ(kNack, QuicSentPacketManagerPeer::GetLossAlgorithm(&manager_)
1388 ->GetLossDetectionType()); 1380 ->GetLossDetectionType());
1389 1381
1390 QuicConfig config; 1382 QuicConfig config;
1391 QuicTagVector options; 1383 QuicTagVector options;
1392 options.push_back(kTIME); 1384 options.push_back(kTIME);
1393 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1385 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1394 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1386 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1395 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1387 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1396 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1397 manager_.SetFromConfig(config); 1388 manager_.SetFromConfig(config);
1398 1389
1399 EXPECT_EQ(kTime, QuicSentPacketManagerPeer::GetLossAlgorithm(&manager_) 1390 EXPECT_EQ(kTime, QuicSentPacketManagerPeer::GetLossAlgorithm(&manager_)
1400 ->GetLossDetectionType()); 1391 ->GetLossDetectionType());
1401 } 1392 }
1402 1393
1403 TEST_P(QuicSentPacketManagerTest, NegotiateCongestionControlFromOptions) { 1394 TEST_P(QuicSentPacketManagerTest, NegotiateCongestionControlFromOptions) {
1404 FLAGS_quic_allow_bbr = true; 1395 FLAGS_quic_allow_bbr = true;
1405 QuicConfig config; 1396 QuicConfig config;
1406 QuicTagVector options; 1397 QuicTagVector options;
1407 1398
1408 options.push_back(kRENO); 1399 options.push_back(kRENO);
1409 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1400 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1410 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1401 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1411 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1412 manager_.SetFromConfig(config); 1402 manager_.SetFromConfig(config);
1413 EXPECT_EQ(kReno, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_) 1403 EXPECT_EQ(kReno, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
1414 ->GetCongestionControlType()); 1404 ->GetCongestionControlType());
1415 1405
1416 // TODO(rtenneti): Enable the following code after BBR code is checked in. 1406 // TODO(rtenneti): Enable the following code after BBR code is checked in.
1417 #if 0 1407 #if 0
1418 options.clear(); 1408 options.clear();
1419 options.push_back(kTBBR); 1409 options.push_back(kTBBR);
1420 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1410 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1421 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1411 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1422 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1423 manager_.SetFromConfig(config); 1412 manager_.SetFromConfig(config);
1424 EXPECT_EQ(kBBR, QuicSentPacketManagerPeer::GetSendAlgorithm( 1413 EXPECT_EQ(kBBR, QuicSentPacketManagerPeer::GetSendAlgorithm(
1425 manager_)->GetCongestionControlType()); 1414 manager_)->GetCongestionControlType());
1426 #endif 1415 #endif
1427 1416
1428 options.clear(); 1417 options.clear();
1429 options.push_back(kBYTE); 1418 options.push_back(kBYTE);
1430 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1419 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1431 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1420 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1432 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1433 manager_.SetFromConfig(config); 1421 manager_.SetFromConfig(config);
1434 EXPECT_EQ(kCubicBytes, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_) 1422 EXPECT_EQ(kCubicBytes, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
1435 ->GetCongestionControlType()); 1423 ->GetCongestionControlType());
1436 1424
1437 options.clear(); 1425 options.clear();
1438 options.push_back(kRENO); 1426 options.push_back(kRENO);
1439 options.push_back(kBYTE); 1427 options.push_back(kBYTE);
1440 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1428 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1441 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1429 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1442 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1443 manager_.SetFromConfig(config); 1430 manager_.SetFromConfig(config);
1444 EXPECT_EQ(kRenoBytes, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_) 1431 EXPECT_EQ(kRenoBytes, QuicSentPacketManagerPeer::GetSendAlgorithm(manager_)
1445 ->GetCongestionControlType()); 1432 ->GetCongestionControlType());
1446 } 1433 }
1447 1434
1448 TEST_P(QuicSentPacketManagerTest, NegotiateNumConnectionsFromOptions) { 1435 TEST_P(QuicSentPacketManagerTest, NegotiateNumConnectionsFromOptions) {
1449 QuicConfig config; 1436 QuicConfig config;
1450 QuicTagVector options; 1437 QuicTagVector options;
1451 1438
1452 options.push_back(k1CON); 1439 options.push_back(k1CON);
1453 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1440 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1454 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1441 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1455 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1456 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1)); 1442 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1));
1457 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1443 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1458 manager_.SetFromConfig(config); 1444 manager_.SetFromConfig(config);
1459 1445
1460 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); 1446 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT);
1461 QuicConfig client_config; 1447 QuicConfig client_config;
1462 client_config.SetConnectionOptionsToSend(options); 1448 client_config.SetConnectionOptionsToSend(options);
1463 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1449 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1464 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1465 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1)); 1450 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1));
1466 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1451 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1467 manager_.SetFromConfig(client_config); 1452 manager_.SetFromConfig(client_config);
1468 } 1453 }
1469 1454
1470 TEST_P(QuicSentPacketManagerTest, NegotiateNConnectionFromOptions) { 1455 TEST_P(QuicSentPacketManagerTest, NegotiateNConnectionFromOptions) {
1471 // By default, changing the number of open streams does nothing. 1456 // By default, changing the number of open streams does nothing.
1472 manager_.SetNumOpenStreams(5); 1457 manager_.SetNumOpenStreams(5);
1473 1458
1474 QuicConfig config; 1459 QuicConfig config;
1475 QuicTagVector options; 1460 QuicTagVector options;
1476 1461
1477 options.push_back(kNCON); 1462 options.push_back(kNCON);
1478 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1463 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1479 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1464 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1480 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1481 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1465 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1482 manager_.SetFromConfig(config); 1466 manager_.SetFromConfig(config);
1483 1467
1484 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(5)); 1468 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(5));
1485 manager_.SetNumOpenStreams(5); 1469 manager_.SetNumOpenStreams(5);
1486 } 1470 }
1487 1471
1488 TEST_P(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtServer) { 1472 TEST_P(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtServer) {
1489 QuicConfig config; 1473 QuicConfig config;
1490 QuicTagVector options; 1474 QuicTagVector options;
1491 1475
1492 options.push_back(kNTLP); 1476 options.push_back(kNTLP);
1493 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1477 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1494 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1478 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1495 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1496 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1479 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1497 manager_.SetFromConfig(config); 1480 manager_.SetFromConfig(config);
1498 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_)); 1481 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_));
1499 } 1482 }
1500 1483
1501 TEST_P(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtClient) { 1484 TEST_P(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtClient) {
1502 QuicConfig client_config; 1485 QuicConfig client_config;
1503 QuicTagVector options; 1486 QuicTagVector options;
1504 1487
1505 options.push_back(kNTLP); 1488 options.push_back(kNTLP);
1506 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); 1489 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT);
1507 client_config.SetConnectionOptionsToSend(options); 1490 client_config.SetConnectionOptionsToSend(options);
1508 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1491 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1509 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1510 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1492 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1511 manager_.SetFromConfig(client_config); 1493 manager_.SetFromConfig(client_config);
1512 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_)); 1494 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_));
1513 } 1495 }
1514 1496
1515 TEST_P(QuicSentPacketManagerTest, NegotiateTLPRttFromOptionsAtServer) { 1497 TEST_P(QuicSentPacketManagerTest, NegotiateTLPRttFromOptionsAtServer) {
1516 QuicConfig config; 1498 QuicConfig config;
1517 QuicTagVector options; 1499 QuicTagVector options;
1518 1500
1519 options.push_back(kTLPR); 1501 options.push_back(kTLPR);
1520 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1502 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1521 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1503 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1522 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1523 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1504 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1524 manager_.SetFromConfig(config); 1505 manager_.SetFromConfig(config);
1525 EXPECT_TRUE( 1506 EXPECT_TRUE(
1526 QuicSentPacketManagerPeer::GetEnableHalfRttTailLossProbe(&manager_)); 1507 QuicSentPacketManagerPeer::GetEnableHalfRttTailLossProbe(&manager_));
1527 } 1508 }
1528 1509
1529 TEST_P(QuicSentPacketManagerTest, NegotiateTLPRttFromOptionsAtClient) { 1510 TEST_P(QuicSentPacketManagerTest, NegotiateTLPRttFromOptionsAtClient) {
1530 QuicConfig client_config; 1511 QuicConfig client_config;
1531 QuicTagVector options; 1512 QuicTagVector options;
1532 1513
1533 options.push_back(kTLPR); 1514 options.push_back(kTLPR);
1534 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); 1515 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT);
1535 client_config.SetConnectionOptionsToSend(options); 1516 client_config.SetConnectionOptionsToSend(options);
1536 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1517 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1537 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1538 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1518 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1539 manager_.SetFromConfig(client_config); 1519 manager_.SetFromConfig(client_config);
1540 EXPECT_TRUE( 1520 EXPECT_TRUE(
1541 QuicSentPacketManagerPeer::GetEnableHalfRttTailLossProbe(&manager_)); 1521 QuicSentPacketManagerPeer::GetEnableHalfRttTailLossProbe(&manager_));
1542 } 1522 }
1543 1523
1544 TEST_P(QuicSentPacketManagerTest, NegotiateNewRTOFromOptionsAtServer) { 1524 TEST_P(QuicSentPacketManagerTest, NegotiateNewRTOFromOptionsAtServer) {
1545 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); 1525 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_));
1546 QuicConfig config; 1526 QuicConfig config;
1547 QuicTagVector options; 1527 QuicTagVector options;
1548 1528
1549 options.push_back(kNRTO); 1529 options.push_back(kNRTO);
1550 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1530 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1551 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1531 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1552 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1553 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1532 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1554 manager_.SetFromConfig(config); 1533 manager_.SetFromConfig(config);
1555 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); 1534 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_));
1556 } 1535 }
1557 1536
1558 TEST_P(QuicSentPacketManagerTest, NegotiateNewRTOFromOptionsAtClient) { 1537 TEST_P(QuicSentPacketManagerTest, NegotiateNewRTOFromOptionsAtClient) {
1559 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); 1538 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_));
1560 QuicConfig client_config; 1539 QuicConfig client_config;
1561 QuicTagVector options; 1540 QuicTagVector options;
1562 1541
1563 options.push_back(kNRTO); 1542 options.push_back(kNRTO);
1564 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); 1543 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT);
1565 client_config.SetConnectionOptionsToSend(options); 1544 client_config.SetConnectionOptionsToSend(options);
1566 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1545 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1567 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1568 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1546 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1569 manager_.SetFromConfig(client_config); 1547 manager_.SetFromConfig(client_config);
1570 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); 1548 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_));
1571 } 1549 }
1572 1550
1573 TEST_P(QuicSentPacketManagerTest, 1551 TEST_P(QuicSentPacketManagerTest,
1574 NegotiateConservativeReceiveWindowFromOptions) { 1552 NegotiateConservativeReceiveWindowFromOptions) {
1575 EXPECT_EQ(kDefaultSocketReceiveBuffer, 1553 EXPECT_EQ(kDefaultSocketReceiveBuffer,
1576 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); 1554 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_));
1577 1555
1578 // Try to set a size below the minimum and ensure it gets set to the min. 1556 // Try to set a size below the minimum and ensure it gets set to the min.
1579 QuicConfig client_config; 1557 QuicConfig client_config;
1580 QuicConfigPeer::SetReceivedSocketReceiveBuffer(&client_config, 1024); 1558 QuicConfigPeer::SetReceivedSocketReceiveBuffer(&client_config, 1024);
1581 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1559 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1582 EXPECT_CALL(*send_algorithm_, 1560 EXPECT_CALL(*send_algorithm_,
1583 SetMaxCongestionWindow(kMinSocketReceiveBuffer * 0.6)); 1561 SetMaxCongestionWindow(kMinSocketReceiveBuffer * 0.6));
1584 EXPECT_CALL(*send_algorithm_, PacingRate()) 1562 EXPECT_CALL(*send_algorithm_, PacingRate())
1585 .WillRepeatedly(Return(QuicBandwidth::Zero())); 1563 .WillRepeatedly(Return(QuicBandwidth::Zero()));
1586 EXPECT_CALL(*send_algorithm_, GetCongestionWindow()) 1564 EXPECT_CALL(*send_algorithm_, GetCongestionWindow())
1587 .WillOnce(Return(10 * kDefaultTCPMSS)); 1565 .WillOnce(Return(10 * kDefaultTCPMSS));
1588 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1566 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1589 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1590 manager_.SetFromConfig(client_config); 1567 manager_.SetFromConfig(client_config);
1591 1568
1592 EXPECT_EQ(kMinSocketReceiveBuffer, 1569 EXPECT_EQ(kMinSocketReceiveBuffer,
1593 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); 1570 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_));
1594 1571
1595 // Ensure the smaller send window only allows 16 packets to be sent. 1572 // Ensure the smaller send window only allows 16 packets to be sent.
1596 for (QuicPacketNumber i = 1; i <= 16; ++i) { 1573 for (QuicPacketNumber i = 1; i <= 16; ++i) {
1597 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) 1574 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _))
1598 .WillOnce(Return(QuicTime::Delta::Zero())); 1575 .WillOnce(Return(QuicTime::Delta::Zero()));
1599 EXPECT_EQ(QuicTime::Delta::Zero(), 1576 EXPECT_EQ(QuicTime::Delta::Zero(),
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1637 } 1614 }
1638 1615
1639 TEST_P(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) { 1616 TEST_P(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) {
1640 uint32_t initial_rtt_us = 325000; 1617 uint32_t initial_rtt_us = 325000;
1641 EXPECT_NE(initial_rtt_us, 1618 EXPECT_NE(initial_rtt_us,
1642 manager_.GetRttStats()->smoothed_rtt().ToMicroseconds()); 1619 manager_.GetRttStats()->smoothed_rtt().ToMicroseconds());
1643 1620
1644 QuicConfig config; 1621 QuicConfig config;
1645 config.SetInitialRoundTripTimeUsToSend(initial_rtt_us); 1622 config.SetInitialRoundTripTimeUsToSend(initial_rtt_us);
1646 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1623 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
1647 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1624 EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
1648 EXPECT_CALL(*network_change_visitor_, OnRttChange());
1649 manager_.SetFromConfig(config); 1625 manager_.SetFromConfig(config);
1650 1626
1651 EXPECT_EQ(0, manager_.GetRttStats()->smoothed_rtt().ToMicroseconds()); 1627 EXPECT_EQ(0, manager_.GetRttStats()->smoothed_rtt().ToMicroseconds());
1652 EXPECT_EQ(initial_rtt_us, manager_.GetRttStats()->initial_rtt_us()); 1628 EXPECT_EQ(initial_rtt_us, manager_.GetRttStats()->initial_rtt_us());
1653 } 1629 }
1654 1630
1655 TEST_P(QuicSentPacketManagerTest, ResumeConnectionState) { 1631 TEST_P(QuicSentPacketManagerTest, ResumeConnectionState) {
1656 // The sent packet manager should use the RTT from CachedNetworkParameters if 1632 // The sent packet manager should use the RTT from CachedNetworkParameters if
1657 // it is provided. 1633 // it is provided.
1658 const int kRttMs = 1234; 1634 const int kRttMs = 1234;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1716 manager_.OnConnectionMigration(PORT_CHANGE); 1692 manager_.OnConnectionMigration(PORT_CHANGE);
1717 1693
1718 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us()); 1694 EXPECT_EQ(2 * default_init_rtt, rtt_stats->initial_rtt_us());
1719 EXPECT_EQ(1u, manager_.consecutive_rto_count()); 1695 EXPECT_EQ(1u, manager_.consecutive_rto_count());
1720 EXPECT_EQ(2u, manager_.consecutive_tlp_count()); 1696 EXPECT_EQ(2u, manager_.consecutive_tlp_count());
1721 } 1697 }
1722 1698
1723 } // namespace 1699 } // namespace
1724 } // namespace test 1700 } // namespace test
1725 } // namespace net 1701 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/test_tools/quic_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698