Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1211)

Side by Side Diff: net/quic/core/congestion_control/bbr_sender_test.cc

Issue 2857243002: fix packet conservation to remove packets from recovery window when they are lost. Protected by FL… (Closed)
Patch Set: Updated patchset dependency Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/core/congestion_control/bbr_sender.cc ('k') | net/quic/core/quic_flags_list.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 /*connection_id=*/GetPeerInMemoryConnectionId(43)), 90 /*connection_id=*/GetPeerInMemoryConnectionId(43)),
91 receiver_multiplexer_("Receiver multiplexer", 91 receiver_multiplexer_("Receiver multiplexer",
92 {&receiver_, &competing_receiver_}) { 92 {&receiver_, &competing_receiver_}) {
93 // These will be changed by the appropriate tests as necessary. 93 // These will be changed by the appropriate tests as necessary.
94 FLAGS_quic_reloadable_flag_quic_bbr_keep_sending_at_recent_rate = false; 94 FLAGS_quic_reloadable_flag_quic_bbr_keep_sending_at_recent_rate = false;
95 FLAGS_quic_reloadable_flag_quic_bbr_slow_recent_delivery = false; 95 FLAGS_quic_reloadable_flag_quic_bbr_slow_recent_delivery = false;
96 FLAGS_quic_reloadable_flag_quic_bbr_add_tso_cwnd = false; 96 FLAGS_quic_reloadable_flag_quic_bbr_add_tso_cwnd = false;
97 // TODO(ianswett): Determine why tests become flaky with CWND based on SRTT. 97 // TODO(ianswett): Determine why tests become flaky with CWND based on SRTT.
98 FLAGS_quic_reloadable_flag_quic_bbr_base_cwnd_on_srtt = false; 98 FLAGS_quic_reloadable_flag_quic_bbr_base_cwnd_on_srtt = false;
99 FLAGS_quic_reloadable_flag_quic_bbr_extra_conservation = true; 99 FLAGS_quic_reloadable_flag_quic_bbr_extra_conservation = true;
100 FLAGS_quic_reloadable_flag_quic_bbr_fix_conservation = true; 100 FLAGS_quic_reloadable_flag_quic_bbr_fix_conservation2 = true;
101 rtt_stats_ = bbr_sender_.connection()->sent_packet_manager().GetRttStats(); 101 rtt_stats_ = bbr_sender_.connection()->sent_packet_manager().GetRttStats();
102 sender_ = SetupBbrSender(&bbr_sender_); 102 sender_ = SetupBbrSender(&bbr_sender_);
103 103
104 clock_ = simulator_.GetClock(); 104 clock_ = simulator_.GetClock();
105 simulator_.set_random_generator(&random_); 105 simulator_.set_random_generator(&random_);
106 106
107 uint64_t seed = QuicRandom::GetInstance()->RandUint64(); 107 uint64_t seed = QuicRandom::GetInstance()->RandUint64();
108 random_.set_seed(seed); 108 random_.set_seed(seed);
109 QUIC_LOG(INFO) << "BbrSenderTest simulator set up. Seed: " << seed; 109 QUIC_LOG(INFO) << "BbrSenderTest simulator set up. Seed: " << seed;
110 } 110 }
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 simulator_result = simulator_.RunUntilOrTimeout( 487 simulator_result = simulator_.RunUntilOrTimeout(
488 [this]() { 488 [this]() {
489 return sender_->ExportDebugState().recovery_state != 489 return sender_->ExportDebugState().recovery_state !=
490 BbrSender::NOT_IN_RECOVERY; 490 BbrSender::NOT_IN_RECOVERY;
491 }, 491 },
492 timeout); 492 timeout);
493 ASSERT_TRUE(simulator_result); 493 ASSERT_TRUE(simulator_result);
494 ASSERT_EQ(BbrSender::CONSERVATION, 494 ASSERT_EQ(BbrSender::CONSERVATION,
495 sender_->ExportDebugState().recovery_state); 495 sender_->ExportDebugState().recovery_state);
496 496
497 const QuicByteCount cwnd_at_recovery_start = sender_->GetCongestionWindow();
498 simulator_result = simulator_.RunUntilOrTimeout( 497 simulator_result = simulator_.RunUntilOrTimeout(
499 [this, cwnd_at_recovery_start]() { 498 [this]() {
500 // Ensure that the CWND never drops due to conservation.
501 if (sender_->GetCongestionWindow() < cwnd_at_recovery_start) {
502 return true;
503 }
504 return sender_->ExportDebugState().recovery_state != 499 return sender_->ExportDebugState().recovery_state !=
505 BbrSender::CONSERVATION; 500 BbrSender::CONSERVATION;
506 }, 501 },
507 timeout); 502 timeout);
508 ASSERT_GE(sender_->GetCongestionWindow(), cwnd_at_recovery_start);
509 ASSERT_TRUE(simulator_result); 503 ASSERT_TRUE(simulator_result);
510 ASSERT_EQ(BbrSender::GROWTH, sender_->ExportDebugState().recovery_state); 504 ASSERT_EQ(BbrSender::GROWTH, sender_->ExportDebugState().recovery_state);
511 505
512 simulator_result = simulator_.RunUntilOrTimeout( 506 simulator_result = simulator_.RunUntilOrTimeout(
513 [this]() { 507 [this]() {
514 return sender_->ExportDebugState().recovery_state != BbrSender::GROWTH; 508 return sender_->ExportDebugState().recovery_state != BbrSender::GROWTH;
515 }, 509 },
516 timeout); 510 timeout);
517 511
518 ASSERT_EQ(BbrSender::PROBE_BW, sender_->ExportDebugState().mode); 512 ASSERT_EQ(BbrSender::PROBE_BW, sender_->ExportDebugState().mode);
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 sender_->ResumeConnectionState(params, false); 812 sender_->ResumeConnectionState(params, false);
819 EXPECT_EQ(kTestLinkBandwidth, sender_->ExportDebugState().max_bandwidth); 813 EXPECT_EQ(kTestLinkBandwidth, sender_->ExportDebugState().max_bandwidth);
820 EXPECT_EQ(kTestLinkBandwidth, sender_->BandwidthEstimate()); 814 EXPECT_EQ(kTestLinkBandwidth, sender_->BandwidthEstimate());
821 ExpectApproxEq(kTestRtt, sender_->ExportDebugState().min_rtt, 0.01f); 815 ExpectApproxEq(kTestRtt, sender_->ExportDebugState().min_rtt, 0.01f);
822 816
823 DriveOutOfStartup(); 817 DriveOutOfStartup();
824 } 818 }
825 819
826 } // namespace test 820 } // namespace test
827 } // namespace net 821 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/congestion_control/bbr_sender.cc ('k') | net/quic/core/quic_flags_list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698