OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/quic/quic_sent_packet_manager.h" | 5 #include "net/quic/quic_sent_packet_manager.h" |
6 | 6 |
7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
8 #include "net/quic/quic_flags.h" | 8 #include "net/quic/quic_flags.h" |
9 #include "net/quic/test_tools/quic_config_peer.h" | 9 #include "net/quic/test_tools/quic_config_peer.h" |
10 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" | 10 #include "net/quic/test_tools/quic_sent_packet_manager_peer.h" |
(...skipping 27 matching lines...) Expand all Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |