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 1566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1577 } | 1577 } |
1578 | 1578 |
1579 TEST_F(QuicSentPacketManagerTest, NegotiateReceiveWindowFromOptions) { | 1579 TEST_F(QuicSentPacketManagerTest, NegotiateReceiveWindowFromOptions) { |
1580 EXPECT_EQ(kDefaultSocketReceiveBuffer, | 1580 EXPECT_EQ(kDefaultSocketReceiveBuffer, |
1581 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); | 1581 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); |
1582 | 1582 |
1583 // Try to set a size below the minimum and ensure it gets set to the min. | 1583 // Try to set a size below the minimum and ensure it gets set to the min. |
1584 QuicConfig client_config; | 1584 QuicConfig client_config; |
1585 QuicConfigPeer::SetReceivedSocketReceiveBuffer(&client_config, 1024); | 1585 QuicConfigPeer::SetReceivedSocketReceiveBuffer(&client_config, 1024); |
1586 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); | 1586 EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _)); |
1587 if (FLAGS_quic_limit_max_cwnd_to_receive_buffer) { | 1587 EXPECT_CALL(*send_algorithm_, |
1588 EXPECT_CALL(*send_algorithm_, | 1588 SetMaxCongestionWindow(kMinSocketReceiveBuffer * 0.95)); |
1589 SetMaxCongestionWindow(kMinSocketReceiveBuffer * 0.95)); | |
1590 } | |
1591 EXPECT_CALL(*send_algorithm_, PacingRate()) | 1589 EXPECT_CALL(*send_algorithm_, PacingRate()) |
1592 .WillRepeatedly(Return(QuicBandwidth::Zero())); | 1590 .WillRepeatedly(Return(QuicBandwidth::Zero())); |
1593 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); | 1591 EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange()); |
1594 EXPECT_CALL(*network_change_visitor_, OnRttChange()); | 1592 EXPECT_CALL(*network_change_visitor_, OnRttChange()); |
1595 manager_.SetFromConfig(client_config); | 1593 manager_.SetFromConfig(client_config); |
1596 | 1594 |
1597 EXPECT_EQ(kMinSocketReceiveBuffer, | 1595 EXPECT_EQ(kMinSocketReceiveBuffer, |
1598 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); | 1596 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); |
1599 | 1597 |
1600 // Ensure the smaller send window only allows 16 packets to be sent. | 1598 // Ensure the smaller send window only allows 16 packets to be sent. |
1601 for (QuicPacketSequenceNumber i = 1; i <= 16; ++i) { | 1599 for (QuicPacketSequenceNumber i = 1; i <= 16; ++i) { |
1602 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return( | 1600 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return( |
1603 QuicTime::Delta::Zero())); | 1601 QuicTime::Delta::Zero())); |
1604 EXPECT_EQ(QuicTime::Delta::Zero(), | 1602 EXPECT_EQ(QuicTime::Delta::Zero(), |
1605 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); | 1603 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); |
1606 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, BytesInFlight(), i, | 1604 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, BytesInFlight(), i, |
1607 1024, HAS_RETRANSMITTABLE_DATA)) | 1605 1024, HAS_RETRANSMITTABLE_DATA)) |
1608 .WillOnce(Return(true)); | 1606 .WillOnce(Return(true)); |
1609 SerializedPacket packet(CreatePacket(i, true)); | 1607 SerializedPacket packet(CreatePacket(i, true)); |
1610 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024, | 1608 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024, |
1611 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); | 1609 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); |
1612 } | 1610 } |
1613 if (FLAGS_quic_limit_max_cwnd_to_receive_buffer) { | 1611 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)) |
1614 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)) | 1612 .WillOnce(Return(QuicTime::Delta::Infinite())); |
1615 .WillOnce(Return(QuicTime::Delta::Infinite())); | |
1616 } | |
1617 EXPECT_EQ(QuicTime::Delta::Infinite(), | 1613 EXPECT_EQ(QuicTime::Delta::Infinite(), |
1618 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); | 1614 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); |
1619 } | 1615 } |
1620 | 1616 |
1621 TEST_F(QuicSentPacketManagerTest, ReceiveWindowLimited) { | 1617 TEST_F(QuicSentPacketManagerTest, ReceiveWindowLimited) { |
1622 EXPECT_EQ(kDefaultSocketReceiveBuffer, | 1618 EXPECT_EQ(kDefaultSocketReceiveBuffer, |
1623 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); | 1619 QuicSentPacketManagerPeer::GetReceiveWindow(&manager_)); |
1624 | 1620 |
1625 // Ensure the smaller send window only allows 256 * 0.95 packets to be sent. | 1621 // Ensure the smaller send window only allows 256 * 0.95 packets to be sent. |
1626 for (QuicPacketSequenceNumber i = 1; i <= 244; ++i) { | 1622 for (QuicPacketSequenceNumber i = 1; i <= 244; ++i) { |
1627 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return( | 1623 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return( |
1628 QuicTime::Delta::Zero())); | 1624 QuicTime::Delta::Zero())); |
1629 EXPECT_EQ(QuicTime::Delta::Zero(), | 1625 EXPECT_EQ(QuicTime::Delta::Zero(), |
1630 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); | 1626 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); |
1631 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, BytesInFlight(), i, | 1627 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, BytesInFlight(), i, |
1632 1024, HAS_RETRANSMITTABLE_DATA)) | 1628 1024, HAS_RETRANSMITTABLE_DATA)) |
1633 .WillOnce(Return(true)); | 1629 .WillOnce(Return(true)); |
1634 SerializedPacket packet(CreatePacket(i, true)); | 1630 SerializedPacket packet(CreatePacket(i, true)); |
1635 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024, | 1631 manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024, |
1636 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); | 1632 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); |
1637 } | 1633 } |
1638 if (FLAGS_quic_limit_max_cwnd_to_receive_buffer) { | 1634 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)) |
1639 EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)) | 1635 .WillOnce(Return(QuicTime::Delta::Infinite())); |
1640 .WillOnce(Return(QuicTime::Delta::Infinite())); | |
1641 } | |
1642 EXPECT_EQ(QuicTime::Delta::Infinite(), | 1636 EXPECT_EQ(QuicTime::Delta::Infinite(), |
1643 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); | 1637 manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA)); |
1644 } | 1638 } |
1645 | 1639 |
1646 TEST_F(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) { | 1640 TEST_F(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) { |
1647 uint32 initial_rtt_us = 325000; | 1641 uint32 initial_rtt_us = 325000; |
1648 EXPECT_NE(initial_rtt_us, | 1642 EXPECT_NE(initial_rtt_us, |
1649 manager_.GetRttStats()->smoothed_rtt().ToMicroseconds()); | 1643 manager_.GetRttStats()->smoothed_rtt().ToMicroseconds()); |
1650 | 1644 |
1651 QuicConfig config; | 1645 QuicConfig config; |
(...skipping 16 matching lines...) Expand all Loading... |
1668 | 1662 |
1669 EXPECT_CALL(*send_algorithm_, ResumeConnectionState(_, false)); | 1663 EXPECT_CALL(*send_algorithm_, ResumeConnectionState(_, false)); |
1670 manager_.ResumeConnectionState(cached_network_params, false); | 1664 manager_.ResumeConnectionState(cached_network_params, false); |
1671 EXPECT_EQ(kRttMs * kNumMicrosPerMilli, | 1665 EXPECT_EQ(kRttMs * kNumMicrosPerMilli, |
1672 static_cast<uint64>(manager_.GetRttStats()->initial_rtt_us())); | 1666 static_cast<uint64>(manager_.GetRttStats()->initial_rtt_us())); |
1673 } | 1667 } |
1674 | 1668 |
1675 } // namespace | 1669 } // namespace |
1676 } // namespace test | 1670 } // namespace test |
1677 } // namespace net | 1671 } // namespace net |
OLD | NEW |