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

Side by Side Diff: net/quic/congestion_control/tcp_cubic_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
« no previous file with comments | « net/quic/congestion_control/tcp_cubic_sender.cc ('k') | net/quic/quic_connection_test.cc » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <algorithm> 5 #include <algorithm>
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "net/quic/congestion_control/rtt_stats.h" 9 #include "net/quic/congestion_control/rtt_stats.h"
10 #include "net/quic/congestion_control/tcp_cubic_sender.h" 10 #include "net/quic/congestion_control/tcp_cubic_sender.h"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 AckNPackets(2); 200 AckNPackets(2);
201 } 201 }
202 const QuicByteCount cwnd = sender_->GetCongestionWindow(); 202 const QuicByteCount cwnd = sender_->GetCongestionWindow();
203 EXPECT_EQ(kDefaultWindowTCP + kDefaultTCPMSS * 2 * kNumberOfAcks, cwnd); 203 EXPECT_EQ(kDefaultWindowTCP + kDefaultTCPMSS * 2 * kNumberOfAcks, cwnd);
204 EXPECT_FALSE(sender_->HasReliableBandwidthEstimate()); 204 EXPECT_FALSE(sender_->HasReliableBandwidthEstimate());
205 EXPECT_EQ(QuicBandwidth::FromBytesAndTimeDelta( 205 EXPECT_EQ(QuicBandwidth::FromBytesAndTimeDelta(
206 cwnd, sender_->rtt_stats_.smoothed_rtt()), 206 cwnd, sender_->rtt_stats_.smoothed_rtt()),
207 sender_->BandwidthEstimate()); 207 sender_->BandwidthEstimate());
208 } 208 }
209 209
210 TEST_F(TcpCubicSenderTest, SlowStartAckTrain) {
211 sender_->SetNumEmulatedConnections(1);
212 EXPECT_EQ(kMaxTcpCongestionWindow * kDefaultTCPMSS,
213 sender_->GetSlowStartThreshold());
214
215 // Make sure that we fall out of slow start when we send ACK train longer
216 // than half the RTT, in this test case 30ms, which is more than 30 calls to
217 // Ack2Packets in one round.
218 // Since we start at 10 packet first round will be 5 second round 10 etc
219 // Hence we should pass 30 at 65 = 5 + 10 + 20 + 30
220 const int kNumberOfAcks = 65;
221 for (int i = 0; i < kNumberOfAcks; ++i) {
222 // Send our full send window.
223 SendAvailableSendWindow();
224 AckNPackets(2);
225 }
226 QuicByteCount expected_send_window =
227 kDefaultWindowTCP + (kDefaultTCPMSS * 2 * kNumberOfAcks);
228 EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
229
230 // We should now have fallen out of slow start.
231 // Testing Reno phase.
232 // We should need 140(65*2+10) ACK:ed packets before increasing window by
233 // one.
234 for (int i = 0; i < 69; ++i) {
235 SendAvailableSendWindow();
236 AckNPackets(2);
237 EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
238 }
239 SendAvailableSendWindow();
240 AckNPackets(2);
241 QuicByteCount expected_ss_tresh = expected_send_window;
242 expected_send_window += kDefaultTCPMSS;
243 EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
244 EXPECT_EQ(expected_ss_tresh, sender_->GetSlowStartThreshold());
245 EXPECT_EQ(140u, sender_->slowstart_threshold());
246
247 // Now RTO and ensure slow start gets reset.
248 EXPECT_TRUE(sender_->hybrid_slow_start().started());
249 sender_->OnRetransmissionTimeout(true);
250 EXPECT_FALSE(sender_->hybrid_slow_start().started());
251 EXPECT_EQ(2 * kDefaultTCPMSS, sender_->GetCongestionWindow());
252 EXPECT_EQ(expected_send_window / 2 / kDefaultTCPMSS,
253 sender_->slowstart_threshold());
254 }
255
256 TEST_F(TcpCubicSenderTest, SlowStartPacketLoss) { 210 TEST_F(TcpCubicSenderTest, SlowStartPacketLoss) {
257 sender_->SetNumEmulatedConnections(1); 211 sender_->SetNumEmulatedConnections(1);
258 const int kNumberOfAcks = 10; 212 const int kNumberOfAcks = 10;
259 for (int i = 0; i < kNumberOfAcks; ++i) { 213 for (int i = 0; i < kNumberOfAcks; ++i) {
260 // Send our full send window. 214 // Send our full send window.
261 SendAvailableSendWindow(); 215 SendAvailableSendWindow();
262 AckNPackets(2); 216 AckNPackets(2);
263 } 217 }
264 SendAvailableSendWindow(); 218 SendAvailableSendWindow();
265 QuicByteCount expected_send_window = kDefaultWindowTCP + 219 QuicByteCount expected_send_window = kDefaultWindowTCP +
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 HAS_RETRANSMITTABLE_DATA)); 513 HAS_RETRANSMITTABLE_DATA));
560 } 514 }
561 515
562 TEST_F(TcpCubicSenderTest, ConfigureInitialWindow) { 516 TEST_F(TcpCubicSenderTest, ConfigureInitialWindow) {
563 QuicConfig config; 517 QuicConfig config;
564 518
565 // Verify that kCOPT: kIW10 forces the congestion window to the default of 10. 519 // Verify that kCOPT: kIW10 forces the congestion window to the default of 10.
566 QuicTagVector options; 520 QuicTagVector options;
567 options.push_back(kIW10); 521 options.push_back(kIW10);
568 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 522 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
569 sender_->SetFromConfig(config, Perspective::IS_SERVER, 523 sender_->SetFromConfig(config, Perspective::IS_SERVER);
570 /* using_pacing= */ false);
571 EXPECT_EQ(10u, sender_->congestion_window()); 524 EXPECT_EQ(10u, sender_->congestion_window());
572 } 525 }
573 526
574 TEST_F(TcpCubicSenderTest, ConfigureMinimumWindow) { 527 TEST_F(TcpCubicSenderTest, ConfigureMinimumWindow) {
575 QuicConfig config; 528 QuicConfig config;
576 529
577 // Verify that kCOPT: kMIN1 forces the min CWND to 1 packet. 530 // Verify that kCOPT: kMIN1 forces the min CWND to 1 packet.
578 QuicTagVector options; 531 QuicTagVector options;
579 options.push_back(kMIN1); 532 options.push_back(kMIN1);
580 QuicConfigPeer::SetReceivedConnectionOptions(&config, options); 533 QuicConfigPeer::SetReceivedConnectionOptions(&config, options);
581 sender_->SetFromConfig(config, Perspective::IS_SERVER, 534 sender_->SetFromConfig(config, Perspective::IS_SERVER);
582 /* using_pacing= */ false);
583 sender_->OnRetransmissionTimeout(true); 535 sender_->OnRetransmissionTimeout(true);
584 EXPECT_EQ(1u, sender_->congestion_window()); 536 EXPECT_EQ(1u, sender_->congestion_window());
585 } 537 }
586 538
587 TEST_F(TcpCubicSenderTest, DisableAckTrainDetectionWithPacing) {
588 EXPECT_TRUE(sender_->hybrid_slow_start().ack_train_detection());
589
590 QuicConfig config;
591 sender_->SetFromConfig(config, Perspective::IS_SERVER,
592 /* using_pacing= */ true);
593 EXPECT_FALSE(sender_->hybrid_slow_start().ack_train_detection());
594 }
595
596 TEST_F(TcpCubicSenderTest, 2ConnectionCongestionAvoidanceAtEndOfRecovery) { 539 TEST_F(TcpCubicSenderTest, 2ConnectionCongestionAvoidanceAtEndOfRecovery) {
597 sender_->SetNumEmulatedConnections(2); 540 sender_->SetNumEmulatedConnections(2);
598 // Ack 10 packets in 5 acks to raise the CWND to 20. 541 // Ack 10 packets in 5 acks to raise the CWND to 20.
599 const int kNumberOfAcks = 5; 542 const int kNumberOfAcks = 5;
600 for (int i = 0; i < kNumberOfAcks; ++i) { 543 for (int i = 0; i < kNumberOfAcks; ++i) {
601 // Send our full send window. 544 // Send our full send window.
602 SendAvailableSendWindow(); 545 SendAvailableSendWindow();
603 AckNPackets(2); 546 AckNPackets(2);
604 } 547 }
605 SendAvailableSendWindow(); 548 SendAvailableSendWindow();
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 // Resume to the max value. 679 // Resume to the max value.
737 cached_network_params.set_max_bandwidth_estimate_bytes_per_second( 680 cached_network_params.set_max_bandwidth_estimate_bytes_per_second(
738 (kMinCongestionWindowForBandwidthResumption + 10) * kDefaultTCPMSS); 681 (kMinCongestionWindowForBandwidthResumption + 10) * kDefaultTCPMSS);
739 EXPECT_TRUE(sender_->ResumeConnectionState(cached_network_params, true)); 682 EXPECT_TRUE(sender_->ResumeConnectionState(cached_network_params, true));
740 EXPECT_EQ((kMinCongestionWindowForBandwidthResumption + 10) * kDefaultTCPMSS, 683 EXPECT_EQ((kMinCongestionWindowForBandwidthResumption + 10) * kDefaultTCPMSS,
741 sender_->GetCongestionWindow()); 684 sender_->GetCongestionWindow());
742 } 685 }
743 686
744 } // namespace test 687 } // namespace test
745 } // namespace net 688 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/congestion_control/tcp_cubic_sender.cc ('k') | net/quic/quic_connection_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698