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

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

Issue 530343003: Landing Recent QUIC Changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Final_0828
Patch Set: Created 6 years, 3 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.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 (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"
11 #include "net/quic/congestion_control/tcp_receiver.h" 11 #include "net/quic/congestion_control/tcp_receiver.h"
12 #include "net/quic/crypto/crypto_protocol.h" 12 #include "net/quic/crypto/crypto_protocol.h"
13 #include "net/quic/quic_utils.h" 13 #include "net/quic/quic_utils.h"
14 #include "net/quic/test_tools/mock_clock.h" 14 #include "net/quic/test_tools/mock_clock.h"
15 #include "net/quic/test_tools/quic_config_peer.h" 15 #include "net/quic/test_tools/quic_config_peer.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 using std::make_pair;
18 using std::min; 19 using std::min;
19 20
20 namespace net { 21 namespace net {
21 namespace test { 22 namespace test {
22 23
23 const uint32 kDefaultWindowTCP = 10 * kDefaultTCPMSS; 24 const uint32 kDefaultWindowTCP = 10 * kDefaultTCPMSS;
24 25
25 // TODO(ianswett): Remove 10000 once b/10075719 is fixed. 26 // TODO(ianswett): Remove 10000 once b/10075719 is fixed.
26 const QuicTcpCongestionWindow kDefaultMaxCongestionWindowTCP = 10000; 27 const QuicTcpCongestionWindow kDefaultMaxCongestionWindowTCP = 10000;
27 28
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 clock_.Now(), bytes_in_flight_, HAS_RETRANSMITTABLE_DATA).IsZero(); 80 clock_.Now(), bytes_in_flight_, HAS_RETRANSMITTABLE_DATA).IsZero();
80 } 81 }
81 return packets_sent; 82 return packets_sent;
82 } 83 }
83 84
84 // Normal is that TCP acks every other segment. 85 // Normal is that TCP acks every other segment.
85 void AckNPackets(int n) { 86 void AckNPackets(int n) {
86 sender_->rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(60), 87 sender_->rtt_stats_.UpdateRtt(QuicTime::Delta::FromMilliseconds(60),
87 QuicTime::Delta::Zero(), 88 QuicTime::Delta::Zero(),
88 clock_.Now()); 89 clock_.Now());
89 SendAlgorithmInterface::CongestionMap acked_packets; 90 SendAlgorithmInterface::CongestionVector acked_packets;
90 SendAlgorithmInterface::CongestionMap lost_packets; 91 SendAlgorithmInterface::CongestionVector lost_packets;
91 for (int i = 0; i < n; ++i) { 92 for (int i = 0; i < n; ++i) {
92 ++acked_sequence_number_; 93 ++acked_sequence_number_;
93 acked_packets[acked_sequence_number_] = standard_packet_; 94 acked_packets.push_back(
95 make_pair(acked_sequence_number_, standard_packet_));
94 } 96 }
95 sender_->OnCongestionEvent( 97 sender_->OnCongestionEvent(
96 true, bytes_in_flight_, acked_packets, lost_packets); 98 true, bytes_in_flight_, acked_packets, lost_packets);
97 bytes_in_flight_ -= n * kDefaultTCPMSS; 99 bytes_in_flight_ -= n * kDefaultTCPMSS;
98 clock_.AdvanceTime(one_ms_); 100 clock_.AdvanceTime(one_ms_);
99 } 101 }
100 102
101 void LoseNPackets(int n) { 103 void LoseNPackets(int n) {
102 SendAlgorithmInterface::CongestionMap acked_packets; 104 SendAlgorithmInterface::CongestionVector acked_packets;
103 SendAlgorithmInterface::CongestionMap lost_packets; 105 SendAlgorithmInterface::CongestionVector lost_packets;
104 for (int i = 0; i < n; ++i) { 106 for (int i = 0; i < n; ++i) {
105 ++acked_sequence_number_; 107 ++acked_sequence_number_;
106 lost_packets[acked_sequence_number_] = standard_packet_; 108 lost_packets.push_back(
109 make_pair(acked_sequence_number_, standard_packet_));
107 } 110 }
108 sender_->OnCongestionEvent( 111 sender_->OnCongestionEvent(
109 false, bytes_in_flight_, acked_packets, lost_packets); 112 false, bytes_in_flight_, acked_packets, lost_packets);
110 bytes_in_flight_ -= n * kDefaultTCPMSS; 113 bytes_in_flight_ -= n * kDefaultTCPMSS;
111 } 114 }
112 115
113 // Does not increment acked_sequence_number_. 116 // Does not increment acked_sequence_number_.
114 void LosePacket(QuicPacketSequenceNumber sequence_number) { 117 void LosePacket(QuicPacketSequenceNumber sequence_number) {
115 SendAlgorithmInterface::CongestionMap acked_packets; 118 SendAlgorithmInterface::CongestionVector acked_packets;
116 SendAlgorithmInterface::CongestionMap lost_packets; 119 SendAlgorithmInterface::CongestionVector lost_packets;
117 lost_packets[sequence_number] = standard_packet_; 120 lost_packets.push_back(
121 make_pair(sequence_number, standard_packet_));
118 sender_->OnCongestionEvent( 122 sender_->OnCongestionEvent(
119 false, bytes_in_flight_, acked_packets, lost_packets); 123 false, bytes_in_flight_, acked_packets, lost_packets);
120 bytes_in_flight_ -= kDefaultTCPMSS; 124 bytes_in_flight_ -= kDefaultTCPMSS;
121 } 125 }
122 126
123 const QuicTime::Delta one_ms_; 127 const QuicTime::Delta one_ms_;
124 MockClock clock_; 128 MockClock clock_;
125 scoped_ptr<TcpCubicSenderPeer> sender_; 129 scoped_ptr<TcpCubicSenderPeer> sender_;
126 scoped_ptr<TcpReceiver> receiver_; 130 scoped_ptr<TcpReceiver> receiver_;
127 QuicPacketSequenceNumber sequence_number_; 131 QuicPacketSequenceNumber sequence_number_;
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 } 615 }
612 616
613 // Next ack should cause congestion window to grow by 1MSS. 617 // Next ack should cause congestion window to grow by 1MSS.
614 AckNPackets(2); 618 AckNPackets(2);
615 expected_send_window += kDefaultTCPMSS; 619 expected_send_window += kDefaultTCPMSS;
616 EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow()); 620 EXPECT_EQ(expected_send_window, sender_->GetCongestionWindow());
617 } 621 }
618 622
619 } // namespace test 623 } // namespace test
620 } // namespace net 624 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/congestion_control/tcp_cubic_sender.cc ('k') | net/quic/quic_connection.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698