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

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

Issue 734063004: Update from https://crrev.com/304418 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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_server_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 "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 27 matching lines...) Expand all
38 class MockDebugDelegate : public QuicSentPacketManager::DebugDelegate { 38 class MockDebugDelegate : public QuicSentPacketManager::DebugDelegate {
39 public: 39 public:
40 MOCK_METHOD2(OnSpuriousPacketRetransmition, 40 MOCK_METHOD2(OnSpuriousPacketRetransmition,
41 void(TransmissionType transmission_type, 41 void(TransmissionType transmission_type,
42 QuicByteCount byte_size)); 42 QuicByteCount byte_size));
43 }; 43 };
44 44
45 class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> { 45 class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> {
46 protected: 46 protected:
47 QuicSentPacketManagerTest() 47 QuicSentPacketManagerTest()
48 : manager_(true, &clock_, &stats_, kCubic, kNack), 48 : manager_(true, &clock_, &stats_, kCubic, kNack, false),
49 send_algorithm_(new StrictMock<MockSendAlgorithm>), 49 send_algorithm_(new StrictMock<MockSendAlgorithm>),
50 network_change_visitor_(new StrictMock<MockNetworkChangeVisitor>) { 50 network_change_visitor_(new StrictMock<MockNetworkChangeVisitor>) {
51 QuicSentPacketManagerPeer::SetSendAlgorithm(&manager_, send_algorithm_); 51 QuicSentPacketManagerPeer::SetSendAlgorithm(&manager_, send_algorithm_);
52 // Disable tail loss probes for most tests. 52 // Disable tail loss probes for most tests.
53 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 0); 53 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 0);
54 // Advance the time 1s so the send times are never QuicTime::Zero. 54 // Advance the time 1s so the send times are never QuicTime::Zero.
55 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1000)); 55 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1000));
56 manager_.set_network_change_visitor(network_change_visitor_.get()); 56 manager_.set_network_change_visitor(network_change_visitor_.get());
57 57
58 EXPECT_CALL(*send_algorithm_, HasReliableBandwidthEstimate()) 58 EXPECT_CALL(*send_algorithm_, HasReliableBandwidthEstimate())
(...skipping 1014 matching lines...) Expand 10 before | Expand all | Expand 10 after
1073 1073
1074 TEST_F(QuicSentPacketManagerTest, GetTransmissionTime) { 1074 TEST_F(QuicSentPacketManagerTest, GetTransmissionTime) {
1075 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime()); 1075 EXPECT_EQ(QuicTime::Zero(), manager_.GetRetransmissionTime());
1076 } 1076 }
1077 1077
1078 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeCryptoHandshake) { 1078 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeCryptoHandshake) {
1079 SendCryptoPacket(1); 1079 SendCryptoPacket(1);
1080 1080
1081 // Check the min. 1081 // Check the min.
1082 RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_); 1082 RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_);
1083 rtt_stats->set_initial_rtt_us(1 * base::Time::kMicrosecondsPerMillisecond); 1083 rtt_stats->set_initial_rtt_us(1 * kNumMicrosPerMilli);
1084 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), 1084 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)),
1085 manager_.GetRetransmissionTime()); 1085 manager_.GetRetransmissionTime());
1086 1086
1087 // Test with a standard smoothed RTT. 1087 // Test with a standard smoothed RTT.
1088 rtt_stats->set_initial_rtt_us(100 * base::Time::kMicrosecondsPerMillisecond); 1088 rtt_stats->set_initial_rtt_us(100 * kNumMicrosPerMilli);
1089 1089
1090 QuicTime::Delta srtt = 1090 QuicTime::Delta srtt =
1091 QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us()); 1091 QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us());
1092 QuicTime expected_time = clock_.Now().Add(srtt.Multiply(1.5)); 1092 QuicTime expected_time = clock_.Now().Add(srtt.Multiply(1.5));
1093 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); 1093 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1094 1094
1095 // Retransmit the packet by invoking the retransmission timeout. 1095 // Retransmit the packet by invoking the retransmission timeout.
1096 clock_.AdvanceTime(srtt.Multiply(1.5)); 1096 clock_.AdvanceTime(srtt.Multiply(1.5));
1097 manager_.OnRetransmissionTimeout(); 1097 manager_.OnRetransmissionTimeout();
1098 RetransmitNextPacket(2); 1098 RetransmitNextPacket(2);
1099 1099
1100 // The retransmission time should now be twice as far in the future. 1100 // The retransmission time should now be twice as far in the future.
1101 expected_time = clock_.Now().Add(srtt.Multiply(2).Multiply(1.5)); 1101 expected_time = clock_.Now().Add(srtt.Multiply(2).Multiply(1.5));
1102 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); 1102 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1103 } 1103 }
1104 1104
1105 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeTailLossProbe) { 1105 TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeTailLossProbe) {
1106 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2); 1106 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 2);
1107 SendDataPacket(1); 1107 SendDataPacket(1);
1108 SendDataPacket(2); 1108 SendDataPacket(2);
1109 1109
1110 // Check the min. 1110 // Check the min.
1111 RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_); 1111 RttStats* rtt_stats = QuicSentPacketManagerPeer::GetRttStats(&manager_);
1112 rtt_stats->set_initial_rtt_us(1 * base::Time::kMicrosecondsPerMillisecond); 1112 rtt_stats->set_initial_rtt_us(1 * kNumMicrosPerMilli);
1113 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)), 1113 EXPECT_EQ(clock_.Now().Add(QuicTime::Delta::FromMilliseconds(10)),
1114 manager_.GetRetransmissionTime()); 1114 manager_.GetRetransmissionTime());
1115 1115
1116 // Test with a standard smoothed RTT. 1116 // Test with a standard smoothed RTT.
1117 rtt_stats->set_initial_rtt_us(100 * base::Time::kMicrosecondsPerMillisecond); 1117 rtt_stats->set_initial_rtt_us(100 * kNumMicrosPerMilli);
1118 QuicTime::Delta srtt = 1118 QuicTime::Delta srtt =
1119 QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us()); 1119 QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us());
1120 QuicTime::Delta expected_tlp_delay = srtt.Multiply(2); 1120 QuicTime::Delta expected_tlp_delay = srtt.Multiply(2);
1121 QuicTime expected_time = clock_.Now().Add(expected_tlp_delay); 1121 QuicTime expected_time = clock_.Now().Add(expected_tlp_delay);
1122 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime()); 1122 EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
1123 1123
1124 // Retransmit the packet by invoking the retransmission timeout. 1124 // Retransmit the packet by invoking the retransmission timeout.
1125 clock_.AdvanceTime(expected_tlp_delay); 1125 clock_.AdvanceTime(expected_tlp_delay);
1126 manager_.OnRetransmissionTimeout(); 1126 manager_.OnRetransmissionTimeout();
1127 EXPECT_EQ(QuicTime::Delta::Zero(), 1127 EXPECT_EQ(QuicTime::Delta::Zero(),
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 1270
1271 TEST_F(QuicSentPacketManagerTest, NegotiateTimeLossDetectionFromOptions) { 1271 TEST_F(QuicSentPacketManagerTest, NegotiateTimeLossDetectionFromOptions) {
1272 EXPECT_EQ(kNack, 1272 EXPECT_EQ(kNack,
1273 QuicSentPacketManagerPeer::GetLossAlgorithm( 1273 QuicSentPacketManagerPeer::GetLossAlgorithm(
1274 &manager_)->GetLossDetectionType()); 1274 &manager_)->GetLossDetectionType());
1275 1275
1276 QuicConfig config; 1276 QuicConfig config;
1277 QuicTagVector options; 1277 QuicTagVector options;
1278 options.push_back(kTIME); 1278 options.push_back(kTIME);
1279 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1279 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1280 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1280 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _));
1281 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1281 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange());
1282 manager_.SetFromConfig(config); 1282 manager_.SetFromConfig(config);
1283 1283
1284 EXPECT_EQ(kTime, 1284 EXPECT_EQ(kTime,
1285 QuicSentPacketManagerPeer::GetLossAlgorithm( 1285 QuicSentPacketManagerPeer::GetLossAlgorithm(
1286 &manager_)->GetLossDetectionType()); 1286 &manager_)->GetLossDetectionType());
1287 } 1287 }
1288 1288
1289 TEST_F(QuicSentPacketManagerTest, NegotiateCongestionControlFromOptions) { 1289 TEST_F(QuicSentPacketManagerTest, NegotiateCongestionControlFromOptions) {
1290 ValueRestore<bool> old_flag(&FLAGS_quic_allow_bbr, true); 1290 ValueRestore<bool> old_flag(&FLAGS_quic_allow_bbr, true);
(...skipping 20 matching lines...) Expand all
1311 } 1311 }
1312 1312
1313 TEST_F(QuicSentPacketManagerTest, NegotiateNumConnectionsFromOptions) { 1313 TEST_F(QuicSentPacketManagerTest, NegotiateNumConnectionsFromOptions) {
1314 QuicConfig config; 1314 QuicConfig config;
1315 QuicTagVector options; 1315 QuicTagVector options;
1316 1316
1317 options.push_back(k1CON); 1317 options.push_back(k1CON);
1318 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1318 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1319 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1319 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange());
1320 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1)); 1320 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1));
1321 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1321 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _));
1322 manager_.SetFromConfig(config); 1322 manager_.SetFromConfig(config);
1323 1323
1324 QuicSentPacketManagerPeer::SetIsServer(&manager_, false); 1324 QuicSentPacketManagerPeer::SetIsServer(&manager_, false);
1325 QuicConfig client_config; 1325 QuicConfig client_config;
1326 client_config.SetConnectionOptionsToSend(options); 1326 client_config.SetConnectionOptionsToSend(options);
1327 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1327 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange());
1328 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1)); 1328 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1));
1329 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1329 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _));
1330 manager_.SetFromConfig(client_config); 1330 manager_.SetFromConfig(client_config);
1331 } 1331 }
1332 1332
1333 TEST_F(QuicSentPacketManagerTest, NegotiateNConnectionFromOptions) { 1333 TEST_F(QuicSentPacketManagerTest, NegotiateNConnectionFromOptions) {
1334 // By default, changing the number of open streams does nothing. 1334 // By default, changing the number of open streams does nothing.
1335 manager_.SetNumOpenStreams(5); 1335 manager_.SetNumOpenStreams(5);
1336 1336
1337 QuicConfig config; 1337 QuicConfig config;
1338 QuicTagVector options; 1338 QuicTagVector options;
1339 1339
1340 options.push_back(kNCON); 1340 options.push_back(kNCON);
1341 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1341 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1342 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1342 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange());
1343 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1343 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _));
1344 manager_.SetFromConfig(config); 1344 manager_.SetFromConfig(config);
1345 1345
1346 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(5)); 1346 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(5));
1347 manager_.SetNumOpenStreams(5); 1347 manager_.SetNumOpenStreams(5);
1348 } 1348 }
1349 1349
1350 TEST_F(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtServer) { 1350 TEST_F(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtServer) {
1351 QuicConfig config; 1351 QuicConfig config;
1352 QuicTagVector options; 1352 QuicTagVector options;
1353 1353
1354 options.push_back(kNTLP); 1354 options.push_back(kNTLP);
1355 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1355 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1356 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1356 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange());
1357 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1357 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _));
1358 manager_.SetFromConfig(config); 1358 manager_.SetFromConfig(config);
1359 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_)); 1359 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_));
1360 } 1360 }
1361 1361
1362 TEST_F(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtClient) { 1362 TEST_F(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtClient) {
1363 QuicConfig client_config; 1363 QuicConfig client_config;
1364 QuicTagVector options; 1364 QuicTagVector options;
1365 1365
1366 options.push_back(kNTLP); 1366 options.push_back(kNTLP);
1367 QuicSentPacketManagerPeer::SetIsServer(&manager_, false); 1367 QuicSentPacketManagerPeer::SetIsServer(&manager_, false);
1368 client_config.SetConnectionOptionsToSend(options); 1368 client_config.SetConnectionOptionsToSend(options);
1369 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1369 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange());
1370 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1370 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _));
1371 manager_.SetFromConfig(client_config); 1371 manager_.SetFromConfig(client_config);
1372 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_)); 1372 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_));
1373 } 1373 }
1374 1374
1375 TEST_F(QuicSentPacketManagerTest, NegotiatePacingFromOptions) { 1375 TEST_F(QuicSentPacketManagerTest, NegotiatePacingFromOptions) {
1376 EXPECT_FALSE(manager_.using_pacing()); 1376 EXPECT_FALSE(manager_.using_pacing());
1377 1377
1378 QuicConfig config; 1378 QuicConfig config;
1379 QuicTagVector options; 1379 QuicTagVector options;
1380 options.push_back(kPACE); 1380 options.push_back(kPACE);
1381 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 1381 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
1382 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1382 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange());
1383 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1383 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, /* using_pacing= */ true));
1384 manager_.SetFromConfig(config); 1384 manager_.SetFromConfig(config);
1385 1385
1386 EXPECT_TRUE(manager_.using_pacing()); 1386 EXPECT_TRUE(manager_.using_pacing());
1387 } 1387 }
1388 1388
1389 TEST_F(QuicSentPacketManagerTest, NegotiateReceiveWindowFromOptions) { 1389 TEST_F(QuicSentPacketManagerTest, NegotiateReceiveWindowFromOptions) {
1390 EXPECT_EQ(kDefaultSocketReceiveBuffer, 1390 EXPECT_EQ(kDefaultSocketReceiveBuffer,
1391 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); 1391 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_));
1392 1392
1393 // Try to set a size below the minimum and ensure it gets set to the min. 1393 // Try to set a size below the minimum and ensure it gets set to the min.
1394 QuicConfig client_config; 1394 QuicConfig client_config;
1395 QuicConfigPeer::SetReceivedSocketReceiveBuffer(&client_config, 1024); 1395 QuicConfigPeer::SetReceivedSocketReceiveBuffer(&client_config, 1024);
1396 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1396 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _));
1397 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1397 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange());
1398 manager_.SetFromConfig(client_config); 1398 manager_.SetFromConfig(client_config);
1399 1399
1400 EXPECT_EQ(kMinSocketReceiveBuffer, 1400 EXPECT_EQ(kMinSocketReceiveBuffer,
1401 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); 1401 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_));
1402 1402
1403 // Ensure the smaller send window only allows 16 packets to be sent. 1403 // Ensure the smaller send window only allows 16 packets to be sent.
1404 for (QuicPacketSequenceNumber i = 1; i <= 16; ++i) { 1404 for (QuicPacketSequenceNumber i = 1; i <= 16; ++i) {
1405 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return( 1405 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return(
1406 QuicTime::Delta::Zero())); 1406 QuicTime::Delta::Zero()));
1407 EXPECT_EQ(QuicTime::Delta::Zero(), 1407 EXPECT_EQ(QuicTime::Delta::Zero(),
1408 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); 1408 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
1409 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, BytesInFlight(), i, 1409 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, BytesInFlight(), i,
1410 1024, HAS_RETRANSMITTABLE_DATA)) 1410 1024, HAS_RETRANSMITTABLE_DATA))
1411 .WillOnce(Return(true)); 1411 .WillOnce(Return(true));
1412 SerializedPacket packet(CreatePacket(i, true)); 1412 SerializedPacket packet(CreatePacket(i, true));
1413 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024, 1413 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024,
1414 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); 1414 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
1415 } 1415 }
1416 EXPECT_EQ(QuicTime::Delta::Infinite(), 1416 EXPECT_EQ(QuicTime::Delta::Infinite(),
1417 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); 1417 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
1418 } 1418 }
1419 1419
1420 TEST_F(QuicSentPacketManagerTest, ReceiveWindowLimited) {
1421 EXPECT_EQ(kDefaultSocketReceiveBuffer,
1422 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_));
1423
1424 // Ensure the smaller send window only allows 256 * 0.95 packets to be sent.
1425 for (QuicPacketSequenceNumber i = 1; i <= 244; ++i) {
1426 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return(
1427 QuicTime::Delta::Zero()));
1428 EXPECT_EQ(QuicTime::Delta::Zero(),
1429 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
1430 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, BytesInFlight(), i,
1431 1024, HAS_RETRANSMITTABLE_DATA))
1432 .WillOnce(Return(true));
1433 SerializedPacket packet(CreatePacket(i, true));
1434 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024,
1435 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
1436 }
1437 EXPECT_EQ(QuicTime::Delta::Infinite(),
1438 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
1439 }
1440
1420 TEST_F(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) { 1441 TEST_F(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) {
1421 uint32 initial_rtt_us = 325000; 1442 uint32 initial_rtt_us = 325000;
1422 EXPECT_NE(initial_rtt_us, 1443 EXPECT_NE(initial_rtt_us,
1423 manager_.GetRttStats()->smoothed_rtt().ToMicroseconds()); 1444 manager_.GetRttStats()->smoothed_rtt().ToMicroseconds());
1424 1445
1425 QuicConfig config; 1446 QuicConfig config;
1426 config.SetInitialRoundTripTimeUsToSend(initial_rtt_us); 1447 config.SetInitialRoundTripTimeUsToSend(initial_rtt_us);
1427 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); 1448 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _));
1428 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); 1449 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange());
1429 manager_.SetFromConfig(config); 1450 manager_.SetFromConfig(config);
1430 1451
1431 EXPECT_EQ(0, manager_.GetRttStats()->smoothed_rtt().ToMicroseconds()); 1452 EXPECT_EQ(0, manager_.GetRttStats()->smoothed_rtt().ToMicroseconds());
1432 EXPECT_EQ(initial_rtt_us, manager_.GetRttStats()->initial_rtt_us()); 1453 EXPECT_EQ(initial_rtt_us, manager_.GetRttStats()->initial_rtt_us());
1433 } 1454 }
1434 1455
1435 } // namespace 1456 } // namespace
1436 } // namespace test 1457 } // namespace test
1437 } // namespace net 1458 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/quic_server_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698