| Index: net/quic/quic_sent_packet_manager_test.cc
|
| diff --git a/net/quic/quic_sent_packet_manager_test.cc b/net/quic/quic_sent_packet_manager_test.cc
|
| index d3f031253ccd04a6b8c28afb08d12d03a9a19619..5eabf86a5a617883cc574e68515fc41d70e77eec 100644
|
| --- a/net/quic/quic_sent_packet_manager_test.cc
|
| +++ b/net/quic/quic_sent_packet_manager_test.cc
|
| @@ -1201,7 +1201,9 @@ TEST_F(QuicSentPacketManagerTest, GetTransmissionTimeRTO) {
|
|
|
| // Wait 2RTTs from now for the RTO, since it's the max of the RTO time
|
| // and the TLP time. In production, there would always be two TLP's first.
|
| - expected_time = clock_.Now().Add(QuicTime::Delta::FromMilliseconds(200));
|
| + // Since retransmission was spurious, smoothed_rtt_ is expired, and replaced
|
| + // by the latest RTT sample of 500ms.
|
| + expected_time = clock_.Now().Add(QuicTime::Delta::FromMilliseconds(1000));
|
| EXPECT_EQ(expected_time, manager_.GetRetransmissionTime());
|
| }
|
|
|
| @@ -1306,6 +1308,7 @@ TEST_F(QuicSentPacketManagerTest, NegotiateTimeLossDetectionFromOptions) {
|
| }
|
|
|
| TEST_F(QuicSentPacketManagerTest, NegotiateCongestionControlFromOptions) {
|
| + ValueRestore<bool> old_flag(&FLAGS_quic_allow_bbr, true);
|
| QuicConfig config;
|
| QuicTagVector options;
|
|
|
| @@ -1313,7 +1316,7 @@ TEST_F(QuicSentPacketManagerTest, NegotiateCongestionControlFromOptions) {
|
| QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
|
| EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange(_));
|
| manager_.SetFromConfig(config);
|
| - EXPECT_EQ(kReno, QuicSentPacketManagerPeer::GetCongestionControlAlgorithm(
|
| + EXPECT_EQ(kReno, QuicSentPacketManagerPeer::GetSendAlgorithm(
|
| manager_)->GetCongestionControlType());
|
|
|
| // TODO(rtenneti): Enable the following code after BBR code is checked in.
|
| @@ -1323,7 +1326,7 @@ TEST_F(QuicSentPacketManagerTest, NegotiateCongestionControlFromOptions) {
|
| QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
|
| EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange(_));
|
| manager_.SetFromConfig(config);
|
| - EXPECT_EQ(kBBR, QuicSentPacketManagerPeer::GetCongestionControlAlgorithm(
|
| + EXPECT_EQ(kBBR, QuicSentPacketManagerPeer::GetSendAlgorithm(
|
| manager_)->GetCongestionControlType());
|
| #endif
|
| }
|
| @@ -1352,6 +1355,35 @@ TEST_F(QuicSentPacketManagerTest, NegotiateNumConnectionsFromOptions) {
|
| manager_.SetFromConfig(client_config);
|
| }
|
|
|
| +TEST_F(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtServer) {
|
| + QuicConfig config;
|
| + QuicTagVector options;
|
| +
|
| + options.push_back(kNTLP);
|
| + QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
|
| + EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange(_));
|
| + EXPECT_CALL(*send_algorithm_, GetCongestionWindow())
|
| + .WillOnce(Return(100 * kDefaultTCPMSS));
|
| + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
|
| + manager_.SetFromConfig(config);
|
| + EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_));
|
| +}
|
| +
|
| +TEST_F(QuicSentPacketManagerTest, NegotiateNoTLPFromOptionsAtClient) {
|
| + QuicConfig client_config;
|
| + QuicTagVector options;
|
| +
|
| + options.push_back(kNTLP);
|
| + QuicSentPacketManagerPeer::SetIsServer(&manager_, false);
|
| + client_config.SetConnectionOptionsToSend(options);
|
| + EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange(_));
|
| + EXPECT_CALL(*send_algorithm_, GetCongestionWindow())
|
| + .WillOnce(Return(100 * kDefaultTCPMSS));
|
| + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
|
| + manager_.SetFromConfig(client_config);
|
| + EXPECT_EQ(0u, QuicSentPacketManagerPeer::GetMaxTailLossProbes(&manager_));
|
| +}
|
| +
|
| TEST_F(QuicSentPacketManagerTest, NegotiatePacingFromOptions) {
|
| EXPECT_FALSE(manager_.using_pacing());
|
|
|
| @@ -1368,6 +1400,39 @@ TEST_F(QuicSentPacketManagerTest, NegotiatePacingFromOptions) {
|
| EXPECT_TRUE(manager_.using_pacing());
|
| }
|
|
|
| +TEST_F(QuicSentPacketManagerTest, NegotiateReceiveWindowFromOptions) {
|
| + EXPECT_EQ(kDefaultSocketReceiveBuffer,
|
| + QuicSentPacketManagerPeer::GetReceiveWindow(&manager_));
|
| +
|
| + // Try to set a size below the minimum and ensure it gets set to the min.
|
| + QuicConfig client_config;
|
| + QuicConfigPeer::SetReceivedSocketReceiveBuffer(&client_config, 1024);
|
| + EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
|
| + EXPECT_CALL(*network_change_visitor_, OnCongestionWindowChange(_));
|
| + EXPECT_CALL(*send_algorithm_, GetCongestionWindow())
|
| + .WillOnce(Return(100 * kDefaultTCPMSS));
|
| + manager_.SetFromConfig(client_config);
|
| +
|
| + EXPECT_EQ(kMinSocketReceiveBuffer,
|
| + QuicSentPacketManagerPeer::GetReceiveWindow(&manager_));
|
| +
|
| + // Ensure the smaller send window only allows 16 packets to be sent.
|
| + for (QuicPacketSequenceNumber i = 1; i <= 16; ++i) {
|
| + EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _, _)).WillOnce(Return(
|
| + QuicTime::Delta::Zero()));
|
| + EXPECT_EQ(QuicTime::Delta::Zero(),
|
| + manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
|
| + EXPECT_CALL(*send_algorithm_, OnPacketSent(_, BytesInFlight(), i,
|
| + 1024, HAS_RETRANSMITTABLE_DATA))
|
| + .WillOnce(Return(true));
|
| + SerializedPacket packet(CreatePacket(i, true));
|
| + manager_.OnPacketSent(&packet, 0, clock_.Now(), 1024,
|
| + NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA);
|
| + }
|
| + EXPECT_EQ(QuicTime::Delta::Infinite(),
|
| + manager_.TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA));
|
| +}
|
| +
|
| TEST_F(QuicSentPacketManagerTest, UseInitialRoundTripTimeToSend) {
|
| uint32 initial_rtt_us = 325000;
|
| EXPECT_NE(initial_rtt_us,
|
|
|