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

Side by Side Diff: net/quic/congestion_control/tcp_cubic_bytes_sender_test.cc

Issue 1048493002: Remove the using_pacing argument from QuicSentPacketManager::SetFromConfig because it's always true. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 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/congestion_control/tcp_cubic_bytes_sender.h" 5 #include "net/quic/congestion_control/tcp_cubic_bytes_sender.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 AckNPackets(2); 179 AckNPackets(2);
180 } 180 }
181 const QuicByteCount cwnd = sender_->GetCongestionWindow(); 181 const QuicByteCount cwnd = sender_->GetCongestionWindow();
182 EXPECT_EQ(kDefaultWindowTCP + kDefaultTCPMSS * 2 * kNumberOfAcks, cwnd); 182 EXPECT_EQ(kDefaultWindowTCP + kDefaultTCPMSS * 2 * kNumberOfAcks, cwnd);
183 EXPECT_FALSE(sender_->HasReliableBandwidthEstimate()); 183 EXPECT_FALSE(sender_->HasReliableBandwidthEstimate());
184 EXPECT_EQ(QuicBandwidth::FromBytesAndTimeDelta( 184 EXPECT_EQ(QuicBandwidth::FromBytesAndTimeDelta(
185 cwnd, sender_->rtt_stats_.smoothed_rtt()), 185 cwnd, sender_->rtt_stats_.smoothed_rtt()),
186 sender_->BandwidthEstimate()); 186 sender_->BandwidthEstimate());
187 } 187 }
188 188
189 TEST_F(TcpCubicBytesSenderTest, SlowStartAckTrain) {
190 sender_->SetNumEmulatedConnections(1);
191
192 // Make sure that we fall out of slow start when we send ACK train longer
193 // than half the RTT, in this test case 30ms, which is more than 30 calls to
194 // Ack2Packets in one round.
195 // Since we start at 10 packet first round will be 5 second round 10 etc
196 // Hence we should pass 30 at 65 = 5 + 10 + 20 + 30.
197 const int kNumberOfAcks = 65;
198 for (int i = 0; i < kNumberOfAcks; ++i) {
199 // Send our full send window.
200 SendAvailableSendWindow();
201 AckNPackets(2);
202 }
203 QuicByteCount expected_send_window =
204 kDefaultWindowTCP + (kDefaultTCPMSS * 2 * kNumberOfAcks);
205 EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
206
207 // We should now have fallen out of slow start.
208 // Testing Reno phase.
209 // We should need 140(65*2+10) ACK:ed packets before increasing window by
210 // one.
211 for (int i = 0; i < 69; ++i) {
212 SendAvailableSendWindow();
213 AckNPackets(2);
214 EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
215 }
216 SendAvailableSendWindow();
217 AckNPackets(2);
218 QuicByteCount expected_ss_tresh = expected_send_window;
219 expected_send_window += kDefaultTCPMSS;
220 EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
221 EXPECT_EQ(expected_ss_tresh, sender_->GetSlowStartThreshold());
222
223 // Now RTO and ensure slow start gets reset.
224 EXPECT_TRUE(sender_->hybrid_slow_start().started());
225 sender_->OnRetransmissionTimeout(true);
226 EXPECT_FALSE(sender_->hybrid_slow_start().started());
227 EXPECT_EQ(2 * kDefaultTCPMSS, sender_->GetCongestionWindow());
228 EXPECT_EQ(expected_send_window / 2, sender_->GetSlowStartThreshold());
229 }
230
231 TEST_F(TcpCubicBytesSenderTest, SlowStartPacketLoss) { 189 TEST_F(TcpCubicBytesSenderTest, SlowStartPacketLoss) {
232 sender_->SetNumEmulatedConnections(1); 190 sender_->SetNumEmulatedConnections(1);
233 const int kNumberOfAcks = 10; 191 const int kNumberOfAcks = 10;
234 for (int i = 0; i < kNumberOfAcks; ++i) { 192 for (int i = 0; i < kNumberOfAcks; ++i) {
235 // Send our full send window. 193 // Send our full send window.
236 SendAvailableSendWindow(); 194 SendAvailableSendWindow();
237 AckNPackets(2); 195 AckNPackets(2);
238 } 196 }
239 SendAvailableSendWindow(); 197 SendAvailableSendWindow();
240 QuicByteCount expected_send_window = 198 QuicByteCount expected_send_window =
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 HAS_RETRANSMITTABLE_DATA)); 431 HAS_RETRANSMITTABLE_DATA));
474 } 432 }
475 433
476 TEST_F(TcpCubicBytesSenderTest, ConfigureMaxInitialWindow) { 434 TEST_F(TcpCubicBytesSenderTest, ConfigureMaxInitialWindow) {
477 QuicConfig config; 435 QuicConfig config;
478 436
479 // Verify that kCOPT: kIW10 forces the congestion window to the default of 10. 437 // Verify that kCOPT: kIW10 forces the congestion window to the default of 10.
480 QuicTagVector options; 438 QuicTagVector options;
481 options.push_back(kIW10); 439 options.push_back(kIW10);
482 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 440 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
483 sender_->SetFromConfig(config, Perspective::IS_SERVER, 441 sender_->SetFromConfig(config, Perspective::IS_SERVER);
484 /* using_pacing= */ false);
485 EXPECT_EQ(10u * kDefaultTCPMSS, sender_->GetCongestionWindow()); 442 EXPECT_EQ(10u * kDefaultTCPMSS, sender_->GetCongestionWindow());
486 } 443 }
487 444
488 TEST_F(TcpCubicBytesSenderTest, DisableAckTrainDetectionWithPacing) {
489 EXPECT_TRUE(sender_->hybrid_slow_start().ack_train_detection());
490
491 QuicConfig config;
492 sender_->SetFromConfig(config, Perspective::IS_SERVER,
493 /* using_pacing= */ true);
494 EXPECT_FALSE(sender_->hybrid_slow_start().ack_train_detection());
495 }
496
497 TEST_F(TcpCubicBytesSenderTest, 2ConnectionCongestionAvoidanceAtEndOfRecovery) { 445 TEST_F(TcpCubicBytesSenderTest, 2ConnectionCongestionAvoidanceAtEndOfRecovery) {
498 sender_->SetNumEmulatedConnections(2); 446 sender_->SetNumEmulatedConnections(2);
499 // Ack 10 packets in 5 acks to raise the CWND to 20. 447 // Ack 10 packets in 5 acks to raise the CWND to 20.
500 const int kNumberOfAcks = 5; 448 const int kNumberOfAcks = 5;
501 for (int i = 0; i < kNumberOfAcks; ++i) { 449 for (int i = 0; i < kNumberOfAcks; ++i) {
502 // Send our full send window. 450 // Send our full send window.
503 SendAvailableSendWindow(); 451 SendAvailableSendWindow();
504 AckNPackets(2); 452 AckNPackets(2);
505 } 453 }
506 SendAvailableSendWindow(); 454 SendAvailableSendWindow();
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 // Resume to the max value. 586 // Resume to the max value.
639 cached_network_params.set_max_bandwidth_estimate_bytes_per_second( 587 cached_network_params.set_max_bandwidth_estimate_bytes_per_second(
640 (kMinCongestionWindowForBandwidthResumption + 10) * kDefaultTCPMSS); 588 (kMinCongestionWindowForBandwidthResumption + 10) * kDefaultTCPMSS);
641 EXPECT_TRUE(sender_->ResumeConnectionState(cached_network_params, true)); 589 EXPECT_TRUE(sender_->ResumeConnectionState(cached_network_params, true));
642 EXPECT_EQ((kMinCongestionWindowForBandwidthResumption + 10) * kDefaultTCPMSS, 590 EXPECT_EQ((kMinCongestionWindowForBandwidthResumption + 10) * kDefaultTCPMSS,
643 sender_->GetCongestionWindow()); 591 sender_->GetCongestionWindow());
644 } 592 }
645 593
646 } // namespace test 594 } // namespace test
647 } // namespace net 595 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/congestion_control/tcp_cubic_bytes_sender.cc ('k') | net/quic/congestion_control/tcp_cubic_sender.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698