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 1619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1630 } | 1630 } |
1631 | 1631 |
1632 TEST_F(QuicSentPacketManagerTest, NegotiateReceiveWindowFromOptions) { | 1632 TEST_F(QuicSentPacketManagerTest, NegotiateReceiveWindowFromOptions) { |
1633 EXPECT_EQ(kDefaultSocketReceiveBuffer, | 1633 EXPECT_EQ(kDefaultSocketReceiveBuffer, |
1634 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); | 1634 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); |
1635 | 1635 |
1636 // Try to set a size below the minimum and ensure it gets set to the min. | 1636 // Try to set a size below the minimum and ensure it gets set to the min. |
1637 QuicConfig client_config; | 1637 QuicConfig client_config; |
1638 QuicConfigPeer::SetReceivedSocketReceiveBuffer(&client_config, 1024); | 1638 QuicConfigPeer::SetReceivedSocketReceiveBuffer(&client_config, 1024); |
1639 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); | 1639 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _, _)); |
| 1640 if (FLAGS_quic_limit_max_cwnd_to_receive_buffer) { |
| 1641 EXPECT_CALL(*send_algorithm_, |
| 1642 SetMaxCongestionWindow(kMinSocketReceiveBuffer * 0.95)); |
| 1643 } |
1640 EXPECT_CALL(*send_algorithm_, PacingRate()) | 1644 EXPECT_CALL(*send_algorithm_, PacingRate()) |
1641 .WillRepeatedly(Return(QuicBandwidth::Zero())); | 1645 .WillRepeatedly(Return(QuicBandwidth::Zero())); |
1642 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); | 1646 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); |
1643 EXPECT_CALL(*network_change_visitor_, OnRttChange()); | 1647 EXPECT_CALL(*network_change_visitor_, OnRttChange()); |
1644 manager_.SetFromConfig(client_config); | 1648 manager_.SetFromConfig(client_config); |
1645 | 1649 |
1646 EXPECT_EQ(kMinSocketReceiveBuffer, | 1650 EXPECT_EQ(kMinSocketReceiveBuffer, |
1647 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); | 1651 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); |
1648 | 1652 |
1649 // Ensure the smaller send window only allows 16 packets to be sent. | 1653 // Ensure the smaller send window only allows 16 packets to be sent. |
1650 for (QuicPacketSequenceNumber i = 1; i <= 16; ++i) { | 1654 for (QuicPacketSequenceNumber i = 1; i <= 16; ++i) { |
1651 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return( | 1655 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return( |
1652 QuicTime::Delta::Zero())); | 1656 QuicTime::Delta::Zero())); |
1653 EXPECT_EQ(QuicTime::Delta::Zero(), | 1657 EXPECT_EQ(QuicTime::Delta::Zero(), |
1654 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); | 1658 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); |
1655 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, BytesInFlight(), i, | 1659 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, BytesInFlight(), i, |
1656 1024, HAS_RETRANSMITTABLE_DATA)) | 1660 1024, HAS_RETRANSMITTABLE_DATA)) |
1657 .WillOnce(Return(true)); | 1661 .WillOnce(Return(true)); |
1658 SerializedPacket packet(CreatePacket(i, true)); | 1662 SerializedPacket packet(CreatePacket(i, true)); |
1659 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024, | 1663 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024, |
1660 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); | 1664 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); |
1661 } | 1665 } |
| 1666 if (FLAGS_quic_limit_max_cwnd_to_receive_buffer) { |
| 1667 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)) |
| 1668 .WillOnce(Return(QuicTime::Delta::Infinite())); |
| 1669 } |
1662 EXPECT_EQ(QuicTime::Delta::Infinite(), | 1670 EXPECT_EQ(QuicTime::Delta::Infinite(), |
1663 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); | 1671 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); |
1664 } | 1672 } |
1665 | 1673 |
1666 TEST_F(QuicSentPacketManagerTest, ReceiveWindowLimited) { | 1674 TEST_F(QuicSentPacketManagerTest, ReceiveWindowLimited) { |
1667 EXPECT_EQ(kDefaultSocketReceiveBuffer, | 1675 EXPECT_EQ(kDefaultSocketReceiveBuffer, |
1668 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); | 1676 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); |
1669 | 1677 |
1670 // Ensure the smaller send window only allows 256 * 0.95 packets to be sent. | 1678 // Ensure the smaller send window only allows 256 * 0.95 packets to be sent. |
1671 for (QuicPacketSequenceNumber i = 1; i <= 244; ++i) { | 1679 for (QuicPacketSequenceNumber i = 1; i <= 244; ++i) { |
1672 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return( | 1680 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return( |
1673 QuicTime::Delta::Zero())); | 1681 QuicTime::Delta::Zero())); |
1674 EXPECT_EQ(QuicTime::Delta::Zero(), | 1682 EXPECT_EQ(QuicTime::Delta::Zero(), |
1675 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); | 1683 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); |
1676 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, BytesInFlight(), i, | 1684 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, BytesInFlight(), i, |
1677 1024, HAS_RETRANSMITTABLE_DATA)) | 1685 1024, HAS_RETRANSMITTABLE_DATA)) |
1678 .WillOnce(Return(true)); | 1686 .WillOnce(Return(true)); |
1679 SerializedPacket packet(CreatePacket(i, true)); | 1687 SerializedPacket packet(CreatePacket(i, true)); |
1680 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024, | 1688 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024, |
1681 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); | 1689 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); |
1682 } | 1690 } |
| 1691 if (FLAGS_quic_limit_max_cwnd_to_receive_buffer) { |
| 1692 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)) |
| 1693 .WillOnce(Return(QuicTime::Delta::Infinite())); |
| 1694 } |
1683 EXPECT_EQ(QuicTime::Delta::Infinite(), | 1695 EXPECT_EQ(QuicTime::Delta::Infinite(), |
1684 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); | 1696 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); |
1685 } | 1697 } |
1686 | 1698 |
1687 TEST_F(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) { | 1699 TEST_F(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) { |
1688 uint32 initial_rtt_us = 325000; | 1700 uint32 initial_rtt_us = 325000; |
1689 EXPECT_NE(initial_rtt_us, | 1701 EXPECT_NE(initial_rtt_us, |
1690 manager_.GetRttStats()->smoothed_rtt().ToMicroseconds()); | 1702 manager_.GetRttStats()->smoothed_rtt().ToMicroseconds()); |
1691 | 1703 |
1692 QuicConfig config; | 1704 QuicConfig config; |
(...skipping 16 matching lines...) Expand all Loading... |
1709 | 1721 |
1710 EXPECT_CALL(*send_algorithm_, ResumeConnectionState(_)); | 1722 EXPECT_CALL(*send_algorithm_, ResumeConnectionState(_)); |
1711 manager_.ResumeConnectionState(cached_network_params); | 1723 manager_.ResumeConnectionState(cached_network_params); |
1712 EXPECT_EQ(kRttMs * kNumMicrosPerMilli, | 1724 EXPECT_EQ(kRttMs * kNumMicrosPerMilli, |
1713 static_cast<uint64>(manager_.GetRttStats()->initial_rtt_us())); | 1725 static_cast<uint64>(manager_.GetRttStats()->initial_rtt_us())); |
1714 } | 1726 } |
1715 | 1727 |
1716 } // namespace | 1728 } // namespace |
1717 } // namespace test | 1729 } // namespace test |
1718 } // namespace net | 1730 } // namespace net |
OLD | NEW |