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 <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "net/quic/quic_flags.h" | 10 #include "net/quic/quic_flags.h" |
(...skipping 1604 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1615 | 1615 |
1616 options.push_back(kUNDO); | 1616 options.push_back(kUNDO); |
1617 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); | 1617 QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT); |
1618 client_config.SetConnectionOptionsToSend(options); | 1618 client_config.SetConnectionOptionsToSend(options); |
1619 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); | 1619 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); |
1620 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); | 1620 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); |
1621 manager_.SetFromConfig(client_config); | 1621 manager_.SetFromConfig(client_config); |
1622 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUndoRetransmits(&manager_)); | 1622 EXPECT_TRUE(QuicSentPacketManagerPeer::GetUndoRetransmits(&manager_)); |
1623 } | 1623 } |
1624 | 1624 |
1625 TEST_P(QuicSentPacketManagerTest, | |
1626 NegotiateConservativeReceiveWindowFromOptions) { | |
1627 ValueRestore<bool> old_flag(&FLAGS_quic_ignore_srbf, false); | |
1628 EXPECT_EQ(kDefaultSocketReceiveBuffer, | |
1629 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); | |
1630 | |
1631 // Try to set a size below the minimum and ensure it gets set to the min. | |
1632 QuicConfig client_config; | |
1633 QuicConfigPeer::SetReceivedSocketReceiveBuffer(&client_config, 1024); | |
1634 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); | |
1635 EXPECT_CALL(*send_algorithm_, | |
1636 SetMaxCongestionWindow(kMinSocketReceiveBuffer * 0.6)); | |
1637 EXPECT_CALL(*send_algorithm_, PacingRate(_)) | |
1638 .WillRepeatedly(Return(QuicBandwidth::Zero())); | |
1639 EXPECT_CALL(*send_algorithm_, GetCongestionWindow()) | |
1640 .WillOnce(Return(10 * kDefaultTCPMSS)); | |
1641 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); | |
1642 manager_.SetFromConfig(client_config); | |
1643 | |
1644 EXPECT_EQ(kMinSocketReceiveBuffer, | |
1645 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); | |
1646 | |
1647 // Ensure the smaller send window only allows 16 packets to be sent. | |
1648 QuicPathId path_id = kInvalidPathId; | |
1649 for (QuicPacketNumber i = 1; i <= 16; ++i) { | |
1650 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) | |
1651 .WillOnce(Return(QuicTime::Delta::Zero())); | |
1652 EXPECT_EQ(QuicTime::Delta::Zero(), | |
1653 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA, | |
1654 &path_id)); | |
1655 EXPECT_CALL(*send_algorithm_, | |
1656 OnPacketSent(_, BytesInFlight(), i, kDefaultLength, | |
1657 HAS_RETRANSMITTABLE_DATA)) | |
1658 .WillOnce(Return(true)); | |
1659 SerializedPacket packet(CreatePacket(i, true)); | |
1660 manager_.OnPacketSent(&packet, kInvalidPathId, 0, clock_.Now(), | |
1661 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); | |
1662 } | |
1663 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) | |
1664 .WillOnce(Return(QuicTime::Delta::Infinite())); | |
1665 EXPECT_EQ( | |
1666 QuicTime::Delta::Infinite(), | |
1667 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA, &path_id)); | |
1668 } | |
1669 | |
1670 TEST_P(QuicSentPacketManagerTest, ReceiveWindowLimited) { | |
1671 ValueRestore<bool> old_flag(&FLAGS_quic_ignore_srbf, false); | |
1672 EXPECT_EQ(kDefaultSocketReceiveBuffer, | |
1673 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); | |
1674 | |
1675 // Ensure the smaller send window only allows 256 * 0.95 packets to be sent. | |
1676 QuicPathId path_id = kInvalidPathId; | |
1677 for (QuicPacketNumber i = 1; i <= 244; ++i) { | |
1678 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) | |
1679 .WillOnce(Return(QuicTime::Delta::Zero())); | |
1680 EXPECT_EQ(QuicTime::Delta::Zero(), | |
1681 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA, | |
1682 &path_id)); | |
1683 EXPECT_CALL(*send_algorithm_, | |
1684 OnPacketSent(_, BytesInFlight(), i, kDefaultLength, | |
1685 HAS_RETRANSMITTABLE_DATA)) | |
1686 .WillOnce(Return(true)); | |
1687 SerializedPacket packet(CreatePacket(i, true)); | |
1688 manager_.OnPacketSent(&packet, kInvalidPathId, 0, clock_.Now(), | |
1689 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); | |
1690 } | |
1691 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _)) | |
1692 .WillOnce(Return(QuicTime::Delta::Infinite())); | |
1693 EXPECT_EQ( | |
1694 QuicTime::Delta::Infinite(), | |
1695 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA, &path_id)); | |
1696 } | |
1697 | |
1698 TEST_P(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) { | 1625 TEST_P(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) { |
1699 uint32_t initial_rtt_us = 325000; | 1626 uint32_t initial_rtt_us = 325000; |
1700 EXPECT_NE(initial_rtt_us, | 1627 EXPECT_NE(initial_rtt_us, |
1701 manager_.GetRttStats()->smoothed_rtt().ToMicroseconds()); | 1628 manager_.GetRttStats()->smoothed_rtt().ToMicroseconds()); |
1702 | 1629 |
1703 QuicConfig config; | 1630 QuicConfig config; |
1704 config.SetInitialRoundTripTimeUsToSend(initial_rtt_us); | 1631 config.SetInitialRoundTripTimeUsToSend(initial_rtt_us); |
1705 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); | 1632 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); |
1706 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); | 1633 EXPECT_CALL(*network_change_visitor_, OnCongestionChange()); |
1707 manager_.SetFromConfig(config); | 1634 manager_.SetFromConfig(config); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1792 ExpectAck(1); | 1719 ExpectAck(1); |
1793 EXPECT_CALL(*network_change_visitor_, | 1720 EXPECT_CALL(*network_change_visitor_, |
1794 OnPathMtuIncreased(kDefaultLength + 100)); | 1721 OnPathMtuIncreased(kDefaultLength + 100)); |
1795 QuicAckFrame ack_frame = InitAckFrame(1); | 1722 QuicAckFrame ack_frame = InitAckFrame(1); |
1796 manager_.OnIncomingAck(ack_frame, clock_.Now()); | 1723 manager_.OnIncomingAck(ack_frame, clock_.Now()); |
1797 } | 1724 } |
1798 | 1725 |
1799 } // namespace | 1726 } // namespace |
1800 } // namespace test | 1727 } // namespace test |
1801 } // namespace net | 1728 } // namespace net |
OLD | NEW |