| 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 28 matching lines...) Expand all Loading... |
| 39 class MockDebugDelegate : public QuicSentPacketManager::DebugDelegate { | 39 class MockDebugDelegate : public QuicSentPacketManager::DebugDelegate { |
| 40 public: | 40 public: |
| 41 MOCK_METHOD2(OnSpuriousPacketRetransmission, | 41 MOCK_METHOD2(OnSpuriousPacketRetransmission, |
| 42 void(TransmissionType transmission_type, | 42 void(TransmissionType transmission_type, |
| 43 QuicByteCount byte_size)); | 43 QuicByteCount byte_size)); |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> { | 46 class QuicSentPacketManagerTest : public ::testing::TestWithParam<bool> { |
| 47 protected: | 47 protected: |
| 48 QuicSentPacketManagerTest() | 48 QuicSentPacketManagerTest() |
| 49 : manager_(true, &clock_, &stats_, kCubic, kNack, false), | 49 : manager_(Perspective::IS_SERVER, &clock_, &stats_, kCubic, kNack, true), |
| 50 send_algorithm_(new StrictMock<MockSendAlgorithm>), | 50 send_algorithm_(new StrictMock<MockSendAlgorithm>), |
| 51 network_change_visitor_(new StrictMock<MockNetworkChangeVisitor>) { | 51 network_change_visitor_(new StrictMock<MockNetworkChangeVisitor>) { |
| 52 QuicSentPacketManagerPeer::SetSendAlgorithm(&manager_, send_algorithm_); | 52 QuicSentPacketManagerPeer::SetSendAlgorithm(&manager_, send_algorithm_); |
| 53 // Disable tail loss probes for most tests. | 53 // Disable tail loss probes for most tests. |
| 54 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 0); | 54 QuicSentPacketManagerPeer::SetMaxTailLossProbes(&manager_, 0); |
| 55 // Advance the time 1s so the send times are never QuicTime::Zero. | 55 // Advance the time 1s so the send times are never QuicTime::Zero. |
| 56 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1000)); | 56 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(1000)); |
| 57 manager_.set_network_change_visitor(network_change_visitor_.get()); | 57 manager_.set_network_change_visitor(network_change_visitor_.get()); |
| 58 | 58 |
| 59 EXPECT_CALL(*send_algorithm_, HasReliableBandwidthEstimate()) | 59 EXPECT_CALL(*send_algorithm_, HasReliableBandwidthEstimate()) |
| (...skipping 1056 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1116 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); | 1116 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); |
| 1117 EXPECT_CALL(*network_change_visitor_, OnRttChange()); | 1117 EXPECT_CALL(*network_change_visitor_, OnRttChange()); |
| 1118 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); | 1118 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); |
| 1119 manager_.OnIncomingAck(ack_frame, clock_.Now()); | 1119 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
| 1120 } | 1120 } |
| 1121 | 1121 |
| 1122 TEST_F(QuicSentPacketManagerTest, NewRetransmissionTimeout) { | 1122 TEST_F(QuicSentPacketManagerTest, NewRetransmissionTimeout) { |
| 1123 QuicConfig client_config; | 1123 QuicConfig client_config; |
| 1124 QuicTagVector options; | 1124 QuicTagVector options; |
| 1125 options.push_back(kNRTO); | 1125 options.push_back(kNRTO); |
| 1126 QuicSentPacketManagerPeer::SetIsServer(&manager_, false); | 1126 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); |
| 1127 client_config.SetConnectionOptionsToSend(options); | 1127 client_config.SetConnectionOptionsToSend(options); |
| 1128 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); | 1128 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); |
| 1129 EXPECT_CALL(*network_change_visitor_, OnRttChange()); | 1129 EXPECT_CALL(*network_change_visitor_, OnRttChange()); |
| 1130 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); | 1130 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); |
| 1131 EXPECT_CALL(*send_algorithm_, PacingRate()) | 1131 EXPECT_CALL(*send_algorithm_, PacingRate()) |
| 1132 .WillRepeatedly(Return(QuicBandwidth::Zero())); | 1132 .WillRepeatedly(Return(QuicBandwidth::Zero())); |
| 1133 manager_.SetFromConfig(client_config); | 1133 manager_.SetFromConfig(client_config); |
| 1134 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); | 1134 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); |
| 1135 | 1135 |
| 1136 // Send 100 packets. | 1136 // Send 100 packets. |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1479 QuicTagVector options; | 1479 QuicTagVector options; |
| 1480 | 1480 |
| 1481 options.push_back(k1CON); | 1481 options.push_back(k1CON); |
| 1482 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); | 1482 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); |
| 1483 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); | 1483 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); |
| 1484 EXPECT_CALL(*network_change_visitor_, OnRttChange()); | 1484 EXPECT_CALL(*network_change_visitor_, OnRttChange()); |
| 1485 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1)); | 1485 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1)); |
| 1486 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); | 1486 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); |
| 1487 manager_.SetFromConfig(config); | 1487 manager_.SetFromConfig(config); |
| 1488 | 1488 |
| 1489 QuicSentPacketManagerPeer::SetIsServer(&manager_, false); | 1489 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); |
| 1490 QuicConfig client_config; | 1490 QuicConfig client_config; |
| 1491 client_config.SetConnectionOptionsToSend(options); | 1491 client_config.SetConnectionOptionsToSend(options); |
| 1492 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); | 1492 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); |
| 1493 EXPECT_CALL(*network_change_visitor_, OnRttChange()); | 1493 EXPECT_CALL(*network_change_visitor_, OnRttChange()); |
| 1494 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1)); | 1494 EXPECT_CALL(*send_algorithm_, SetNumEmulatedConnections(1)); |
| 1495 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); | 1495 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); |
| 1496 manager_.SetFromConfig(client_config); | 1496 manager_.SetFromConfig(client_config); |
| 1497 } | 1497 } |
| 1498 | 1498 |
| 1499 TEST_F(QuicSentPacketManagerTest, NegotiateNConnectionFromOptions) { | 1499 TEST_F(QuicSentPacketManagerTest, NegotiateNConnectionFromOptions) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1525 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); | 1525 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); |
| 1526 manager_.SetFromConfig(config); | 1526 manager_.SetFromConfig(config); |
| 1527 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_)); | 1527 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_)); |
| 1528 } | 1528 } |
| 1529 | 1529 |
| 1530 TEST_F(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtClient) { | 1530 TEST_F(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtClient) { |
| 1531 QuicConfig client_config; | 1531 QuicConfig client_config; |
| 1532 QuicTagVector options; | 1532 QuicTagVector options; |
| 1533 | 1533 |
| 1534 options.push_back(kNTLP); | 1534 options.push_back(kNTLP); |
| 1535 QuicSentPacketManagerPeer::SetIsServer(&manager_, false); | 1535 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); |
| 1536 client_config.SetConnectionOptionsToSend(options); | 1536 client_config.SetConnectionOptionsToSend(options); |
| 1537 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); | 1537 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); |
| 1538 EXPECT_CALL(*network_change_visitor_, OnRttChange()); | 1538 EXPECT_CALL(*network_change_visitor_, OnRttChange()); |
| 1539 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); | 1539 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); |
| 1540 manager_.SetFromConfig(client_config); | 1540 manager_.SetFromConfig(client_config); |
| 1541 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_)); | 1541 EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_)); |
| 1542 } | 1542 } |
| 1543 | 1543 |
| 1544 TEST_F(QuicSentPacketManagerTest, NegotiateNewRTOFromOptionsAtServer) { | 1544 TEST_F(QuicSentPacketManagerTest, NegotiateNewRTOFromOptionsAtServer) { |
| 1545 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); | 1545 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); |
| 1546 QuicConfig config; | 1546 QuicConfig config; |
| 1547 QuicTagVector options; | 1547 QuicTagVector options; |
| 1548 | 1548 |
| 1549 options.push_back(kNRTO); | 1549 options.push_back(kNRTO); |
| 1550 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); | 1550 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); |
| 1551 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); | 1551 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); |
| 1552 EXPECT_CALL(*network_change_visitor_, OnRttChange()); | 1552 EXPECT_CALL(*network_change_visitor_, OnRttChange()); |
| 1553 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); | 1553 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); |
| 1554 manager_.SetFromConfig(config); | 1554 manager_.SetFromConfig(config); |
| 1555 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); | 1555 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); |
| 1556 } | 1556 } |
| 1557 | 1557 |
| 1558 TEST_F(QuicSentPacketManagerTest, NegotiateNewRTOFromOptionsAtClient) { | 1558 TEST_F(QuicSentPacketManagerTest, NegotiateNewRTOFromOptionsAtClient) { |
| 1559 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); | 1559 EXPECT_FALSE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); |
| 1560 QuicConfig client_config; | 1560 QuicConfig client_config; |
| 1561 QuicTagVector options; | 1561 QuicTagVector options; |
| 1562 | 1562 |
| 1563 options.push_back(kNRTO); | 1563 options.push_back(kNRTO); |
| 1564 QuicSentPacketManagerPeer::SetIsServer(&manager_, false); | 1564 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); |
| 1565 client_config.SetConnectionOptionsToSend(options); | 1565 client_config.SetConnectionOptionsToSend(options); |
| 1566 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); | 1566 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); |
| 1567 EXPECT_CALL(*network_change_visitor_, OnRttChange()); | 1567 EXPECT_CALL(*network_change_visitor_, OnRttChange()); |
| 1568 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); | 1568 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); |
| 1569 manager_.SetFromConfig(client_config); | 1569 manager_.SetFromConfig(client_config); |
| 1570 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); | 1570 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUseNewRto(&manager_)); |
| 1571 } | 1571 } |
| 1572 | 1572 |
| 1573 TEST_F(QuicSentPacketManagerTest, NegotiatePacingFromOptions) { | 1573 TEST_F(QuicSentPacketManagerTest, NegotiatePacingFromOptions) { |
| 1574 EXPECT_FALSE(manager_.using_pacing()); | 1574 EXPECT_FALSE(manager_.using_pacing()); |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1680 | 1680 |
| 1681 EXPECT_CALL(*send_algorithm_, ResumeConnectionState(_)); | 1681 EXPECT_CALL(*send_algorithm_, ResumeConnectionState(_)); |
| 1682 manager_.ResumeConnectionState(cached_network_params); | 1682 manager_.ResumeConnectionState(cached_network_params); |
| 1683 EXPECT_EQ(kRttMs * kNumMicrosPerMilli, | 1683 EXPECT_EQ(kRttMs * kNumMicrosPerMilli, |
| 1684 static_cast<uint64>(manager_.GetRttStats()->initial_rtt_us())); | 1684 static_cast<uint64>(manager_.GetRttStats()->initial_rtt_us())); |
| 1685 } | 1685 } |
| 1686 | 1686 |
| 1687 } // namespace | 1687 } // namespace |
| 1688 } // namespace test | 1688 } // namespace test |
| 1689 } // namespace net | 1689 } // namespace net |
| OLD | NEW |