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

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

Issue 110853010: Enable support for QUIC 13. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix android Created 7 years 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_stream_factory.cc ('k') | net/quic/test_tools/quic_test_packet_maker.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 "net/quic/quic_stream_factory.h" 5 #include "net/quic/quic_stream_factory.h"
6 6
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "net/cert/cert_verifier.h" 9 #include "net/cert/cert_verifier.h"
10 #include "net/dns/mock_host_resolver.h" 10 #include "net/dns/mock_host_resolver.h"
11 #include "net/http/http_response_headers.h" 11 #include "net/http/http_response_headers.h"
12 #include "net/http/http_response_info.h" 12 #include "net/http/http_response_info.h"
13 #include "net/http/http_util.h" 13 #include "net/http/http_util.h"
14 #include "net/quic/crypto/crypto_handshake.h" 14 #include "net/quic/crypto/crypto_handshake.h"
15 #include "net/quic/crypto/quic_decrypter.h" 15 #include "net/quic/crypto/quic_decrypter.h"
16 #include "net/quic/crypto/quic_encrypter.h" 16 #include "net/quic/crypto/quic_encrypter.h"
17 #include "net/quic/quic_http_stream.h" 17 #include "net/quic/quic_http_stream.h"
18 #include "net/quic/test_tools/mock_clock.h" 18 #include "net/quic/test_tools/mock_clock.h"
19 #include "net/quic/test_tools/mock_crypto_client_stream_factory.h" 19 #include "net/quic/test_tools/mock_crypto_client_stream_factory.h"
20 #include "net/quic/test_tools/mock_random.h" 20 #include "net/quic/test_tools/mock_random.h"
21 #include "net/quic/test_tools/quic_test_packet_maker.h"
21 #include "net/quic/test_tools/quic_test_utils.h" 22 #include "net/quic/test_tools/quic_test_utils.h"
22 #include "net/socket/socket_test_util.h" 23 #include "net/socket/socket_test_util.h"
23 #include "testing/gtest/include/gtest/gtest.h" 24 #include "testing/gtest/include/gtest/gtest.h"
24 25
25 using base::StringPiece; 26 using base::StringPiece;
26 using std::string; 27 using std::string;
27 using std::vector; 28 using std::vector;
28 29
29 namespace net { 30 namespace net {
30 namespace test { 31 namespace test {
(...skipping 28 matching lines...) Expand all
59 for (QuicStreamFactory::SessionSet::iterator it = 60 for (QuicStreamFactory::SessionSet::iterator it =
60 factory->all_sessions_.begin(); 61 factory->all_sessions_.begin();
61 it != factory->all_sessions_.end(); ++it) { 62 it != factory->all_sessions_.end(); ++it) {
62 if (*it == session) 63 if (*it == session)
63 return true; 64 return true;
64 } 65 }
65 return false; 66 return false;
66 } 67 }
67 }; 68 };
68 69
69 class QuicStreamFactoryTest : public ::testing::Test { 70 class QuicStreamFactoryTest : public ::testing::TestWithParam<QuicVersion> {
70 protected: 71 protected:
71 QuicStreamFactoryTest() 72 QuicStreamFactoryTest()
72 : random_generator_(0), 73 : random_generator_(0),
74 maker_(GetParam(), 0),
73 clock_(new MockClock()), 75 clock_(new MockClock()),
74 factory_(&host_resolver_, &socket_factory_, 76 factory_(&host_resolver_, &socket_factory_,
75 base::WeakPtr<HttpServerProperties>(), 77 base::WeakPtr<HttpServerProperties>(),
76 &crypto_client_stream_factory_, 78 &crypto_client_stream_factory_,
77 &random_generator_, clock_, kDefaultMaxPacketSize), 79 &random_generator_, clock_, kDefaultMaxPacketSize,
80 SupportedVersions(GetParam())),
78 host_port_proxy_pair_(HostPortPair(kDefaultServerHostName, 81 host_port_proxy_pair_(HostPortPair(kDefaultServerHostName,
79 kDefaultServerPort), 82 kDefaultServerPort),
80 ProxyServer::Direct()), 83 ProxyServer::Direct()),
81 is_https_(false), 84 is_https_(false),
82 cert_verifier_(CertVerifier::CreateDefault()) { 85 cert_verifier_(CertVerifier::CreateDefault()) {
83 factory_.set_require_confirmation(false); 86 factory_.set_require_confirmation(false);
84 } 87 }
85 88
86 scoped_ptr<QuicEncryptedPacket> ConstructRstPacket(
87 QuicPacketSequenceNumber num,
88 QuicStreamId stream_id) {
89 QuicPacketHeader header;
90 header.public_header.guid = random_generator_.RandUint64();
91 header.public_header.reset_flag = false;
92 header.public_header.version_flag = true;
93 header.packet_sequence_number = num;
94 header.public_header.sequence_number_length = PACKET_1BYTE_SEQUENCE_NUMBER;
95 header.entropy_flag = false;
96 header.fec_flag = false;
97 header.fec_group = 0;
98
99 QuicRstStreamFrame rst(stream_id, QUIC_STREAM_CANCELLED);
100 return scoped_ptr<QuicEncryptedPacket>(
101 ConstructPacket(header, QuicFrame(&rst)));
102 }
103
104 scoped_ptr<QuicEncryptedPacket> ConstructAckPacket(
105 QuicPacketSequenceNumber largest_received,
106 QuicPacketSequenceNumber least_unacked) {
107 QuicPacketHeader header;
108 header.public_header.guid = random_generator_.RandUint64();
109 header.public_header.reset_flag = false;
110 header.public_header.version_flag = false;
111 header.packet_sequence_number = 2;
112 header.entropy_flag = false;
113 header.fec_flag = false;
114 header.fec_group = 0;
115
116 QuicAckFrame ack(largest_received, QuicTime::Zero(), least_unacked);
117 QuicCongestionFeedbackFrame feedback;
118 feedback.type = kTCP;
119 feedback.tcp.accumulated_number_of_lost_packets = 0;
120 feedback.tcp.receive_window = 16000;
121
122 QuicFramer framer(QuicSupportedVersions(), QuicTime::Zero(), false);
123 QuicFrames frames;
124 frames.push_back(QuicFrame(&ack));
125 frames.push_back(QuicFrame(&feedback));
126 scoped_ptr<QuicPacket> packet(
127 framer.BuildUnsizedDataPacket(header, frames).packet);
128 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket(
129 ENCRYPTION_NONE, header.packet_sequence_number, *packet));
130 }
131
132 // Returns a newly created packet to send congestion feedback data.
133 scoped_ptr<QuicEncryptedPacket> ConstructFeedbackPacket(
134 QuicPacketSequenceNumber sequence_number) {
135 QuicPacketHeader header;
136 header.public_header.guid = random_generator_.RandUint64();
137 header.public_header.reset_flag = false;
138 header.public_header.version_flag = false;
139 header.packet_sequence_number = sequence_number;
140 header.entropy_flag = false;
141 header.fec_flag = false;
142 header.fec_group = 0;
143
144 QuicCongestionFeedbackFrame frame;
145 frame.type = kTCP;
146 frame.tcp.accumulated_number_of_lost_packets = 0;
147 frame.tcp.receive_window = 16000;
148
149 return scoped_ptr<QuicEncryptedPacket>(
150 ConstructPacket(header, QuicFrame(&frame)));
151 }
152
153 scoped_ptr<QuicEncryptedPacket> ConstructPacket(
154 const QuicPacketHeader& header,
155 const QuicFrame& frame) {
156 QuicFramer framer(QuicSupportedVersions(), QuicTime::Zero(), false);
157 QuicFrames frames;
158 frames.push_back(frame);
159 scoped_ptr<QuicPacket> packet(
160 framer.BuildUnsizedDataPacket(header, frames).packet);
161 return scoped_ptr<QuicEncryptedPacket>(framer.EncryptPacket(
162 ENCRYPTION_NONE, header.packet_sequence_number, *packet));
163 }
164 89
165 int GetSourcePortForNewSession(const HostPortProxyPair& destination) { 90 int GetSourcePortForNewSession(const HostPortProxyPair& destination) {
166 // Should only be called if there is no active session for this destination. 91 // Should only be called if there is no active session for this destination.
167 EXPECT_EQ(NULL, factory_.CreateIfSessionExists(destination, 92 EXPECT_EQ(NULL, factory_.CreateIfSessionExists(destination,
168 net_log_).get()); 93 net_log_).get());
169 size_t socket_count = socket_factory_.udp_client_sockets().size(); 94 size_t socket_count = socket_factory_.udp_client_sockets().size();
170 95
171 MockRead reads[] = { 96 MockRead reads[] = {
172 MockRead(ASYNC, OK, 0) // EOF 97 MockRead(ASYNC, OK, 0) // EOF
173 }; 98 };
(...skipping 29 matching lines...) Expand all
203 net_log_).get()); 128 net_log_).get());
204 EXPECT_TRUE(socket_data.at_read_eof()); 129 EXPECT_TRUE(socket_data.at_read_eof());
205 EXPECT_TRUE(socket_data.at_write_eof()); 130 EXPECT_TRUE(socket_data.at_write_eof());
206 return port; 131 return port;
207 } 132 }
208 133
209 MockHostResolver host_resolver_; 134 MockHostResolver host_resolver_;
210 DeterministicMockClientSocketFactory socket_factory_; 135 DeterministicMockClientSocketFactory socket_factory_;
211 MockCryptoClientStreamFactory crypto_client_stream_factory_; 136 MockCryptoClientStreamFactory crypto_client_stream_factory_;
212 MockRandom random_generator_; 137 MockRandom random_generator_;
138 QuicTestPacketMaker maker_;
213 MockClock* clock_; // Owned by factory_. 139 MockClock* clock_; // Owned by factory_.
214 QuicStreamFactory factory_; 140 QuicStreamFactory factory_;
215 HostPortProxyPair host_port_proxy_pair_; 141 HostPortProxyPair host_port_proxy_pair_;
216 bool is_https_; 142 bool is_https_;
217 scoped_ptr<CertVerifier> cert_verifier_; 143 scoped_ptr<CertVerifier> cert_verifier_;
218 BoundNetLog net_log_; 144 BoundNetLog net_log_;
219 TestCompletionCallback callback_; 145 TestCompletionCallback callback_;
220 }; 146 };
221 147
222 TEST_F(QuicStreamFactoryTest, CreateIfSessionExists) { 148 INSTANTIATE_TEST_CASE_P(Version, QuicStreamFactoryTest,
149 ::testing::ValuesIn(QuicSupportedVersions()));
150
151 TEST_P(QuicStreamFactoryTest, CreateIfSessionExists) {
223 EXPECT_EQ(NULL, factory_.CreateIfSessionExists(host_port_proxy_pair_, 152 EXPECT_EQ(NULL, factory_.CreateIfSessionExists(host_port_proxy_pair_,
224 net_log_).get()); 153 net_log_).get());
225 } 154 }
226 155
227 TEST_F(QuicStreamFactoryTest, Create) { 156 TEST_P(QuicStreamFactoryTest, Create) {
228 MockRead reads[] = { 157 MockRead reads[] = {
229 MockRead(ASYNC, OK, 0) // EOF 158 MockRead(ASYNC, OK, 0) // EOF
230 }; 159 };
231 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); 160 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0);
232 socket_factory_.AddSocketDataProvider(&socket_data); 161 socket_factory_.AddSocketDataProvider(&socket_data);
233 socket_data.StopAfter(1); 162 socket_data.StopAfter(1);
234 163
235 QuicStreamRequest request(&factory_); 164 QuicStreamRequest request(&factory_);
236 EXPECT_EQ(ERR_IO_PENDING, request.Request(host_port_proxy_pair_, is_https_, 165 EXPECT_EQ(ERR_IO_PENDING, request.Request(host_port_proxy_pair_, is_https_,
237 cert_verifier_.get(), net_log_, 166 cert_verifier_.get(), net_log_,
(...skipping 13 matching lines...) Expand all
251 EXPECT_EQ(OK, request2.Request(host_port_proxy_pair_, is_https_, 180 EXPECT_EQ(OK, request2.Request(host_port_proxy_pair_, is_https_,
252 cert_verifier_.get(), net_log_, 181 cert_verifier_.get(), net_log_,
253 callback_.callback())); 182 callback_.callback()));
254 stream = request2.ReleaseStream(); // Will reset stream 5. 183 stream = request2.ReleaseStream(); // Will reset stream 5.
255 stream.reset(); // Will reset stream 7. 184 stream.reset(); // Will reset stream 7.
256 185
257 EXPECT_TRUE(socket_data.at_read_eof()); 186 EXPECT_TRUE(socket_data.at_read_eof());
258 EXPECT_TRUE(socket_data.at_write_eof()); 187 EXPECT_TRUE(socket_data.at_write_eof());
259 } 188 }
260 189
261 TEST_F(QuicStreamFactoryTest, Goaway) { 190 TEST_P(QuicStreamFactoryTest, Goaway) {
262 MockRead reads[] = { 191 MockRead reads[] = {
263 MockRead(ASYNC, OK, 0) // EOF 192 MockRead(ASYNC, OK, 0) // EOF
264 }; 193 };
265 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); 194 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0);
266 socket_data.StopAfter(1); 195 socket_data.StopAfter(1);
267 socket_factory_.AddSocketDataProvider(&socket_data); 196 socket_factory_.AddSocketDataProvider(&socket_data);
268 DeterministicSocketData socket_data2(reads, arraysize(reads), NULL, 0); 197 DeterministicSocketData socket_data2(reads, arraysize(reads), NULL, 0);
269 socket_data2.StopAfter(1); 198 socket_data2.StopAfter(1);
270 socket_factory_.AddSocketDataProvider(&socket_data2); 199 socket_factory_.AddSocketDataProvider(&socket_data2);
271 200
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 237
309 stream2.reset(); 238 stream2.reset();
310 stream.reset(); 239 stream.reset();
311 240
312 EXPECT_TRUE(socket_data.at_read_eof()); 241 EXPECT_TRUE(socket_data.at_read_eof());
313 EXPECT_TRUE(socket_data.at_write_eof()); 242 EXPECT_TRUE(socket_data.at_write_eof());
314 EXPECT_TRUE(socket_data2.at_read_eof()); 243 EXPECT_TRUE(socket_data2.at_read_eof());
315 EXPECT_TRUE(socket_data2.at_write_eof()); 244 EXPECT_TRUE(socket_data2.at_write_eof());
316 } 245 }
317 246
318 TEST_F(QuicStreamFactoryTest, MaxOpenStream) { 247 TEST_P(QuicStreamFactoryTest, MaxOpenStream) {
319 MockRead reads[] = { 248 MockRead reads[] = {
320 MockRead(ASYNC, OK, 0) // EOF 249 MockRead(ASYNC, OK, 0) // EOF
321 }; 250 };
322 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket(1, 3)); 251 QuicStreamId stream_id = GetParam() > QUIC_VERSION_12 ? 5 : 3;
252 scoped_ptr<QuicEncryptedPacket> rst(
253 maker_.MakeRstPacket(1, true, stream_id, QUIC_STREAM_CANCELLED));
323 MockWrite writes[] = { 254 MockWrite writes[] = {
324 MockWrite(ASYNC, rst->data(), rst->length(), 1), 255 MockWrite(ASYNC, rst->data(), rst->length(), 1),
325 }; 256 };
326 DeterministicSocketData socket_data(reads, arraysize(reads), 257 DeterministicSocketData socket_data(reads, arraysize(reads),
327 writes, arraysize(writes)); 258 writes, arraysize(writes));
328 socket_factory_.AddSocketDataProvider(&socket_data); 259 socket_factory_.AddSocketDataProvider(&socket_data);
329 socket_data.StopAfter(1); 260 socket_data.StopAfter(1);
330 261
331 HttpRequestInfo request_info; 262 HttpRequestInfo request_info;
332 std::vector<QuicHttpStream*> streams; 263 std::vector<QuicHttpStream*> streams;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 295
365 ASSERT_TRUE(callback_.have_result()); 296 ASSERT_TRUE(callback_.have_result());
366 297
367 EXPECT_EQ(OK, callback_.WaitForResult()); 298 EXPECT_EQ(OK, callback_.WaitForResult());
368 299
369 EXPECT_TRUE(socket_data.at_read_eof()); 300 EXPECT_TRUE(socket_data.at_read_eof());
370 EXPECT_TRUE(socket_data.at_write_eof()); 301 EXPECT_TRUE(socket_data.at_write_eof());
371 STLDeleteElements(&streams); 302 STLDeleteElements(&streams);
372 } 303 }
373 304
374 TEST_F(QuicStreamFactoryTest, ResolutionErrorInCreate) { 305 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) {
375 DeterministicSocketData socket_data(NULL, 0, NULL, 0); 306 DeterministicSocketData socket_data(NULL, 0, NULL, 0);
376 socket_factory_.AddSocketDataProvider(&socket_data); 307 socket_factory_.AddSocketDataProvider(&socket_data);
377 308
378 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName); 309 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName);
379 310
380 QuicStreamRequest request(&factory_); 311 QuicStreamRequest request(&factory_);
381 EXPECT_EQ(ERR_IO_PENDING, request.Request(host_port_proxy_pair_, is_https_, 312 EXPECT_EQ(ERR_IO_PENDING, request.Request(host_port_proxy_pair_, is_https_,
382 cert_verifier_.get(), net_log_, 313 cert_verifier_.get(), net_log_,
383 callback_.callback())); 314 callback_.callback()));
384 315
385 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult()); 316 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult());
386 317
387 EXPECT_TRUE(socket_data.at_read_eof()); 318 EXPECT_TRUE(socket_data.at_read_eof());
388 EXPECT_TRUE(socket_data.at_write_eof()); 319 EXPECT_TRUE(socket_data.at_write_eof());
389 } 320 }
390 321
391 TEST_F(QuicStreamFactoryTest, ConnectErrorInCreate) { 322 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) {
392 MockConnect connect(SYNCHRONOUS, ERR_ADDRESS_IN_USE); 323 MockConnect connect(SYNCHRONOUS, ERR_ADDRESS_IN_USE);
393 DeterministicSocketData socket_data(NULL, 0, NULL, 0); 324 DeterministicSocketData socket_data(NULL, 0, NULL, 0);
394 socket_data.set_connect_data(connect); 325 socket_data.set_connect_data(connect);
395 socket_factory_.AddSocketDataProvider(&socket_data); 326 socket_factory_.AddSocketDataProvider(&socket_data);
396 socket_data.StopAfter(1); 327 socket_data.StopAfter(1);
397 328
398 QuicStreamRequest request(&factory_); 329 QuicStreamRequest request(&factory_);
399 EXPECT_EQ(ERR_IO_PENDING, request.Request(host_port_proxy_pair_, is_https_, 330 EXPECT_EQ(ERR_IO_PENDING, request.Request(host_port_proxy_pair_, is_https_,
400 cert_verifier_.get(), net_log_, 331 cert_verifier_.get(), net_log_,
401 callback_.callback())); 332 callback_.callback()));
402 333
403 EXPECT_EQ(ERR_ADDRESS_IN_USE, callback_.WaitForResult()); 334 EXPECT_EQ(ERR_ADDRESS_IN_USE, callback_.WaitForResult());
404 335
405 EXPECT_TRUE(socket_data.at_read_eof()); 336 EXPECT_TRUE(socket_data.at_read_eof());
406 EXPECT_TRUE(socket_data.at_write_eof()); 337 EXPECT_TRUE(socket_data.at_write_eof());
407 } 338 }
408 339
409 TEST_F(QuicStreamFactoryTest, CancelCreate) { 340 TEST_P(QuicStreamFactoryTest, CancelCreate) {
410 MockRead reads[] = { 341 MockRead reads[] = {
411 MockRead(ASYNC, OK, 0) // EOF 342 MockRead(ASYNC, OK, 0) // EOF
412 }; 343 };
413 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); 344 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0);
414 socket_factory_.AddSocketDataProvider(&socket_data); 345 socket_factory_.AddSocketDataProvider(&socket_data);
415 { 346 {
416 QuicStreamRequest request(&factory_); 347 QuicStreamRequest request(&factory_);
417 EXPECT_EQ(ERR_IO_PENDING, request.Request(host_port_proxy_pair_, is_https_, 348 EXPECT_EQ(ERR_IO_PENDING, request.Request(host_port_proxy_pair_, is_https_,
418 cert_verifier_.get(), net_log_, 349 cert_verifier_.get(), net_log_,
419 callback_.callback())); 350 callback_.callback()));
420 } 351 }
421 352
422 socket_data.StopAfter(1); 353 socket_data.StopAfter(1);
423 base::RunLoop run_loop; 354 base::RunLoop run_loop;
424 run_loop.RunUntilIdle(); 355 run_loop.RunUntilIdle();
425 356
426 scoped_ptr<QuicHttpStream> stream( 357 scoped_ptr<QuicHttpStream> stream(
427 factory_.CreateIfSessionExists(host_port_proxy_pair_, net_log_)); 358 factory_.CreateIfSessionExists(host_port_proxy_pair_, net_log_));
428 EXPECT_TRUE(stream.get()); 359 EXPECT_TRUE(stream.get());
429 stream.reset(); 360 stream.reset();
430 361
431 EXPECT_TRUE(socket_data.at_read_eof()); 362 EXPECT_TRUE(socket_data.at_read_eof());
432 EXPECT_TRUE(socket_data.at_write_eof()); 363 EXPECT_TRUE(socket_data.at_write_eof());
433 } 364 }
434 365
435 TEST_F(QuicStreamFactoryTest, CreateConsistentEphemeralPort) { 366 TEST_P(QuicStreamFactoryTest, CreateConsistentEphemeralPort) {
436 // Sequentially connect to the default host, then another host, and then the 367 // Sequentially connect to the default host, then another host, and then the
437 // default host. Verify that the default host gets a consistent ephemeral 368 // default host. Verify that the default host gets a consistent ephemeral
438 // port, that is different from the other host's connection. 369 // port, that is different from the other host's connection.
439 370
440 std::string other_server_name = "other.google.com"; 371 std::string other_server_name = "other.google.com";
441 EXPECT_NE(kDefaultServerHostName, other_server_name); 372 EXPECT_NE(kDefaultServerHostName, other_server_name);
442 HostPortPair host_port_pair2(other_server_name, kDefaultServerPort); 373 HostPortPair host_port_pair2(other_server_name, kDefaultServerPort);
443 HostPortProxyPair host_port_proxy_pair2(host_port_pair2, 374 HostPortProxyPair host_port_proxy_pair2(host_port_pair2,
444 host_port_proxy_pair_.second); 375 host_port_proxy_pair_.second);
445 376
446 int original_port = GetSourcePortForNewSession(host_port_proxy_pair_); 377 int original_port = GetSourcePortForNewSession(host_port_proxy_pair_);
447 EXPECT_NE(original_port, GetSourcePortForNewSession(host_port_proxy_pair2)); 378 EXPECT_NE(original_port, GetSourcePortForNewSession(host_port_proxy_pair2));
448 EXPECT_EQ(original_port, GetSourcePortForNewSession(host_port_proxy_pair_)); 379 EXPECT_EQ(original_port, GetSourcePortForNewSession(host_port_proxy_pair_));
449 } 380 }
450 381
451 TEST_F(QuicStreamFactoryTest, CloseAllSessions) { 382 TEST_P(QuicStreamFactoryTest, CloseAllSessions) {
452 MockRead reads[] = { 383 MockRead reads[] = {
453 MockRead(ASYNC, 0, 0) // EOF 384 MockRead(ASYNC, 0, 0) // EOF
454 }; 385 };
455 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); 386 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0);
456 socket_factory_.AddSocketDataProvider(&socket_data); 387 socket_factory_.AddSocketDataProvider(&socket_data);
457 socket_data.StopAfter(1); 388 socket_data.StopAfter(1);
458 389
459 MockRead reads2[] = { 390 MockRead reads2[] = {
460 MockRead(ASYNC, 0, 0) // EOF 391 MockRead(ASYNC, 0, 0) // EOF
461 }; 392 };
(...skipping 29 matching lines...) Expand all
491 EXPECT_EQ(OK, callback_.WaitForResult()); 422 EXPECT_EQ(OK, callback_.WaitForResult());
492 stream = request2.ReleaseStream(); 423 stream = request2.ReleaseStream();
493 stream.reset(); // Will reset stream 3. 424 stream.reset(); // Will reset stream 3.
494 425
495 EXPECT_TRUE(socket_data.at_read_eof()); 426 EXPECT_TRUE(socket_data.at_read_eof());
496 EXPECT_TRUE(socket_data.at_write_eof()); 427 EXPECT_TRUE(socket_data.at_write_eof());
497 EXPECT_TRUE(socket_data2.at_read_eof()); 428 EXPECT_TRUE(socket_data2.at_read_eof());
498 EXPECT_TRUE(socket_data2.at_write_eof()); 429 EXPECT_TRUE(socket_data2.at_write_eof());
499 } 430 }
500 431
501 TEST_F(QuicStreamFactoryTest, OnIPAddressChanged) { 432 TEST_P(QuicStreamFactoryTest, OnIPAddressChanged) {
502 MockRead reads[] = { 433 MockRead reads[] = {
503 MockRead(ASYNC, 0, 0) // EOF 434 MockRead(ASYNC, 0, 0) // EOF
504 }; 435 };
505 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); 436 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0);
506 socket_factory_.AddSocketDataProvider(&socket_data); 437 socket_factory_.AddSocketDataProvider(&socket_data);
507 socket_data.StopAfter(1); 438 socket_data.StopAfter(1);
508 439
509 MockRead reads2[] = { 440 MockRead reads2[] = {
510 MockRead(ASYNC, 0, 0) // EOF 441 MockRead(ASYNC, 0, 0) // EOF
511 }; 442 };
(...skipping 30 matching lines...) Expand all
542 EXPECT_EQ(OK, callback_.WaitForResult()); 473 EXPECT_EQ(OK, callback_.WaitForResult());
543 stream = request2.ReleaseStream(); 474 stream = request2.ReleaseStream();
544 stream.reset(); // Will reset stream 3. 475 stream.reset(); // Will reset stream 3.
545 476
546 EXPECT_TRUE(socket_data.at_read_eof()); 477 EXPECT_TRUE(socket_data.at_read_eof());
547 EXPECT_TRUE(socket_data.at_write_eof()); 478 EXPECT_TRUE(socket_data.at_write_eof());
548 EXPECT_TRUE(socket_data2.at_read_eof()); 479 EXPECT_TRUE(socket_data2.at_read_eof());
549 EXPECT_TRUE(socket_data2.at_write_eof()); 480 EXPECT_TRUE(socket_data2.at_write_eof());
550 } 481 }
551 482
552 TEST_F(QuicStreamFactoryTest, OnCertAdded) { 483 TEST_P(QuicStreamFactoryTest, OnCertAdded) {
553 MockRead reads[] = { 484 MockRead reads[] = {
554 MockRead(ASYNC, 0, 0) // EOF 485 MockRead(ASYNC, 0, 0) // EOF
555 }; 486 };
556 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); 487 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0);
557 socket_factory_.AddSocketDataProvider(&socket_data); 488 socket_factory_.AddSocketDataProvider(&socket_data);
558 socket_data.StopAfter(1); 489 socket_data.StopAfter(1);
559 490
560 MockRead reads2[] = { 491 MockRead reads2[] = {
561 MockRead(ASYNC, 0, 0) // EOF 492 MockRead(ASYNC, 0, 0) // EOF
562 }; 493 };
(...skipping 30 matching lines...) Expand all
593 EXPECT_EQ(OK, callback_.WaitForResult()); 524 EXPECT_EQ(OK, callback_.WaitForResult());
594 stream = request2.ReleaseStream(); 525 stream = request2.ReleaseStream();
595 stream.reset(); // Will reset stream 3. 526 stream.reset(); // Will reset stream 3.
596 527
597 EXPECT_TRUE(socket_data.at_read_eof()); 528 EXPECT_TRUE(socket_data.at_read_eof());
598 EXPECT_TRUE(socket_data.at_write_eof()); 529 EXPECT_TRUE(socket_data.at_write_eof());
599 EXPECT_TRUE(socket_data2.at_read_eof()); 530 EXPECT_TRUE(socket_data2.at_read_eof());
600 EXPECT_TRUE(socket_data2.at_write_eof()); 531 EXPECT_TRUE(socket_data2.at_write_eof());
601 } 532 }
602 533
603 TEST_F(QuicStreamFactoryTest, OnCACertChanged) { 534 TEST_P(QuicStreamFactoryTest, OnCACertChanged) {
604 MockRead reads[] = { 535 MockRead reads[] = {
605 MockRead(ASYNC, 0, 0) // EOF 536 MockRead(ASYNC, 0, 0) // EOF
606 }; 537 };
607 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); 538 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0);
608 socket_factory_.AddSocketDataProvider(&socket_data); 539 socket_factory_.AddSocketDataProvider(&socket_data);
609 socket_data.StopAfter(1); 540 socket_data.StopAfter(1);
610 541
611 MockRead reads2[] = { 542 MockRead reads2[] = {
612 MockRead(ASYNC, 0, 0) // EOF 543 MockRead(ASYNC, 0, 0) // EOF
613 }; 544 };
(...skipping 30 matching lines...) Expand all
644 EXPECT_EQ(OK, callback_.WaitForResult()); 575 EXPECT_EQ(OK, callback_.WaitForResult());
645 stream = request2.ReleaseStream(); 576 stream = request2.ReleaseStream();
646 stream.reset(); // Will reset stream 3. 577 stream.reset(); // Will reset stream 3.
647 578
648 EXPECT_TRUE(socket_data.at_read_eof()); 579 EXPECT_TRUE(socket_data.at_read_eof());
649 EXPECT_TRUE(socket_data.at_write_eof()); 580 EXPECT_TRUE(socket_data.at_write_eof());
650 EXPECT_TRUE(socket_data2.at_read_eof()); 581 EXPECT_TRUE(socket_data2.at_read_eof());
651 EXPECT_TRUE(socket_data2.at_write_eof()); 582 EXPECT_TRUE(socket_data2.at_write_eof());
652 } 583 }
653 584
654 TEST_F(QuicStreamFactoryTest, SharedCryptoConfig) { 585 TEST_P(QuicStreamFactoryTest, SharedCryptoConfig) {
655 vector<string> cannoncial_suffixes; 586 vector<string> cannoncial_suffixes;
656 cannoncial_suffixes.push_back(string(".c.youtube.com")); 587 cannoncial_suffixes.push_back(string(".c.youtube.com"));
657 cannoncial_suffixes.push_back(string(".googlevideo.com")); 588 cannoncial_suffixes.push_back(string(".googlevideo.com"));
658 589
659 for (unsigned i = 0; i < cannoncial_suffixes.size(); ++i) { 590 for (unsigned i = 0; i < cannoncial_suffixes.size(); ++i) {
660 string r1_host_name("r1"); 591 string r1_host_name("r1");
661 string r2_host_name("r2"); 592 string r2_host_name("r2");
662 r1_host_name.append(cannoncial_suffixes[i]); 593 r1_host_name.append(cannoncial_suffixes[i]);
663 r2_host_name.append(cannoncial_suffixes[i]); 594 r2_host_name.append(cannoncial_suffixes[i]);
664 595
(...skipping 20 matching lines...) Expand all
685 QuicStreamFactoryPeer::GetOrCreateCryptoConfig(&factory_, 616 QuicStreamFactoryPeer::GetOrCreateCryptoConfig(&factory_,
686 host_port_proxy_pair2); 617 host_port_proxy_pair2);
687 DCHECK(crypto_config2); 618 DCHECK(crypto_config2);
688 QuicCryptoClientConfig::CachedState* cached2 = 619 QuicCryptoClientConfig::CachedState* cached2 =
689 crypto_config2->LookupOrCreate(host_port_proxy_pair2.first.host()); 620 crypto_config2->LookupOrCreate(host_port_proxy_pair2.first.host());
690 EXPECT_EQ(cached1->source_address_token(), cached2->source_address_token()); 621 EXPECT_EQ(cached1->source_address_token(), cached2->source_address_token());
691 EXPECT_TRUE(cached2->proof_valid()); 622 EXPECT_TRUE(cached2->proof_valid());
692 } 623 }
693 } 624 }
694 625
695 TEST_F(QuicStreamFactoryTest, CryptoConfigWhenProofIsInvalid) { 626 TEST_P(QuicStreamFactoryTest, CryptoConfigWhenProofIsInvalid) {
696 vector<string> cannoncial_suffixes; 627 vector<string> cannoncial_suffixes;
697 cannoncial_suffixes.push_back(string(".c.youtube.com")); 628 cannoncial_suffixes.push_back(string(".c.youtube.com"));
698 cannoncial_suffixes.push_back(string(".googlevideo.com")); 629 cannoncial_suffixes.push_back(string(".googlevideo.com"));
699 630
700 for (unsigned i = 0; i < cannoncial_suffixes.size(); ++i) { 631 for (unsigned i = 0; i < cannoncial_suffixes.size(); ++i) {
701 string r3_host_name("r3"); 632 string r3_host_name("r3");
702 string r4_host_name("r4"); 633 string r4_host_name("r4");
703 r3_host_name.append(cannoncial_suffixes[i]); 634 r3_host_name.append(cannoncial_suffixes[i]);
704 r4_host_name.append(cannoncial_suffixes[i]); 635 r4_host_name.append(cannoncial_suffixes[i]);
705 636
(...skipping 23 matching lines...) Expand all
729 QuicCryptoClientConfig::CachedState* cached2 = 660 QuicCryptoClientConfig::CachedState* cached2 =
730 crypto_config2->LookupOrCreate(host_port_proxy_pair2.first.host()); 661 crypto_config2->LookupOrCreate(host_port_proxy_pair2.first.host());
731 EXPECT_NE(cached1->source_address_token(), cached2->source_address_token()); 662 EXPECT_NE(cached1->source_address_token(), cached2->source_address_token());
732 EXPECT_TRUE(cached2->source_address_token().empty()); 663 EXPECT_TRUE(cached2->source_address_token().empty());
733 EXPECT_FALSE(cached2->proof_valid()); 664 EXPECT_FALSE(cached2->proof_valid());
734 } 665 }
735 } 666 }
736 667
737 } // namespace test 668 } // namespace test
738 } // namespace net 669 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_stream_factory.cc ('k') | net/quic/test_tools/quic_test_packet_maker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698