| 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 |