| OLD | NEW |
| 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 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 | 443 |
| 444 TEST_F(TcpCubicSenderTest, RTOCongestionWindowNoRetransmission) { | 444 TEST_F(TcpCubicSenderTest, RTOCongestionWindowNoRetransmission) { |
| 445 EXPECT_EQ(kDefaultWindowTCP, sender_->GetCongestionWindow()); | 445 EXPECT_EQ(kDefaultWindowTCP, sender_->GetCongestionWindow()); |
| 446 | 446 |
| 447 // Expect the window to remain unchanged if the RTO fires but no | 447 // Expect the window to remain unchanged if the RTO fires but no |
| 448 // packets are retransmitted. | 448 // packets are retransmitted. |
| 449 sender_->OnRetransmissionTimeout(false); | 449 sender_->OnRetransmissionTimeout(false); |
| 450 EXPECT_EQ(kDefaultWindowTCP, sender_->GetCongestionWindow()); | 450 EXPECT_EQ(kDefaultWindowTCP, sender_->GetCongestionWindow()); |
| 451 } | 451 } |
| 452 | 452 |
| 453 TEST_F(TcpCubicSenderTest, RTOTwiceOnlyHalvesSsthresh) { |
| 454 EXPECT_EQ(kDefaultWindowTCP, sender_->GetCongestionWindow()); |
| 455 |
| 456 sender_->OnRetransmissionTimeout(true); |
| 457 EXPECT_EQ(2 * kDefaultTCPMSS, sender_->GetCongestionWindow()); |
| 458 EXPECT_EQ(5u, sender_->slowstart_threshold()); |
| 459 |
| 460 sender_->OnRetransmissionTimeout(true); |
| 461 EXPECT_EQ(2 * kDefaultTCPMSS, sender_->GetCongestionWindow()); |
| 462 EXPECT_EQ(5u, sender_->slowstart_threshold()); |
| 463 |
| 464 AckNPackets(2); |
| 465 |
| 466 EXPECT_EQ(4 * kDefaultTCPMSS, sender_->GetCongestionWindow()); |
| 467 EXPECT_EQ(5u, sender_->slowstart_threshold()); |
| 468 |
| 469 sender_->OnRetransmissionTimeout(true); |
| 470 EXPECT_EQ(2 * kDefaultTCPMSS, sender_->GetCongestionWindow()); |
| 471 EXPECT_EQ(2u, sender_->slowstart_threshold()); |
| 472 } |
| 473 |
| 453 TEST_F(TcpCubicSenderTest, RetransmissionDelay) { | 474 TEST_F(TcpCubicSenderTest, RetransmissionDelay) { |
| 454 const int64 kRttMs = 10; | 475 const int64 kRttMs = 10; |
| 455 const int64 kDeviationMs = 3; | 476 const int64 kDeviationMs = 3; |
| 456 EXPECT_EQ(QuicTime::Delta::Zero(), sender_->RetransmissionDelay()); | 477 EXPECT_EQ(QuicTime::Delta::Zero(), sender_->RetransmissionDelay()); |
| 457 | 478 |
| 458 sender_->rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(kRttMs), | 479 sender_->rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(kRttMs), |
| 459 QuicTime::Delta::Zero(), clock_.Now()); | 480 QuicTime::Delta::Zero(), clock_.Now()); |
| 460 | 481 |
| 461 // Initial value is to set the median deviation to half of the initial | 482 // Initial value is to set the median deviation to half of the initial |
| 462 // rtt, the median in then multiplied by a factor of 4 and finally the | 483 // rtt, the median in then multiplied by a factor of 4 and finally the |
| (...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 735 | 756 |
| 736 cached_network_params.set_bandwidth_estimate_bytes_per_second( | 757 cached_network_params.set_bandwidth_estimate_bytes_per_second( |
| 737 (kMinCongestionWindowForBandwidthResumption - 1) * kMaxPacketSize); | 758 (kMinCongestionWindowForBandwidthResumption - 1) * kMaxPacketSize); |
| 738 EXPECT_TRUE(sender_->ResumeConnectionState(cached_network_params)); | 759 EXPECT_TRUE(sender_->ResumeConnectionState(cached_network_params)); |
| 739 EXPECT_EQ(kMinCongestionWindowForBandwidthResumption, | 760 EXPECT_EQ(kMinCongestionWindowForBandwidthResumption, |
| 740 sender_->congestion_window()); | 761 sender_->congestion_window()); |
| 741 } | 762 } |
| 742 | 763 |
| 743 } // namespace test | 764 } // namespace test |
| 744 } // namespace net | 765 } // namespace net |
| OLD | NEW |