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

Side by Side Diff: net/quic/quic_config_test.cc

Issue 341083007: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Compile fix Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_config.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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/quic_config.h" 5 #include "net/quic/quic_config.h"
6 6
7 #include "net/quic/crypto/crypto_handshake_message.h" 7 #include "net/quic/crypto/crypto_handshake_message.h"
8 #include "net/quic/crypto/crypto_protocol.h" 8 #include "net/quic/crypto/crypto_protocol.h"
9 #include "net/quic/quic_flags.h" 9 #include "net/quic/quic_flags.h"
10 #include "net/quic/quic_protocol.h" 10 #include "net/quic/quic_protocol.h"
(...skipping 15 matching lines...) Expand all
26 QuicConfigTest() { 26 QuicConfigTest() {
27 config_.SetDefaults(); 27 config_.SetDefaults();
28 } 28 }
29 29
30 QuicConfig config_; 30 QuicConfig config_;
31 }; 31 };
32 32
33 TEST_F(QuicConfigTest, ToHandshakeMessage) { 33 TEST_F(QuicConfigTest, ToHandshakeMessage) {
34 ValueRestore<bool> old_flag(&FLAGS_enable_quic_pacing, false); 34 ValueRestore<bool> old_flag(&FLAGS_enable_quic_pacing, false);
35 config_.SetDefaults(); 35 config_.SetDefaults();
36 config_.SetInitialFlowControlWindowToSend(kInitialFlowControlWindowForTest); 36 config_.SetInitialFlowControlWindowToSend(
37 kInitialSessionFlowControlWindowForTest);
38 config_.SetInitialStreamFlowControlWindowToSend(
39 kInitialStreamFlowControlWindowForTest);
40 config_.SetInitialSessionFlowControlWindowToSend(
41 kInitialSessionFlowControlWindowForTest);
37 config_.set_idle_connection_state_lifetime(QuicTime::Delta::FromSeconds(5), 42 config_.set_idle_connection_state_lifetime(QuicTime::Delta::FromSeconds(5),
38 QuicTime::Delta::FromSeconds(2)); 43 QuicTime::Delta::FromSeconds(2));
39 config_.set_max_streams_per_connection(4, 2); 44 config_.set_max_streams_per_connection(4, 2);
40 CryptoHandshakeMessage msg; 45 CryptoHandshakeMessage msg;
41 config_.ToHandshakeMessage(&msg); 46 config_.ToHandshakeMessage(&msg);
42 47
43 uint32 value; 48 uint32 value;
44 QuicErrorCode error = msg.GetUint32(kICSL, &value); 49 QuicErrorCode error = msg.GetUint32(kICSL, &value);
45 EXPECT_EQ(QUIC_NO_ERROR, error); 50 EXPECT_EQ(QUIC_NO_ERROR, error);
46 EXPECT_EQ(5u, value); 51 EXPECT_EQ(5u, value);
47 52
48 error = msg.GetUint32(kMSPC, &value); 53 error = msg.GetUint32(kMSPC, &value);
49 EXPECT_EQ(QUIC_NO_ERROR, error); 54 EXPECT_EQ(QUIC_NO_ERROR, error);
50 EXPECT_EQ(4u, value); 55 EXPECT_EQ(4u, value);
51 56
52 error = msg.GetUint32(kIFCW, &value); 57 error = msg.GetUint32(kIFCW, &value);
53 EXPECT_EQ(QUIC_NO_ERROR, error); 58 EXPECT_EQ(QUIC_NO_ERROR, error);
54 EXPECT_EQ(kInitialFlowControlWindowForTest, value); 59 EXPECT_EQ(kInitialSessionFlowControlWindowForTest, value);
60
61 error = msg.GetUint32(kSFCW, &value);
62 EXPECT_EQ(QUIC_NO_ERROR, error);
63 EXPECT_EQ(kInitialStreamFlowControlWindowForTest, value);
64
65 error = msg.GetUint32(kCFCW, &value);
66 EXPECT_EQ(QUIC_NO_ERROR, error);
67 EXPECT_EQ(kInitialSessionFlowControlWindowForTest, value);
55 68
56 const QuicTag* out; 69 const QuicTag* out;
57 size_t out_len; 70 size_t out_len;
58 error = msg.GetTaglist(kCGST, &out, &out_len); 71 error = msg.GetTaglist(kCGST, &out, &out_len);
59 EXPECT_EQ(1u, out_len); 72 EXPECT_EQ(1u, out_len);
60 EXPECT_EQ(kQBIC, *out); 73 EXPECT_EQ(kQBIC, *out);
61 } 74 }
62 75
63 TEST_F(QuicConfigTest, ToHandshakeMessageWithPacing) { 76 TEST_F(QuicConfigTest, ToHandshakeMessageWithPacing) {
64 ValueRestore<bool> old_flag(&FLAGS_enable_quic_pacing, true); 77 ValueRestore<bool> old_flag(&FLAGS_enable_quic_pacing, true);
(...skipping 17 matching lines...) Expand all
82 cgst.push_back(kQBIC); 95 cgst.push_back(kQBIC);
83 client_config.set_congestion_feedback(cgst, kQBIC); 96 client_config.set_congestion_feedback(cgst, kQBIC);
84 client_config.set_idle_connection_state_lifetime( 97 client_config.set_idle_connection_state_lifetime(
85 QuicTime::Delta::FromSeconds(2 * kDefaultTimeoutSecs), 98 QuicTime::Delta::FromSeconds(2 * kDefaultTimeoutSecs),
86 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs)); 99 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs));
87 client_config.set_max_streams_per_connection( 100 client_config.set_max_streams_per_connection(
88 2 * kDefaultMaxStreamsPerConnection, kDefaultMaxStreamsPerConnection); 101 2 * kDefaultMaxStreamsPerConnection, kDefaultMaxStreamsPerConnection);
89 client_config.SetInitialRoundTripTimeUsToSend( 102 client_config.SetInitialRoundTripTimeUsToSend(
90 10 * base::Time::kMicrosecondsPerMillisecond); 103 10 * base::Time::kMicrosecondsPerMillisecond);
91 client_config.SetInitialFlowControlWindowToSend( 104 client_config.SetInitialFlowControlWindowToSend(
92 2 * kInitialFlowControlWindowForTest); 105 2 * kInitialSessionFlowControlWindowForTest);
106 client_config.SetInitialStreamFlowControlWindowToSend(
107 2 * kInitialStreamFlowControlWindowForTest);
108 client_config.SetInitialSessionFlowControlWindowToSend(
109 2 * kInitialSessionFlowControlWindowForTest);
93 QuicTagVector copt; 110 QuicTagVector copt;
94 copt.push_back(kTBBR); 111 copt.push_back(kTBBR);
95 client_config.SetCongestionOptionsToSend(copt); 112 client_config.SetCongestionOptionsToSend(copt);
96 CryptoHandshakeMessage msg; 113 CryptoHandshakeMessage msg;
97 client_config.ToHandshakeMessage(&msg); 114 client_config.ToHandshakeMessage(&msg);
98 string error_details; 115 string error_details;
99 const QuicErrorCode error = 116 const QuicErrorCode error =
100 config_.ProcessPeerHello(msg, CLIENT, &error_details); 117 config_.ProcessPeerHello(msg, CLIENT, &error_details);
101 EXPECT_EQ(QUIC_NO_ERROR, error); 118 EXPECT_EQ(QUIC_NO_ERROR, error);
102 EXPECT_TRUE(config_.negotiated()); 119 EXPECT_TRUE(config_.negotiated());
103 EXPECT_EQ(kQBIC, config_.congestion_feedback()); 120 EXPECT_EQ(kQBIC, config_.congestion_feedback());
104 EXPECT_EQ(QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs), 121 EXPECT_EQ(QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs),
105 config_.idle_connection_state_lifetime()); 122 config_.idle_connection_state_lifetime());
106 EXPECT_EQ(kDefaultMaxStreamsPerConnection, 123 EXPECT_EQ(kDefaultMaxStreamsPerConnection,
107 config_.max_streams_per_connection()); 124 config_.max_streams_per_connection());
108 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.keepalive_timeout()); 125 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.keepalive_timeout());
109 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, 126 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond,
110 config_.ReceivedInitialRoundTripTimeUs()); 127 config_.ReceivedInitialRoundTripTimeUs());
111 EXPECT_FALSE(config_.HasReceivedLossDetection()); 128 EXPECT_FALSE(config_.HasReceivedLossDetection());
112 EXPECT_TRUE(config_.HasReceivedCongestionOptions()); 129 EXPECT_TRUE(config_.HasReceivedCongestionOptions());
113 EXPECT_EQ(1u, config_.ReceivedCongestionOptions().size()); 130 EXPECT_EQ(1u, config_.ReceivedCongestionOptions().size());
114 EXPECT_EQ(config_.ReceivedCongestionOptions()[0], kTBBR); 131 EXPECT_EQ(config_.ReceivedCongestionOptions()[0], kTBBR);
115 EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(), 132 EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(),
116 2 * kInitialFlowControlWindowForTest); 133 2 * kInitialSessionFlowControlWindowForTest);
134 EXPECT_EQ(config_.ReceivedInitialStreamFlowControlWindowBytes(),
135 2 * kInitialStreamFlowControlWindowForTest);
136 EXPECT_EQ(config_.ReceivedInitialSessionFlowControlWindowBytes(),
137 2 * kInitialSessionFlowControlWindowForTest);
117 } 138 }
118 139
119 TEST_F(QuicConfigTest, ProcessServerHello) { 140 TEST_F(QuicConfigTest, ProcessServerHello) {
120 QuicConfig server_config; 141 QuicConfig server_config;
121 QuicTagVector cgst; 142 QuicTagVector cgst;
122 cgst.push_back(kQBIC); 143 cgst.push_back(kQBIC);
123 server_config.set_congestion_feedback(cgst, kQBIC); 144 server_config.set_congestion_feedback(cgst, kQBIC);
124 server_config.set_idle_connection_state_lifetime( 145 server_config.set_idle_connection_state_lifetime(
125 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2), 146 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2),
126 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2)); 147 QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2));
127 server_config.set_max_streams_per_connection( 148 server_config.set_max_streams_per_connection(
128 kDefaultMaxStreamsPerConnection / 2, 149 kDefaultMaxStreamsPerConnection / 2,
129 kDefaultMaxStreamsPerConnection / 2); 150 kDefaultMaxStreamsPerConnection / 2);
130 server_config.SetInitialCongestionWindowToSend(kDefaultInitialWindow / 2); 151 server_config.SetInitialCongestionWindowToSend(kDefaultInitialWindow / 2);
131 server_config.SetInitialRoundTripTimeUsToSend( 152 server_config.SetInitialRoundTripTimeUsToSend(
132 10 * base::Time::kMicrosecondsPerMillisecond); 153 10 * base::Time::kMicrosecondsPerMillisecond);
133 server_config.SetInitialFlowControlWindowToSend( 154 server_config.SetInitialFlowControlWindowToSend(
134 2 * kInitialFlowControlWindowForTest); 155 2 * kInitialSessionFlowControlWindowForTest);
156 server_config.SetInitialStreamFlowControlWindowToSend(
157 2 * kInitialStreamFlowControlWindowForTest);
158 server_config.SetInitialSessionFlowControlWindowToSend(
159 2 * kInitialSessionFlowControlWindowForTest);
135 CryptoHandshakeMessage msg; 160 CryptoHandshakeMessage msg;
136 server_config.ToHandshakeMessage(&msg); 161 server_config.ToHandshakeMessage(&msg);
137 string error_details; 162 string error_details;
138 const QuicErrorCode error = 163 const QuicErrorCode error =
139 config_.ProcessPeerHello(msg, SERVER, &error_details); 164 config_.ProcessPeerHello(msg, SERVER, &error_details);
140 EXPECT_EQ(QUIC_NO_ERROR, error); 165 EXPECT_EQ(QUIC_NO_ERROR, error);
141 EXPECT_TRUE(config_.negotiated()); 166 EXPECT_TRUE(config_.negotiated());
142 EXPECT_EQ(kQBIC, config_.congestion_feedback()); 167 EXPECT_EQ(kQBIC, config_.congestion_feedback());
143 EXPECT_EQ(QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2), 168 EXPECT_EQ(QuicTime::Delta::FromSeconds(kDefaultTimeoutSecs / 2),
144 config_.idle_connection_state_lifetime()); 169 config_.idle_connection_state_lifetime());
145 EXPECT_EQ(kDefaultMaxStreamsPerConnection / 2, 170 EXPECT_EQ(kDefaultMaxStreamsPerConnection / 2,
146 config_.max_streams_per_connection()); 171 config_.max_streams_per_connection());
147 EXPECT_EQ(kDefaultInitialWindow / 2, 172 EXPECT_EQ(kDefaultInitialWindow / 2,
148 config_.ReceivedInitialCongestionWindow()); 173 config_.ReceivedInitialCongestionWindow());
149 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.keepalive_timeout()); 174 EXPECT_EQ(QuicTime::Delta::FromSeconds(0), config_.keepalive_timeout());
150 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, 175 EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond,
151 config_.ReceivedInitialRoundTripTimeUs()); 176 config_.ReceivedInitialRoundTripTimeUs());
152 EXPECT_FALSE(config_.HasReceivedLossDetection()); 177 EXPECT_FALSE(config_.HasReceivedLossDetection());
153 EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(), 178 EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(),
154 2 * kInitialFlowControlWindowForTest); 179 2 * kInitialSessionFlowControlWindowForTest);
180 EXPECT_EQ(config_.ReceivedInitialStreamFlowControlWindowBytes(),
181 2 * kInitialStreamFlowControlWindowForTest);
182 EXPECT_EQ(config_.ReceivedInitialSessionFlowControlWindowBytes(),
183 2 * kInitialSessionFlowControlWindowForTest);
155 } 184 }
156 185
157 TEST_F(QuicConfigTest, MissingOptionalValuesInCHLO) { 186 TEST_F(QuicConfigTest, MissingOptionalValuesInCHLO) {
158 CryptoHandshakeMessage msg; 187 CryptoHandshakeMessage msg;
159 msg.SetValue(kICSL, 1); 188 msg.SetValue(kICSL, 1);
160 msg.SetVector(kCGST, QuicTagVector(1, kQBIC)); 189 msg.SetVector(kCGST, QuicTagVector(1, kQBIC));
161 190
162 // Set all REQUIRED tags. 191 // Set all REQUIRED tags.
163 msg.SetValue(kICSL, 1); 192 msg.SetValue(kICSL, 1);
164 msg.SetVector(kCGST, QuicTagVector(1, kQBIC)); 193 msg.SetVector(kCGST, QuicTagVector(1, kQBIC));
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 EXPECT_DFATAL(config.SetInitialFlowControlWindowToSend(kInvalidWindow), 294 EXPECT_DFATAL(config.SetInitialFlowControlWindowToSend(kInvalidWindow),
266 "Initial flow control receive window"); 295 "Initial flow control receive window");
267 296
268 EXPECT_EQ(kDefaultFlowControlSendWindow, 297 EXPECT_EQ(kDefaultFlowControlSendWindow,
269 config.GetInitialFlowControlWindowToSend()); 298 config.GetInitialFlowControlWindowToSend());
270 } 299 }
271 300
272 } // namespace 301 } // namespace
273 } // namespace test 302 } // namespace test
274 } // namespace net 303 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_config.cc ('k') | net/quic/quic_connection.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698