| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/core/congestion_control/bbr_sender.h" | 5 #include "net/quic/core/congestion_control/bbr_sender.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 341 // The margin here is high, because the aggregation greatly increases | 341 // The margin here is high, because the aggregation greatly increases |
| 342 // smoothed rtt. | 342 // smoothed rtt. |
| 343 EXPECT_GE(kTestRtt * 4.5, rtt_stats_->smoothed_rtt()); | 343 EXPECT_GE(kTestRtt * 4.5, rtt_stats_->smoothed_rtt()); |
| 344 ExpectApproxEq(kTestRtt, rtt_stats_->min_rtt(), 0.1f); | 344 ExpectApproxEq(kTestRtt, rtt_stats_->min_rtt(), 0.1f); |
| 345 } | 345 } |
| 346 | 346 |
| 347 // Test a simple long data transfer with 2 rtts of aggregation. | 347 // Test a simple long data transfer with 2 rtts of aggregation. |
| 348 TEST_F(BbrSenderTest, SimpleTransferAckDecimation) { | 348 TEST_F(BbrSenderTest, SimpleTransferAckDecimation) { |
| 349 FLAGS_quic_reloadable_flag_quic_bbr_ack_aggregation_bytes = true; | 349 FLAGS_quic_reloadable_flag_quic_bbr_ack_aggregation_bytes = true; |
| 350 // Decrease the CWND gain so extra CWND is required with stretch acks. | 350 // Decrease the CWND gain so extra CWND is required with stretch acks. |
| 351 base::SetFlag(&FLAGS_quic_bbr_cwnd_gain, 1.0); | 351 SetQuicFlag(&FLAGS_quic_bbr_cwnd_gain, 1.0); |
| 352 sender_ = new BbrSender( | 352 sender_ = new BbrSender( |
| 353 rtt_stats_, | 353 rtt_stats_, |
| 354 QuicSentPacketManagerPeer::GetUnackedPacketMap( | 354 QuicSentPacketManagerPeer::GetUnackedPacketMap( |
| 355 QuicConnectionPeer::GetSentPacketManager(bbr_sender_.connection())), | 355 QuicConnectionPeer::GetSentPacketManager(bbr_sender_.connection())), |
| 356 kInitialCongestionWindowPackets, kDefaultMaxCongestionWindowPackets, | 356 kInitialCongestionWindowPackets, kDefaultMaxCongestionWindowPackets, |
| 357 &random_); | 357 &random_); |
| 358 QuicConnectionPeer::SetSendAlgorithm(bbr_sender_.connection(), sender_); | 358 QuicConnectionPeer::SetSendAlgorithm(bbr_sender_.connection(), sender_); |
| 359 // Enable Ack Decimation on the receiver. | 359 // Enable Ack Decimation on the receiver. |
| 360 QuicConnectionPeer::SetAckMode(receiver_.connection(), | 360 QuicConnectionPeer::SetAckMode(receiver_.connection(), |
| 361 QuicConnection::AckMode::ACK_DECIMATION); | 361 QuicConnection::AckMode::ACK_DECIMATION); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 378 // smoothed rtt. | 378 // smoothed rtt. |
| 379 EXPECT_GE(kTestRtt * 2, rtt_stats_->smoothed_rtt()); | 379 EXPECT_GE(kTestRtt * 2, rtt_stats_->smoothed_rtt()); |
| 380 ExpectApproxEq(kTestRtt, rtt_stats_->min_rtt(), 0.1f); | 380 ExpectApproxEq(kTestRtt, rtt_stats_->min_rtt(), 0.1f); |
| 381 } | 381 } |
| 382 | 382 |
| 383 TEST_F(BbrSenderTest, SimpleTransferAckDecimationKeepSending) { | 383 TEST_F(BbrSenderTest, SimpleTransferAckDecimationKeepSending) { |
| 384 FLAGS_quic_reloadable_flag_quic_bbr_ack_aggregation_bytes = false; | 384 FLAGS_quic_reloadable_flag_quic_bbr_ack_aggregation_bytes = false; |
| 385 FLAGS_quic_reloadable_flag_quic_bbr_add_tso_cwnd = true; | 385 FLAGS_quic_reloadable_flag_quic_bbr_add_tso_cwnd = true; |
| 386 FLAGS_quic_reloadable_flag_quic_bbr_keep_sending_at_recent_rate = true; | 386 FLAGS_quic_reloadable_flag_quic_bbr_keep_sending_at_recent_rate = true; |
| 387 // Decrease the CWND gain so extra CWND is required with stretch acks. | 387 // Decrease the CWND gain so extra CWND is required with stretch acks. |
| 388 base::SetFlag(&FLAGS_quic_bbr_cwnd_gain, 1.0); | 388 SetQuicFlag(&FLAGS_quic_bbr_cwnd_gain, 1.0); |
| 389 sender_ = new BbrSender( | 389 sender_ = new BbrSender( |
| 390 rtt_stats_, | 390 rtt_stats_, |
| 391 QuicSentPacketManagerPeer::GetUnackedPacketMap( | 391 QuicSentPacketManagerPeer::GetUnackedPacketMap( |
| 392 QuicConnectionPeer::GetSentPacketManager(bbr_sender_.connection())), | 392 QuicConnectionPeer::GetSentPacketManager(bbr_sender_.connection())), |
| 393 kInitialCongestionWindowPackets, kDefaultMaxCongestionWindowPackets, | 393 kInitialCongestionWindowPackets, kDefaultMaxCongestionWindowPackets, |
| 394 &random_); | 394 &random_); |
| 395 QuicConnectionPeer::SetSendAlgorithm(bbr_sender_.connection(), sender_); | 395 QuicConnectionPeer::SetSendAlgorithm(bbr_sender_.connection(), sender_); |
| 396 // Enable Ack Decimation on the receiver. | 396 // Enable Ack Decimation on the receiver. |
| 397 QuicConnectionPeer::SetAckMode(receiver_.connection(), | 397 QuicConnectionPeer::SetAckMode(receiver_.connection(), |
| 398 QuicConnection::AckMode::ACK_DECIMATION); | 398 QuicConnection::AckMode::ACK_DECIMATION); |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 761 sender_->ResumeConnectionState(params, false); | 761 sender_->ResumeConnectionState(params, false); |
| 762 EXPECT_EQ(kTestLinkBandwidth, sender_->ExportDebugState().max_bandwidth); | 762 EXPECT_EQ(kTestLinkBandwidth, sender_->ExportDebugState().max_bandwidth); |
| 763 EXPECT_EQ(kTestLinkBandwidth, sender_->BandwidthEstimate()); | 763 EXPECT_EQ(kTestLinkBandwidth, sender_->BandwidthEstimate()); |
| 764 ExpectApproxEq(kTestRtt, sender_->ExportDebugState().min_rtt, 0.01f); | 764 ExpectApproxEq(kTestRtt, sender_->ExportDebugState().min_rtt, 0.01f); |
| 765 | 765 |
| 766 DriveOutOfStartup(); | 766 DriveOutOfStartup(); |
| 767 } | 767 } |
| 768 | 768 |
| 769 } // namespace test | 769 } // namespace test |
| 770 } // namespace net | 770 } // namespace net |
| OLD | NEW |