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

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

Issue 1534993003: Remove use of DeterministicSocketData from QUIC tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge... Created 5 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
« no previous file with comments | « net/quic/quic_network_transaction_unittest.cc ('k') | net/socket/socket_test_util.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 "base/thread_task_runner_handle.h" 9 #include "base/thread_task_runner_handle.h"
10 #include "net/base/test_data_directory.h" 10 #include "net/base/test_data_directory.h"
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 } 191 }
192 192
193 int GetSourcePortForNewSessionAndGoAway(const HostPortPair& destination) { 193 int GetSourcePortForNewSessionAndGoAway(const HostPortPair& destination) {
194 return GetSourcePortForNewSessionInner(destination, true); 194 return GetSourcePortForNewSessionInner(destination, true);
195 } 195 }
196 196
197 int GetSourcePortForNewSessionInner(const HostPortPair& destination, 197 int GetSourcePortForNewSessionInner(const HostPortPair& destination,
198 bool goaway_received) { 198 bool goaway_received) {
199 // Should only be called if there is no active session for this destination. 199 // Should only be called if there is no active session for this destination.
200 EXPECT_FALSE(HasActiveSession(destination)); 200 EXPECT_FALSE(HasActiveSession(destination));
201 size_t socket_count = socket_factory_.udp_client_sockets().size(); 201 size_t socket_count = socket_factory_.udp_client_socket_ports().size();
202 202
203 MockRead reads[] = { 203 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
204 MockRead(ASYNC, OK, 0) // EOF 204 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
205 };
206 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
207 socket_data.StopAfter(1);
208 socket_factory_.AddSocketDataProvider(&socket_data); 205 socket_factory_.AddSocketDataProvider(&socket_data);
209 206
210 QuicStreamRequest request(factory_.get()); 207 QuicStreamRequest request(factory_.get());
211 EXPECT_EQ(ERR_IO_PENDING, 208 EXPECT_EQ(ERR_IO_PENDING,
212 request.Request(destination, privacy_mode_, 209 request.Request(destination, privacy_mode_,
213 /*cert_verify_flags=*/0, destination.host(), 210 /*cert_verify_flags=*/0, destination.host(),
214 "GET", net_log_, callback_.callback())); 211 "GET", net_log_, callback_.callback()));
215 212
216 EXPECT_EQ(OK, callback_.WaitForResult()); 213 EXPECT_EQ(OK, callback_.WaitForResult());
217 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 214 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
218 EXPECT_TRUE(stream.get()); 215 EXPECT_TRUE(stream.get());
219 stream.reset(); 216 stream.reset();
220 217
221 QuicChromiumClientSession* session = 218 QuicChromiumClientSession* session =
222 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), destination); 219 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), destination);
223 220
224 if (socket_count + 1 != socket_factory_.udp_client_sockets().size()) { 221 if (socket_count + 1 != socket_factory_.udp_client_socket_ports().size()) {
225 EXPECT_TRUE(false); 222 ADD_FAILURE();
226 return 0; 223 return 0;
227 } 224 }
228 225
229 IPEndPoint endpoint;
230 socket_factory_.udp_client_sockets()[socket_count]->GetLocalAddress(
231 &endpoint);
232 int port = endpoint.port();
233 if (goaway_received) { 226 if (goaway_received) {
234 QuicGoAwayFrame goaway(QUIC_NO_ERROR, 1, ""); 227 QuicGoAwayFrame goaway(QUIC_NO_ERROR, 1, "");
235 session->connection()->OnGoAwayFrame(goaway); 228 session->connection()->OnGoAwayFrame(goaway);
236 } 229 }
237 230
238 factory_->OnSessionClosed(session); 231 factory_->OnSessionClosed(session);
239 EXPECT_FALSE(HasActiveSession(destination)); 232 EXPECT_FALSE(HasActiveSession(destination));
240 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 233 EXPECT_TRUE(socket_data.AllReadDataConsumed());
241 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 234 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
242 return port; 235 return socket_factory_.udp_client_socket_ports()[socket_count];
243 } 236 }
244 237
245 scoped_ptr<QuicEncryptedPacket> ConstructConnectionClosePacket( 238 scoped_ptr<QuicEncryptedPacket> ConstructConnectionClosePacket(
246 QuicPacketNumber num) { 239 QuicPacketNumber num) {
247 return maker_.MakeConnectionClosePacket(num); 240 return maker_.MakeConnectionClosePacket(num);
248 } 241 }
249 242
250 scoped_ptr<QuicEncryptedPacket> ConstructRstPacket() { 243 scoped_ptr<QuicEncryptedPacket> ConstructRstPacket() {
251 QuicStreamId stream_id = kClientDataStreamId1; 244 QuicStreamId stream_id = kClientDataStreamId1;
252 return maker_.MakeRstPacket( 245 return maker_.MakeRstPacket(
(...skipping 14 matching lines...) Expand all
267 } 260 }
268 261
269 void NotifyIPAddressChanged() { 262 void NotifyIPAddressChanged() {
270 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); 263 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
271 // For thread safety, the NCN queues tasks to do the actual notifications, 264 // For thread safety, the NCN queues tasks to do the actual notifications,
272 // so we need to spin the message loop so the notification is delivered. 265 // so we need to spin the message loop so the notification is delivered.
273 base::MessageLoop::current()->RunUntilIdle(); 266 base::MessageLoop::current()->RunUntilIdle();
274 } 267 }
275 268
276 MockHostResolver host_resolver_; 269 MockHostResolver host_resolver_;
277 DeterministicMockClientSocketFactory socket_factory_; 270 MockClientSocketFactory socket_factory_;
278 MockCryptoClientStreamFactory crypto_client_stream_factory_; 271 MockCryptoClientStreamFactory crypto_client_stream_factory_;
279 MockRandom random_generator_; 272 MockRandom random_generator_;
280 MockClock* clock_; // Owned by factory_. 273 MockClock* clock_; // Owned by factory_.
281 scoped_refptr<TestTaskRunner> runner_; 274 scoped_refptr<TestTaskRunner> runner_;
282 QuicTestPacketMaker maker_; 275 QuicTestPacketMaker maker_;
283 HttpServerPropertiesImpl http_server_properties_; 276 HttpServerPropertiesImpl http_server_properties_;
284 scoped_ptr<CertVerifier> cert_verifier_; 277 scoped_ptr<CertVerifier> cert_verifier_;
285 scoped_ptr<ChannelIDService> channel_id_service_; 278 scoped_ptr<ChannelIDService> channel_id_service_;
286 TransportSecurityState transport_security_state_; 279 TransportSecurityState transport_security_state_;
287 scoped_ptr<CTVerifier> cert_transparency_verifier_; 280 scoped_ptr<CTVerifier> cert_transparency_verifier_;
(...skipping 24 matching lines...) Expand all
312 int idle_connection_timeout_seconds_; 305 int idle_connection_timeout_seconds_;
313 }; 306 };
314 307
315 INSTANTIATE_TEST_CASE_P(Version, 308 INSTANTIATE_TEST_CASE_P(Version,
316 QuicStreamFactoryTest, 309 QuicStreamFactoryTest,
317 ::testing::ValuesIn(GetTestParams())); 310 ::testing::ValuesIn(GetTestParams()));
318 311
319 TEST_P(QuicStreamFactoryTest, Create) { 312 TEST_P(QuicStreamFactoryTest, Create) {
320 Initialize(); 313 Initialize();
321 314
322 MockRead reads[] = { 315 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
323 MockRead(ASYNC, OK, 0) // EOF 316 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
324 };
325 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
326 socket_factory_.AddSocketDataProvider(&socket_data); 317 socket_factory_.AddSocketDataProvider(&socket_data);
327 socket_data.StopAfter(1);
328 318
329 QuicStreamRequest request(factory_.get()); 319 QuicStreamRequest request(factory_.get());
330 EXPECT_EQ(ERR_IO_PENDING, 320 EXPECT_EQ(ERR_IO_PENDING,
331 request.Request(host_port_pair_, privacy_mode_, 321 request.Request(host_port_pair_, privacy_mode_,
332 /*cert_verify_flags=*/0, host_port_pair_.host(), 322 /*cert_verify_flags=*/0, host_port_pair_.host(),
333 "GET", net_log_, callback_.callback())); 323 "GET", net_log_, callback_.callback()));
334 324
335 EXPECT_EQ(OK, callback_.WaitForResult()); 325 EXPECT_EQ(OK, callback_.WaitForResult());
336 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 326 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
337 EXPECT_TRUE(stream.get()); 327 EXPECT_TRUE(stream.get());
(...skipping 12 matching lines...) Expand all
350 stream = request2.ReleaseStream(); // Will reset stream 5. 340 stream = request2.ReleaseStream(); // Will reset stream 5.
351 stream.reset(); // Will reset stream 7. 341 stream.reset(); // Will reset stream 7.
352 342
353 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 343 EXPECT_TRUE(socket_data.AllReadDataConsumed());
354 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 344 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
355 } 345 }
356 346
357 TEST_P(QuicStreamFactoryTest, CreateZeroRtt) { 347 TEST_P(QuicStreamFactoryTest, CreateZeroRtt) {
358 Initialize(); 348 Initialize();
359 349
360 MockRead reads[] = { 350 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
361 MockRead(ASYNC, OK, 0) // EOF 351 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
362 };
363 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
364 socket_factory_.AddSocketDataProvider(&socket_data); 352 socket_factory_.AddSocketDataProvider(&socket_data);
365 socket_data.StopAfter(1);
366 353
367 crypto_client_stream_factory_.set_handshake_mode( 354 crypto_client_stream_factory_.set_handshake_mode(
368 MockCryptoClientStream::ZERO_RTT); 355 MockCryptoClientStream::ZERO_RTT);
369 host_resolver_.set_synchronous_mode(true); 356 host_resolver_.set_synchronous_mode(true);
370 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 357 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
371 "192.168.0.1", ""); 358 "192.168.0.1", "");
372 359
373 QuicStreamRequest request(factory_.get()); 360 QuicStreamRequest request(factory_.get());
374 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 361 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
375 /*cert_verify_flags=*/0, host_port_pair_.host(), 362 /*cert_verify_flags=*/0, host_port_pair_.host(),
376 "GET", net_log_, callback_.callback())); 363 "GET", net_log_, callback_.callback()));
377 364
378 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 365 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
379 EXPECT_TRUE(stream.get()); 366 EXPECT_TRUE(stream.get());
380 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 367 EXPECT_TRUE(socket_data.AllReadDataConsumed());
381 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 368 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
382 } 369 }
383 370
384 TEST_P(QuicStreamFactoryTest, CreateZeroRttPost) { 371 TEST_P(QuicStreamFactoryTest, CreateZeroRttPost) {
385 Initialize(); 372 Initialize();
386 373
387 MockRead reads[] = { 374 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
388 MockRead(ASYNC, OK, 0) // EOF 375 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
389 };
390 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
391 socket_factory_.AddSocketDataProvider(&socket_data); 376 socket_factory_.AddSocketDataProvider(&socket_data);
392 socket_data.StopAfter(1);
393 377
394 crypto_client_stream_factory_.set_handshake_mode( 378 crypto_client_stream_factory_.set_handshake_mode(
395 MockCryptoClientStream::ZERO_RTT); 379 MockCryptoClientStream::ZERO_RTT);
396 host_resolver_.set_synchronous_mode(true); 380 host_resolver_.set_synchronous_mode(true);
397 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 381 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
398 "192.168.0.1", ""); 382 "192.168.0.1", "");
399 383
400 QuicStreamRequest request(factory_.get()); 384 QuicStreamRequest request(factory_.get());
401 // Posts require handshake confirmation, so this will return asynchronously. 385 // Posts require handshake confirmation, so this will return asynchronously.
402 EXPECT_EQ(ERR_IO_PENDING, 386 EXPECT_EQ(ERR_IO_PENDING,
403 request.Request(host_port_pair_, privacy_mode_, 387 request.Request(host_port_pair_, privacy_mode_,
404 /*cert_verify_flags=*/0, host_port_pair_.host(), 388 /*cert_verify_flags=*/0, host_port_pair_.host(),
405 "POST", net_log_, callback_.callback())); 389 "POST", net_log_, callback_.callback()));
406 390
407 // Confirm the handshake and verify that the stream is created. 391 // Confirm the handshake and verify that the stream is created.
408 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( 392 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
409 QuicSession::HANDSHAKE_CONFIRMED); 393 QuicSession::HANDSHAKE_CONFIRMED);
410 394
411 EXPECT_EQ(OK, callback_.WaitForResult()); 395 EXPECT_EQ(OK, callback_.WaitForResult());
412 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 396 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
413 EXPECT_TRUE(stream.get()); 397 EXPECT_TRUE(stream.get());
414 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 398 EXPECT_TRUE(socket_data.AllReadDataConsumed());
415 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 399 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
416 } 400 }
417 401
418 TEST_P(QuicStreamFactoryTest, NoZeroRttForDifferentHost) { 402 TEST_P(QuicStreamFactoryTest, NoZeroRttForDifferentHost) {
419 Initialize(); 403 Initialize();
420 404
421 MockRead reads[] = { 405 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
422 MockRead(ASYNC, OK, 0), 406 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
423 };
424 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
425 socket_factory_.AddSocketDataProvider(&socket_data); 407 socket_factory_.AddSocketDataProvider(&socket_data);
426 socket_data.StopAfter(1);
427 408
428 crypto_client_stream_factory_.set_handshake_mode( 409 crypto_client_stream_factory_.set_handshake_mode(
429 MockCryptoClientStream::ZERO_RTT); 410 MockCryptoClientStream::ZERO_RTT);
430 host_resolver_.set_synchronous_mode(true); 411 host_resolver_.set_synchronous_mode(true);
431 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 412 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
432 "192.168.0.1", ""); 413 "192.168.0.1", "");
433 414
434 QuicStreamRequest request(factory_.get()); 415 QuicStreamRequest request(factory_.get());
435 int rv = request.Request( 416 int rv = request.Request(
436 host_port_pair_, privacy_mode_, /*cert_verify_flags=*/0, 417 host_port_pair_, privacy_mode_, /*cert_verify_flags=*/0,
437 "different.host.example.com", "GET", net_log_, callback_.callback()); 418 "different.host.example.com", "GET", net_log_, callback_.callback());
438 // If server and origin have different hostnames, then handshake confirmation 419 // If server and origin have different hostnames, then handshake confirmation
439 // should be required, so Request will return asynchronously. 420 // should be required, so Request will return asynchronously.
440 EXPECT_EQ(ERR_IO_PENDING, rv); 421 EXPECT_EQ(ERR_IO_PENDING, rv);
441 // Confirm handshake. 422 // Confirm handshake.
442 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( 423 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
443 QuicSession::HANDSHAKE_CONFIRMED); 424 QuicSession::HANDSHAKE_CONFIRMED);
444 EXPECT_EQ(OK, callback_.WaitForResult()); 425 EXPECT_EQ(OK, callback_.WaitForResult());
445 426
446 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 427 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
447 EXPECT_TRUE(stream.get()); 428 EXPECT_TRUE(stream.get());
448 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 429 EXPECT_TRUE(socket_data.AllReadDataConsumed());
449 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 430 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
450 } 431 }
451 432
452 TEST_P(QuicStreamFactoryTest, GoAway) { 433 TEST_P(QuicStreamFactoryTest, GoAway) {
453 Initialize(); 434 Initialize();
454 435
455 MockRead reads[] = { 436 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
456 MockRead(ASYNC, OK, 0) // EOF 437 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
457 };
458 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
459 socket_factory_.AddSocketDataProvider(&socket_data); 438 socket_factory_.AddSocketDataProvider(&socket_data);
460 socket_data.StopAfter(1);
461 439
462 QuicStreamRequest request(factory_.get()); 440 QuicStreamRequest request(factory_.get());
463 EXPECT_EQ(ERR_IO_PENDING, 441 EXPECT_EQ(ERR_IO_PENDING,
464 request.Request(host_port_pair_, privacy_mode_, 442 request.Request(host_port_pair_, privacy_mode_,
465 /*cert_verify_flags=*/0, host_port_pair_.host(), 443 /*cert_verify_flags=*/0, host_port_pair_.host(),
466 "GET", net_log_, callback_.callback())); 444 "GET", net_log_, callback_.callback()));
467 445
468 EXPECT_EQ(OK, callback_.WaitForResult()); 446 EXPECT_EQ(OK, callback_.WaitForResult());
469 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 447 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
470 EXPECT_TRUE(stream.get()); 448 EXPECT_TRUE(stream.get());
471 449
472 QuicChromiumClientSession* session = 450 QuicChromiumClientSession* session =
473 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 451 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
474 452
475 session->OnGoAway(QuicGoAwayFrame()); 453 session->OnGoAway(QuicGoAwayFrame());
476 454
477 EXPECT_FALSE( 455 EXPECT_FALSE(
478 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 456 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
479 457
480 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 458 EXPECT_TRUE(socket_data.AllReadDataConsumed());
481 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 459 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
482 } 460 }
483 461
484 TEST_P(QuicStreamFactoryTest, Pooling) { 462 TEST_P(QuicStreamFactoryTest, Pooling) {
485 Initialize(); 463 Initialize();
486 464
487 MockRead reads[] = { 465 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
488 MockRead(ASYNC, OK, 0) // EOF 466 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
489 };
490 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
491 socket_factory_.AddSocketDataProvider(&socket_data); 467 socket_factory_.AddSocketDataProvider(&socket_data);
492 socket_data.StopAfter(1);
493 468
494 HostPortPair server2("mail.google.com", kDefaultServerPort); 469 HostPortPair server2("mail.google.com", kDefaultServerPort);
495 host_resolver_.set_synchronous_mode(true); 470 host_resolver_.set_synchronous_mode(true);
496 host_resolver_.rules()->AddIPLiteralRule(kDefaultServerHostName, 471 host_resolver_.rules()->AddIPLiteralRule(kDefaultServerHostName,
497 "192.168.0.1", ""); 472 "192.168.0.1", "");
498 host_resolver_.rules()->AddIPLiteralRule("mail.google.com", "192.168.0.1", 473 host_resolver_.rules()->AddIPLiteralRule("mail.google.com", "192.168.0.1",
499 ""); 474 "");
500 475
501 QuicStreamRequest request(factory_.get()); 476 QuicStreamRequest request(factory_.get());
502 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 477 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
(...skipping 15 matching lines...) Expand all
518 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 493 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
519 494
520 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 495 EXPECT_TRUE(socket_data.AllReadDataConsumed());
521 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 496 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
522 } 497 }
523 498
524 TEST_P(QuicStreamFactoryTest, NoPoolingIfDisabled) { 499 TEST_P(QuicStreamFactoryTest, NoPoolingIfDisabled) {
525 disable_connection_pooling_ = true; 500 disable_connection_pooling_ = true;
526 Initialize(); 501 Initialize();
527 502
528 MockRead reads[] = { 503 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
529 MockRead(ASYNC, OK, 0) // EOF 504 SequencedSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
530 }; 505 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
531 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
532 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
533 socket_factory_.AddSocketDataProvider(&socket_data1); 506 socket_factory_.AddSocketDataProvider(&socket_data1);
534 socket_factory_.AddSocketDataProvider(&socket_data2); 507 socket_factory_.AddSocketDataProvider(&socket_data2);
535 socket_data1.StopAfter(1);
536 socket_data2.StopAfter(1);
537 508
538 HostPortPair server2("mail.google.com", kDefaultServerPort); 509 HostPortPair server2("mail.google.com", kDefaultServerPort);
539 host_resolver_.set_synchronous_mode(true); 510 host_resolver_.set_synchronous_mode(true);
540 host_resolver_.rules()->AddIPLiteralRule(kDefaultServerHostName, 511 host_resolver_.rules()->AddIPLiteralRule(kDefaultServerHostName,
541 "192.168.0.1", ""); 512 "192.168.0.1", "");
542 host_resolver_.rules()->AddIPLiteralRule("mail.google.com", "192.168.0.1", 513 host_resolver_.rules()->AddIPLiteralRule("mail.google.com", "192.168.0.1",
543 ""); 514 "");
544 515
545 QuicStreamRequest request(factory_.get()); 516 QuicStreamRequest request(factory_.get());
546 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 517 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
(...skipping 16 matching lines...) Expand all
563 534
564 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 535 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
565 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 536 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
566 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 537 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
567 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 538 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
568 } 539 }
569 540
570 TEST_P(QuicStreamFactoryTest, NoPoolingAfterGoAway) { 541 TEST_P(QuicStreamFactoryTest, NoPoolingAfterGoAway) {
571 Initialize(); 542 Initialize();
572 543
573 MockRead reads[] = { 544 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
574 MockRead(ASYNC, OK, 0) // EOF 545 SequencedSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
575 }; 546 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
576 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
577 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
578 socket_factory_.AddSocketDataProvider(&socket_data1); 547 socket_factory_.AddSocketDataProvider(&socket_data1);
579 socket_factory_.AddSocketDataProvider(&socket_data2); 548 socket_factory_.AddSocketDataProvider(&socket_data2);
580 socket_data1.StopAfter(1);
581 socket_data2.StopAfter(1);
582 549
583 HostPortPair server2("mail.google.com", kDefaultServerPort); 550 HostPortPair server2("mail.google.com", kDefaultServerPort);
584 host_resolver_.set_synchronous_mode(true); 551 host_resolver_.set_synchronous_mode(true);
585 host_resolver_.rules()->AddIPLiteralRule(kDefaultServerHostName, 552 host_resolver_.rules()->AddIPLiteralRule(kDefaultServerHostName,
586 "192.168.0.1", ""); 553 "192.168.0.1", "");
587 host_resolver_.rules()->AddIPLiteralRule("mail.google.com", "192.168.0.1", 554 host_resolver_.rules()->AddIPLiteralRule("mail.google.com", "192.168.0.1",
588 ""); 555 "");
589 556
590 QuicStreamRequest request(factory_.get()); 557 QuicStreamRequest request(factory_.get());
591 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 558 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
(...skipping 28 matching lines...) Expand all
620 EXPECT_TRUE(QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server2)); 587 EXPECT_TRUE(QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server2));
621 588
622 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 589 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
623 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 590 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
624 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 591 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
625 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 592 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
626 } 593 }
627 594
628 TEST_P(QuicStreamFactoryTest, HttpsPooling) { 595 TEST_P(QuicStreamFactoryTest, HttpsPooling) {
629 Initialize(); 596 Initialize();
630 MockRead reads[] = { 597 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
631 MockRead(ASYNC, OK, 0) // EOF 598 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
632 };
633 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
634 socket_factory_.AddSocketDataProvider(&socket_data); 599 socket_factory_.AddSocketDataProvider(&socket_data);
635 socket_data.StopAfter(1);
636 600
637 HostPortPair server1("www.example.org", 443); 601 HostPortPair server1("www.example.org", 443);
638 HostPortPair server2("mail.example.org", 443); 602 HostPortPair server2("mail.example.org", 443);
639 603
640 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 604 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
641 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 605 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
642 606
643 host_resolver_.set_synchronous_mode(true); 607 host_resolver_.set_synchronous_mode(true);
644 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 608 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
645 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 609 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
(...skipping 17 matching lines...) Expand all
663 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 627 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
664 628
665 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 629 EXPECT_TRUE(socket_data.AllReadDataConsumed());
666 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 630 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
667 } 631 }
668 632
669 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingIfDisabled) { 633 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingIfDisabled) {
670 disable_connection_pooling_ = true; 634 disable_connection_pooling_ = true;
671 Initialize(); 635 Initialize();
672 636
673 MockRead reads[] = { 637 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
674 MockRead(ASYNC, OK, 0) // EOF 638 SequencedSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
675 }; 639 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
676 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
677 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
678 socket_factory_.AddSocketDataProvider(&socket_data1); 640 socket_factory_.AddSocketDataProvider(&socket_data1);
679 socket_factory_.AddSocketDataProvider(&socket_data2); 641 socket_factory_.AddSocketDataProvider(&socket_data2);
680 socket_data1.StopAfter(1);
681 socket_data2.StopAfter(1);
682 642
683 HostPortPair server1("www.example.org", 443); 643 HostPortPair server1("www.example.org", 443);
684 HostPortPair server2("mail.example.org", 443); 644 HostPortPair server2("mail.example.org", 443);
685 645
686 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 646 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
687 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 647 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
688 648
689 host_resolver_.set_synchronous_mode(true); 649 host_resolver_.set_synchronous_mode(true);
690 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 650 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
691 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 651 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
(...skipping 19 matching lines...) Expand all
711 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 671 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
712 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 672 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
713 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 673 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
714 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 674 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
715 } 675 }
716 676
717 class QuicAlternativeServiceCertificateValidationPooling 677 class QuicAlternativeServiceCertificateValidationPooling
718 : public QuicStreamFactoryTest { 678 : public QuicStreamFactoryTest {
719 public: 679 public:
720 void Run(bool valid) { 680 void Run(bool valid) {
721 MockRead reads[] = { 681 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
722 MockRead(ASYNC, OK, 0) // EOF 682 SequencedSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
723 };
724 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
725 socket_factory_.AddSocketDataProvider(&socket_data1); 683 socket_factory_.AddSocketDataProvider(&socket_data1);
726 socket_data1.StopAfter(1);
727 684
728 HostPortPair server1("www.example.org", 443); 685 HostPortPair server1("www.example.org", 443);
729 HostPortPair server2("mail.example.org", 443); 686 HostPortPair server2("mail.example.org", 443);
730 687
731 std::string origin_host(valid ? "mail.example.org" : "invalid.example.org"); 688 std::string origin_host(valid ? "mail.example.org" : "invalid.example.org");
732 HostPortPair alternative("www.example.org", 443); 689 HostPortPair alternative("www.example.org", 443);
733 690
734 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 691 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
735 bool common_name_fallback_used; 692 bool common_name_fallback_used;
736 EXPECT_EQ(valid, 693 EXPECT_EQ(valid,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 Run(true); 740 Run(true);
784 } 741 }
785 742
786 TEST_P(QuicAlternativeServiceCertificateValidationPooling, Invalid) { 743 TEST_P(QuicAlternativeServiceCertificateValidationPooling, Invalid) {
787 Initialize(); 744 Initialize();
788 Run(false); 745 Run(false);
789 } 746 }
790 747
791 TEST_P(QuicStreamFactoryTest, HttpsPoolingWithMatchingPins) { 748 TEST_P(QuicStreamFactoryTest, HttpsPoolingWithMatchingPins) {
792 Initialize(); 749 Initialize();
793 MockRead reads[] = { 750 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
794 MockRead(ASYNC, OK, 0) // EOF 751 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
795 };
796 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
797 socket_factory_.AddSocketDataProvider(&socket_data); 752 socket_factory_.AddSocketDataProvider(&socket_data);
798 socket_data.StopAfter(1);
799 753
800 HostPortPair server1("www.example.org", 443); 754 HostPortPair server1("www.example.org", 443);
801 HostPortPair server2("mail.example.org", 443); 755 HostPortPair server2("mail.example.org", 443);
802 uint8 primary_pin = 1; 756 uint8 primary_pin = 1;
803 uint8 backup_pin = 2; 757 uint8 backup_pin = 2;
804 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin, 758 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin,
805 backup_pin); 759 backup_pin);
806 760
807 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 761 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
808 verify_details.cert_verify_result.public_key_hashes.push_back( 762 verify_details.cert_verify_result.public_key_hashes.push_back(
(...skipping 23 matching lines...) Expand all
832 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 786 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
833 787
834 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 788 EXPECT_TRUE(socket_data.AllReadDataConsumed());
835 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 789 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
836 } 790 }
837 791
838 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingWithMatchingPinsIfDisabled) { 792 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingWithMatchingPinsIfDisabled) {
839 disable_connection_pooling_ = true; 793 disable_connection_pooling_ = true;
840 Initialize(); 794 Initialize();
841 795
842 MockRead reads[] = { 796 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
843 MockRead(ASYNC, OK, 0) // EOF 797 SequencedSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
844 }; 798 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
845 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
846 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
847 socket_factory_.AddSocketDataProvider(&socket_data1); 799 socket_factory_.AddSocketDataProvider(&socket_data1);
848 socket_factory_.AddSocketDataProvider(&socket_data2); 800 socket_factory_.AddSocketDataProvider(&socket_data2);
849 socket_data1.StopAfter(1);
850 socket_data2.StopAfter(1);
851 801
852 HostPortPair server1("www.example.org", 443); 802 HostPortPair server1("www.example.org", 443);
853 HostPortPair server2("mail.example.org", 443); 803 HostPortPair server2("mail.example.org", 443);
854 uint8 primary_pin = 1; 804 uint8 primary_pin = 1;
855 uint8 backup_pin = 2; 805 uint8 backup_pin = 2;
856 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin, 806 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin,
857 backup_pin); 807 backup_pin);
858 808
859 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 809 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
860 verify_details.cert_verify_result.public_key_hashes.push_back( 810 verify_details.cert_verify_result.public_key_hashes.push_back(
(...skipping 23 matching lines...) Expand all
884 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 834 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
885 835
886 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 836 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
887 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 837 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
888 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 838 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
889 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 839 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
890 } 840 }
891 841
892 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingWithDifferentPins) { 842 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingWithDifferentPins) {
893 Initialize(); 843 Initialize();
894 MockRead reads[] = { 844 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
895 MockRead(ASYNC, OK, 0) // EOF 845 SequencedSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
896 }; 846 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
897 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0);
898 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
899 socket_factory_.AddSocketDataProvider(&socket_data1); 847 socket_factory_.AddSocketDataProvider(&socket_data1);
900 socket_factory_.AddSocketDataProvider(&socket_data2); 848 socket_factory_.AddSocketDataProvider(&socket_data2);
901 socket_data1.StopAfter(1);
902 socket_data2.StopAfter(1);
903 849
904 HostPortPair server1("www.example.org", 443); 850 HostPortPair server1("www.example.org", 443);
905 HostPortPair server2("mail.example.org", 443); 851 HostPortPair server2("mail.example.org", 443);
906 uint8 primary_pin = 1; 852 uint8 primary_pin = 1;
907 uint8 backup_pin = 2; 853 uint8 backup_pin = 2;
908 uint8 bad_pin = 3; 854 uint8 bad_pin = 3;
909 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin, 855 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin,
910 backup_pin); 856 backup_pin);
911 857
912 ProofVerifyDetailsChromium verify_details1 = DefaultProofVerifyDetails(); 858 ProofVerifyDetailsChromium verify_details1 = DefaultProofVerifyDetails();
(...skipping 29 matching lines...) Expand all
942 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 888 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
943 889
944 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 890 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
945 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 891 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
946 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 892 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
947 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 893 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
948 } 894 }
949 895
950 TEST_P(QuicStreamFactoryTest, Goaway) { 896 TEST_P(QuicStreamFactoryTest, Goaway) {
951 Initialize(); 897 Initialize();
952 MockRead reads[] = { 898 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
953 MockRead(ASYNC, OK, 0) // EOF 899 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
954 };
955 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
956 socket_data.StopAfter(1);
957 socket_factory_.AddSocketDataProvider(&socket_data); 900 socket_factory_.AddSocketDataProvider(&socket_data);
958 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); 901 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
959 socket_data2.StopAfter(1);
960 socket_factory_.AddSocketDataProvider(&socket_data2); 902 socket_factory_.AddSocketDataProvider(&socket_data2);
961 903
962 QuicStreamRequest request(factory_.get()); 904 QuicStreamRequest request(factory_.get());
963 EXPECT_EQ(ERR_IO_PENDING, 905 EXPECT_EQ(ERR_IO_PENDING,
964 request.Request(host_port_pair_, privacy_mode_, 906 request.Request(host_port_pair_, privacy_mode_,
965 /*cert_verify_flags=*/0, host_port_pair_.host(), 907 /*cert_verify_flags=*/0, host_port_pair_.host(),
966 "GET", net_log_, callback_.callback())); 908 "GET", net_log_, callback_.callback()));
967 909
968 EXPECT_EQ(OK, callback_.WaitForResult()); 910 EXPECT_EQ(OK, callback_.WaitForResult());
969 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 911 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 QuicStreamId stream_id = kClientDataStreamId1; 954 QuicStreamId stream_id = kClientDataStreamId1;
1013 scoped_ptr<QuicEncryptedPacket> client_rst( 955 scoped_ptr<QuicEncryptedPacket> client_rst(
1014 maker_.MakeRstPacket(1, true, stream_id, QUIC_STREAM_CANCELLED)); 956 maker_.MakeRstPacket(1, true, stream_id, QUIC_STREAM_CANCELLED));
1015 MockWrite writes[] = { 957 MockWrite writes[] = {
1016 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 0), 958 MockWrite(ASYNC, client_rst->data(), client_rst->length(), 0),
1017 }; 959 };
1018 scoped_ptr<QuicEncryptedPacket> server_rst( 960 scoped_ptr<QuicEncryptedPacket> server_rst(
1019 maker_.MakeRstPacket(1, false, stream_id, QUIC_STREAM_CANCELLED)); 961 maker_.MakeRstPacket(1, false, stream_id, QUIC_STREAM_CANCELLED));
1020 MockRead reads[] = { 962 MockRead reads[] = {
1021 MockRead(ASYNC, server_rst->data(), server_rst->length(), 1), 963 MockRead(ASYNC, server_rst->data(), server_rst->length(), 1),
1022 MockRead(ASYNC, OK, 2) // EOF 964 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 2)};
1023 }; 965 SequencedSocketData socket_data(reads, arraysize(reads), writes,
1024 DeterministicSocketData socket_data(reads, arraysize(reads), writes, 966 arraysize(writes));
1025 arraysize(writes));
1026 socket_factory_.AddSocketDataProvider(&socket_data); 967 socket_factory_.AddSocketDataProvider(&socket_data);
1027 socket_data.StopAfter(2);
1028 968
1029 HttpRequestInfo request_info; 969 HttpRequestInfo request_info;
1030 std::vector<QuicHttpStream*> streams; 970 std::vector<QuicHttpStream*> streams;
1031 // The MockCryptoClientStream sets max_open_streams to be 971 // The MockCryptoClientStream sets max_open_streams to be
1032 // kDefaultMaxStreamsPerConnection / 2. 972 // kDefaultMaxStreamsPerConnection / 2.
1033 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) { 973 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) {
1034 QuicStreamRequest request(factory_.get()); 974 QuicStreamRequest request(factory_.get());
1035 int rv = request.Request(host_port_pair_, privacy_mode_, 975 int rv = request.Request(host_port_pair_, privacy_mode_,
1036 /*cert_verify_flags=*/0, host_port_pair_.host(), 976 /*cert_verify_flags=*/0, host_port_pair_.host(),
1037 "GET", net_log_, callback_.callback()); 977 "GET", net_log_, callback_.callback());
(...skipping 17 matching lines...) Expand all
1055 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 995 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1056 EXPECT_TRUE(stream); 996 EXPECT_TRUE(stream);
1057 EXPECT_EQ(ERR_IO_PENDING, 997 EXPECT_EQ(ERR_IO_PENDING,
1058 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_, 998 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_,
1059 callback_.callback())); 999 callback_.callback()));
1060 1000
1061 // Close the first stream. 1001 // Close the first stream.
1062 streams.front()->Close(false); 1002 streams.front()->Close(false);
1063 // Trigger exchange of RSTs that in turn allow progress for the last 1003 // Trigger exchange of RSTs that in turn allow progress for the last
1064 // stream. 1004 // stream.
1065 socket_data.RunFor(2);
1066
1067 ASSERT_TRUE(callback_.have_result());
1068 EXPECT_EQ(OK, callback_.WaitForResult()); 1005 EXPECT_EQ(OK, callback_.WaitForResult());
1069 1006
1070 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1007 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1071 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1008 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1072 1009
1073 // Force close of the connection to suppress the generation of RST 1010 // Force close of the connection to suppress the generation of RST
1074 // packets when streams are torn down, which wouldn't be relevant to 1011 // packets when streams are torn down, which wouldn't be relevant to
1075 // this test anyway. 1012 // this test anyway.
1076 QuicChromiumClientSession* session = 1013 QuicChromiumClientSession* session =
1077 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1014 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
1078 session->connection()->CloseConnection(QUIC_PUBLIC_RESET, true); 1015 session->connection()->CloseConnection(QUIC_PUBLIC_RESET, true);
1079 1016
1080 STLDeleteElements(&streams); 1017 STLDeleteElements(&streams);
1081 } 1018 }
1082 1019
1083 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) { 1020 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) {
1084 Initialize(); 1021 Initialize();
1085 DeterministicSocketData socket_data(nullptr, 0, nullptr, 0); 1022 SequencedSocketData socket_data(nullptr, 0, nullptr, 0);
1086 socket_factory_.AddSocketDataProvider(&socket_data); 1023 socket_factory_.AddSocketDataProvider(&socket_data);
1087 1024
1088 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName); 1025 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName);
1089 1026
1090 QuicStreamRequest request(factory_.get()); 1027 QuicStreamRequest request(factory_.get());
1091 EXPECT_EQ(ERR_IO_PENDING, 1028 EXPECT_EQ(ERR_IO_PENDING,
1092 request.Request(host_port_pair_, privacy_mode_, 1029 request.Request(host_port_pair_, privacy_mode_,
1093 /*cert_verify_flags=*/0, host_port_pair_.host(), 1030 /*cert_verify_flags=*/0, host_port_pair_.host(),
1094 "GET", net_log_, callback_.callback())); 1031 "GET", net_log_, callback_.callback()));
1095 1032
1096 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult()); 1033 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult());
1097 1034
1098 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1035 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1099 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1036 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1100 } 1037 }
1101 1038
1102 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) { 1039 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) {
1103 Initialize(); 1040 Initialize();
1104 MockConnect connect(SYNCHRONOUS, ERR_ADDRESS_IN_USE); 1041 MockConnect connect(SYNCHRONOUS, ERR_ADDRESS_IN_USE);
1105 DeterministicSocketData socket_data(nullptr, 0, nullptr, 0); 1042 SequencedSocketData socket_data(nullptr, 0, nullptr, 0);
1106 socket_data.set_connect_data(connect); 1043 socket_data.set_connect_data(connect);
1107 socket_factory_.AddSocketDataProvider(&socket_data); 1044 socket_factory_.AddSocketDataProvider(&socket_data);
1108 socket_data.StopAfter(1);
1109 1045
1110 QuicStreamRequest request(factory_.get()); 1046 QuicStreamRequest request(factory_.get());
1111 EXPECT_EQ(ERR_IO_PENDING, 1047 EXPECT_EQ(ERR_IO_PENDING,
1112 request.Request(host_port_pair_, privacy_mode_, 1048 request.Request(host_port_pair_, privacy_mode_,
1113 /*cert_verify_flags=*/0, host_port_pair_.host(), 1049 /*cert_verify_flags=*/0, host_port_pair_.host(),
1114 "GET", net_log_, callback_.callback())); 1050 "GET", net_log_, callback_.callback()));
1115 1051
1116 EXPECT_EQ(ERR_ADDRESS_IN_USE, callback_.WaitForResult()); 1052 EXPECT_EQ(ERR_ADDRESS_IN_USE, callback_.WaitForResult());
1117 1053
1118 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1054 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1119 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1055 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1120 } 1056 }
1121 1057
1122 TEST_P(QuicStreamFactoryTest, CancelCreate) { 1058 TEST_P(QuicStreamFactoryTest, CancelCreate) {
1123 Initialize(); 1059 Initialize();
1124 MockRead reads[] = { 1060 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1125 MockRead(ASYNC, OK, 0) // EOF 1061 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1126 };
1127 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1128 socket_factory_.AddSocketDataProvider(&socket_data); 1062 socket_factory_.AddSocketDataProvider(&socket_data);
1129 { 1063 {
1130 QuicStreamRequest request(factory_.get()); 1064 QuicStreamRequest request(factory_.get());
1131 EXPECT_EQ(ERR_IO_PENDING, 1065 EXPECT_EQ(ERR_IO_PENDING,
1132 request.Request(host_port_pair_, privacy_mode_, 1066 request.Request(host_port_pair_, privacy_mode_,
1133 /*cert_verify_flags=*/0, host_port_pair_.host(), 1067 /*cert_verify_flags=*/0, host_port_pair_.host(),
1134 "GET", net_log_, callback_.callback())); 1068 "GET", net_log_, callback_.callback()));
1135 } 1069 }
1136 1070
1137 socket_data.StopAfter(1); 1071 base::RunLoop().RunUntilIdle();
1138 base::RunLoop run_loop;
1139 run_loop.RunUntilIdle();
1140 1072
1141 scoped_ptr<QuicHttpStream> stream(CreateFromSession(host_port_pair_)); 1073 scoped_ptr<QuicHttpStream> stream(CreateFromSession(host_port_pair_));
1142 EXPECT_TRUE(stream.get()); 1074 EXPECT_TRUE(stream.get());
1143 stream.reset(); 1075 stream.reset();
1144 1076
1145 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1077 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1146 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1078 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1147 } 1079 }
1148 1080
1149 TEST_P(QuicStreamFactoryTest, CreateConsistentEphemeralPort) { 1081 TEST_P(QuicStreamFactoryTest, CreateConsistentEphemeralPort) {
(...skipping 18 matching lines...) Expand all
1168 // Get a session to the host using the port suggester. 1100 // Get a session to the host using the port suggester.
1169 int original_port = GetSourcePortForNewSessionAndGoAway(host_port_pair_); 1101 int original_port = GetSourcePortForNewSessionAndGoAway(host_port_pair_);
1170 // Verify that the port is different after the goaway. 1102 // Verify that the port is different after the goaway.
1171 EXPECT_NE(original_port, GetSourcePortForNewSession(host_port_pair_)); 1103 EXPECT_NE(original_port, GetSourcePortForNewSession(host_port_pair_));
1172 // Since the previous session did not goaway we should see the original port. 1104 // Since the previous session did not goaway we should see the original port.
1173 EXPECT_EQ(original_port, GetSourcePortForNewSession(host_port_pair_)); 1105 EXPECT_EQ(original_port, GetSourcePortForNewSession(host_port_pair_));
1174 } 1106 }
1175 1107
1176 TEST_P(QuicStreamFactoryTest, CloseAllSessions) { 1108 TEST_P(QuicStreamFactoryTest, CloseAllSessions) {
1177 Initialize(); 1109 Initialize();
1178 MockRead reads[] = { 1110 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1179 MockRead(ASYNC, 0, 0) // EOF
1180 };
1181 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); 1111 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket());
1182 std::vector<MockWrite> writes; 1112 std::vector<MockWrite> writes;
1183 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); 1113 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1));
1184 DeterministicSocketData socket_data(reads, arraysize(reads), 1114 SequencedSocketData socket_data(reads, arraysize(reads),
1185 writes.empty() ? nullptr : &writes[0], 1115 writes.empty() ? nullptr : &writes[0],
1186 writes.size()); 1116 writes.size());
1187 socket_factory_.AddSocketDataProvider(&socket_data); 1117 socket_factory_.AddSocketDataProvider(&socket_data);
1188 socket_data.StopAfter(1);
1189 1118
1190 MockRead reads2[] = { 1119 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1191 MockRead(ASYNC, 0, 0) // EOF 1120 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1192 };
1193 DeterministicSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1194 socket_factory_.AddSocketDataProvider(&socket_data2); 1121 socket_factory_.AddSocketDataProvider(&socket_data2);
1195 socket_data2.StopAfter(1);
1196 1122
1197 QuicStreamRequest request(factory_.get()); 1123 QuicStreamRequest request(factory_.get());
1198 EXPECT_EQ(ERR_IO_PENDING, 1124 EXPECT_EQ(ERR_IO_PENDING,
1199 request.Request(host_port_pair_, privacy_mode_, 1125 request.Request(host_port_pair_, privacy_mode_,
1200 /*cert_verify_flags=*/0, host_port_pair_.host(), 1126 /*cert_verify_flags=*/0, host_port_pair_.host(),
1201 "GET", net_log_, callback_.callback())); 1127 "GET", net_log_, callback_.callback()));
1202 1128
1203 EXPECT_EQ(OK, callback_.WaitForResult()); 1129 EXPECT_EQ(OK, callback_.WaitForResult());
1204 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1130 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1205 HttpRequestInfo request_info; 1131 HttpRequestInfo request_info;
(...skipping 21 matching lines...) Expand all
1227 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1153 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1228 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1154 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1229 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1155 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1230 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1156 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1231 } 1157 }
1232 1158
1233 TEST_P(QuicStreamFactoryTest, OnIPAddressChanged) { 1159 TEST_P(QuicStreamFactoryTest, OnIPAddressChanged) {
1234 close_sessions_on_ip_change_ = true; 1160 close_sessions_on_ip_change_ = true;
1235 Initialize(); 1161 Initialize();
1236 1162
1237 MockRead reads[] = { 1163 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1238 MockRead(ASYNC, 0, 0) // EOF
1239 };
1240 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); 1164 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket());
1241 std::vector<MockWrite> writes; 1165 std::vector<MockWrite> writes;
1242 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); 1166 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1));
1243 DeterministicSocketData socket_data(reads, arraysize(reads), 1167 SequencedSocketData socket_data(reads, arraysize(reads),
1244 writes.empty() ? nullptr : &writes[0], 1168 writes.empty() ? nullptr : &writes[0],
1245 writes.size()); 1169 writes.size());
1246 socket_factory_.AddSocketDataProvider(&socket_data); 1170 socket_factory_.AddSocketDataProvider(&socket_data);
1247 socket_data.StopAfter(1);
1248 1171
1249 MockRead reads2[] = { 1172 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1250 MockRead(ASYNC, 0, 0) // EOF 1173 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1251 };
1252 DeterministicSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1253 socket_factory_.AddSocketDataProvider(&socket_data2); 1174 socket_factory_.AddSocketDataProvider(&socket_data2);
1254 socket_data2.StopAfter(1);
1255 1175
1256 QuicStreamRequest request(factory_.get()); 1176 QuicStreamRequest request(factory_.get());
1257 EXPECT_EQ(ERR_IO_PENDING, 1177 EXPECT_EQ(ERR_IO_PENDING,
1258 request.Request(host_port_pair_, privacy_mode_, 1178 request.Request(host_port_pair_, privacy_mode_,
1259 /*cert_verify_flags=*/0, host_port_pair_.host(), 1179 /*cert_verify_flags=*/0, host_port_pair_.host(),
1260 "GET", net_log_, callback_.callback())); 1180 "GET", net_log_, callback_.callback()));
1261 1181
1262 EXPECT_EQ(OK, callback_.WaitForResult()); 1182 EXPECT_EQ(OK, callback_.WaitForResult());
1263 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1183 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1264 HttpRequestInfo request_info; 1184 HttpRequestInfo request_info;
(...skipping 20 matching lines...) Expand all
1285 stream.reset(); // Will reset stream 3. 1205 stream.reset(); // Will reset stream 3.
1286 1206
1287 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1207 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1288 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1208 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1289 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1209 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1290 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1210 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1291 } 1211 }
1292 1212
1293 TEST_P(QuicStreamFactoryTest, OnSSLConfigChanged) { 1213 TEST_P(QuicStreamFactoryTest, OnSSLConfigChanged) {
1294 Initialize(); 1214 Initialize();
1295 MockRead reads[] = { 1215 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1296 MockRead(ASYNC, 0, 0) // EOF
1297 };
1298 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); 1216 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket());
1299 std::vector<MockWrite> writes; 1217 std::vector<MockWrite> writes;
1300 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); 1218 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1));
1301 DeterministicSocketData socket_data(reads, arraysize(reads), 1219 SequencedSocketData socket_data(reads, arraysize(reads),
1302 writes.empty() ? nullptr : &writes[0], 1220 writes.empty() ? nullptr : &writes[0],
1303 writes.size()); 1221 writes.size());
1304 socket_factory_.AddSocketDataProvider(&socket_data); 1222 socket_factory_.AddSocketDataProvider(&socket_data);
1305 socket_data.StopAfter(1);
1306 1223
1307 MockRead reads2[] = { 1224 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1308 MockRead(ASYNC, 0, 0) // EOF 1225 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1309 };
1310 DeterministicSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1311 socket_factory_.AddSocketDataProvider(&socket_data2); 1226 socket_factory_.AddSocketDataProvider(&socket_data2);
1312 socket_data2.StopAfter(1);
1313 1227
1314 QuicStreamRequest request(factory_.get()); 1228 QuicStreamRequest request(factory_.get());
1315 EXPECT_EQ(ERR_IO_PENDING, 1229 EXPECT_EQ(ERR_IO_PENDING,
1316 request.Request(host_port_pair_, privacy_mode_, 1230 request.Request(host_port_pair_, privacy_mode_,
1317 /*cert_verify_flags=*/0, host_port_pair_.host(), 1231 /*cert_verify_flags=*/0, host_port_pair_.host(),
1318 "GET", net_log_, callback_.callback())); 1232 "GET", net_log_, callback_.callback()));
1319 1233
1320 EXPECT_EQ(OK, callback_.WaitForResult()); 1234 EXPECT_EQ(OK, callback_.WaitForResult());
1321 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1235 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1322 HttpRequestInfo request_info; 1236 HttpRequestInfo request_info;
(...skipping 19 matching lines...) Expand all
1342 stream.reset(); // Will reset stream 3. 1256 stream.reset(); // Will reset stream 3.
1343 1257
1344 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1258 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1345 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1259 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1346 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1260 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1347 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1261 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1348 } 1262 }
1349 1263
1350 TEST_P(QuicStreamFactoryTest, OnCertAdded) { 1264 TEST_P(QuicStreamFactoryTest, OnCertAdded) {
1351 Initialize(); 1265 Initialize();
1352 MockRead reads[] = { 1266 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1353 MockRead(ASYNC, 0, 0) // EOF
1354 };
1355 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); 1267 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket());
1356 std::vector<MockWrite> writes; 1268 std::vector<MockWrite> writes;
1357 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); 1269 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1));
1358 DeterministicSocketData socket_data(reads, arraysize(reads), 1270 SequencedSocketData socket_data(reads, arraysize(reads),
1359 writes.empty() ? nullptr : &writes[0], 1271 writes.empty() ? nullptr : &writes[0],
1360 writes.size()); 1272 writes.size());
1361 socket_factory_.AddSocketDataProvider(&socket_data); 1273 socket_factory_.AddSocketDataProvider(&socket_data);
1362 socket_data.StopAfter(1);
1363 1274
1364 MockRead reads2[] = { 1275 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1365 MockRead(ASYNC, 0, 0) // EOF 1276 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1366 };
1367 DeterministicSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1368 socket_factory_.AddSocketDataProvider(&socket_data2); 1277 socket_factory_.AddSocketDataProvider(&socket_data2);
1369 socket_data2.StopAfter(1);
1370 1278
1371 QuicStreamRequest request(factory_.get()); 1279 QuicStreamRequest request(factory_.get());
1372 EXPECT_EQ(ERR_IO_PENDING, 1280 EXPECT_EQ(ERR_IO_PENDING,
1373 request.Request(host_port_pair_, privacy_mode_, 1281 request.Request(host_port_pair_, privacy_mode_,
1374 /*cert_verify_flags=*/0, host_port_pair_.host(), 1282 /*cert_verify_flags=*/0, host_port_pair_.host(),
1375 "GET", net_log_, callback_.callback())); 1283 "GET", net_log_, callback_.callback()));
1376 1284
1377 EXPECT_EQ(OK, callback_.WaitForResult()); 1285 EXPECT_EQ(OK, callback_.WaitForResult());
1378 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1286 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1379 HttpRequestInfo request_info; 1287 HttpRequestInfo request_info;
(...skipping 20 matching lines...) Expand all
1400 stream.reset(); // Will reset stream 3. 1308 stream.reset(); // Will reset stream 3.
1401 1309
1402 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1310 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1403 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1311 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1404 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1312 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1405 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1313 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1406 } 1314 }
1407 1315
1408 TEST_P(QuicStreamFactoryTest, OnCACertChanged) { 1316 TEST_P(QuicStreamFactoryTest, OnCACertChanged) {
1409 Initialize(); 1317 Initialize();
1410 MockRead reads[] = { 1318 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1411 MockRead(ASYNC, 0, 0) // EOF
1412 };
1413 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); 1319 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket());
1414 std::vector<MockWrite> writes; 1320 std::vector<MockWrite> writes;
1415 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); 1321 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1));
1416 DeterministicSocketData socket_data(reads, arraysize(reads), 1322 SequencedSocketData socket_data(reads, arraysize(reads),
1417 writes.empty() ? nullptr : &writes[0], 1323 writes.empty() ? nullptr : &writes[0],
1418 writes.size()); 1324 writes.size());
1419 socket_factory_.AddSocketDataProvider(&socket_data); 1325 socket_factory_.AddSocketDataProvider(&socket_data);
1420 socket_data.StopAfter(1);
1421 1326
1422 MockRead reads2[] = { 1327 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1423 MockRead(ASYNC, 0, 0) // EOF 1328 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1424 };
1425 DeterministicSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1426 socket_factory_.AddSocketDataProvider(&socket_data2); 1329 socket_factory_.AddSocketDataProvider(&socket_data2);
1427 socket_data2.StopAfter(1);
1428 1330
1429 QuicStreamRequest request(factory_.get()); 1331 QuicStreamRequest request(factory_.get());
1430 EXPECT_EQ(ERR_IO_PENDING, 1332 EXPECT_EQ(ERR_IO_PENDING,
1431 request.Request(host_port_pair_, privacy_mode_, 1333 request.Request(host_port_pair_, privacy_mode_,
1432 /*cert_verify_flags=*/0, host_port_pair_.host(), 1334 /*cert_verify_flags=*/0, host_port_pair_.host(),
1433 "GET", net_log_, callback_.callback())); 1335 "GET", net_log_, callback_.callback()));
1434 1336
1435 EXPECT_EQ(OK, callback_.WaitForResult()); 1337 EXPECT_EQ(OK, callback_.WaitForResult());
1436 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1338 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
1437 HttpRequestInfo request_info; 1339 HttpRequestInfo request_info;
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
1536 1438
1537 TEST_P(QuicStreamFactoryTest, RacingConnections) { 1439 TEST_P(QuicStreamFactoryTest, RacingConnections) {
1538 disable_disk_cache_ = false; 1440 disable_disk_cache_ = false;
1539 Initialize(); 1441 Initialize();
1540 1442
1541 if (!GetParam().enable_connection_racing) 1443 if (!GetParam().enable_connection_racing)
1542 return; 1444 return;
1543 1445
1544 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); 1446 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
1545 1447
1546 MockRead reads[] = { 1448 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1547 MockRead(ASYNC, OK, 0) // EOF 1449 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1548 };
1549 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1550 socket_factory_.AddSocketDataProvider(&socket_data); 1450 socket_factory_.AddSocketDataProvider(&socket_data);
1551 socket_data.StopAfter(1);
1552 1451
1553 MockRead reads2[] = { 1452 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1554 MockRead(ASYNC, 0, 0) // EOF 1453 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1555 };
1556 DeterministicSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1557 socket_factory_.AddSocketDataProvider(&socket_data2); 1454 socket_factory_.AddSocketDataProvider(&socket_data2);
1558 socket_data2.StopAfter(1);
1559 1455
1560 const AlternativeService alternative_service1(QUIC, host_port_pair_.host(), 1456 const AlternativeService alternative_service1(QUIC, host_port_pair_.host(),
1561 host_port_pair_.port()); 1457 host_port_pair_.port());
1562 AlternativeServiceInfoVector alternative_service_info_vector; 1458 AlternativeServiceInfoVector alternative_service_info_vector;
1563 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 1459 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
1564 alternative_service_info_vector.push_back( 1460 alternative_service_info_vector.push_back(
1565 AlternativeServiceInfo(alternative_service1, 1.0, expiration)); 1461 AlternativeServiceInfo(alternative_service1, 1.0, expiration));
1566 1462
1567 http_server_properties_.SetAlternativeServices( 1463 http_server_properties_.SetAlternativeServices(
1568 host_port_pair_, alternative_service_info_vector); 1464 host_port_pair_, alternative_service_info_vector);
(...skipping 21 matching lines...) Expand all
1590 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1486 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1591 EXPECT_EQ(0u, QuicStreamFactoryPeer::GetNumberOfActiveJobs(factory_.get(), 1487 EXPECT_EQ(0u, QuicStreamFactoryPeer::GetNumberOfActiveJobs(factory_.get(),
1592 server_id)); 1488 server_id));
1593 } 1489 }
1594 1490
1595 TEST_P(QuicStreamFactoryTest, EnableNotLoadFromDiskCache) { 1491 TEST_P(QuicStreamFactoryTest, EnableNotLoadFromDiskCache) {
1596 disable_disk_cache_ = true; 1492 disable_disk_cache_ = true;
1597 Initialize(); 1493 Initialize();
1598 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); 1494 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
1599 1495
1600 MockRead reads[] = { 1496 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1601 MockRead(ASYNC, OK, 0) // EOF 1497 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1602 };
1603 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1604 socket_factory_.AddSocketDataProvider(&socket_data); 1498 socket_factory_.AddSocketDataProvider(&socket_data);
1605 socket_data.StopAfter(1);
1606 1499
1607 crypto_client_stream_factory_.set_handshake_mode( 1500 crypto_client_stream_factory_.set_handshake_mode(
1608 MockCryptoClientStream::ZERO_RTT); 1501 MockCryptoClientStream::ZERO_RTT);
1609 host_resolver_.set_synchronous_mode(true); 1502 host_resolver_.set_synchronous_mode(true);
1610 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 1503 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
1611 "192.168.0.1", ""); 1504 "192.168.0.1", "");
1612 1505
1613 QuicStreamRequest request(factory_.get()); 1506 QuicStreamRequest request(factory_.get());
1614 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 1507 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
1615 /*cert_verify_flags=*/0, host_port_pair_.host(), 1508 /*cert_verify_flags=*/0, host_port_pair_.host(),
(...skipping 13 matching lines...) Expand all
1629 disable_disk_cache_ = false; 1522 disable_disk_cache_ = false;
1630 max_number_of_lossy_connections_ = 2; 1523 max_number_of_lossy_connections_ = 2;
1631 Initialize(); 1524 Initialize();
1632 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); 1525 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
1633 1526
1634 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 1527 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
1635 host_port_pair_.port())); 1528 host_port_pair_.port()));
1636 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections( 1529 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections(
1637 factory_.get(), host_port_pair_.port())); 1530 factory_.get(), host_port_pair_.port()));
1638 1531
1639 MockRead reads[] = { 1532 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1640 MockRead(ASYNC, OK, 0) // EOF 1533 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1641 };
1642 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1643 socket_factory_.AddSocketDataProvider(&socket_data); 1534 socket_factory_.AddSocketDataProvider(&socket_data);
1644 socket_data.StopAfter(1);
1645 1535
1646 DeterministicSocketData socket_data2(nullptr, 0, nullptr, 0); 1536 SequencedSocketData socket_data2(nullptr, 0, nullptr, 0);
1647 socket_factory_.AddSocketDataProvider(&socket_data2); 1537 socket_factory_.AddSocketDataProvider(&socket_data2);
1648 socket_data2.StopAfter(1);
1649 1538
1650 DeterministicSocketData socket_data3(nullptr, 0, nullptr, 0); 1539 SequencedSocketData socket_data3(nullptr, 0, nullptr, 0);
1651 socket_factory_.AddSocketDataProvider(&socket_data3); 1540 socket_factory_.AddSocketDataProvider(&socket_data3);
1652 socket_data3.StopAfter(1);
1653 1541
1654 DeterministicSocketData socket_data4(nullptr, 0, nullptr, 0); 1542 SequencedSocketData socket_data4(nullptr, 0, nullptr, 0);
1655 socket_factory_.AddSocketDataProvider(&socket_data4); 1543 socket_factory_.AddSocketDataProvider(&socket_data4);
1656 socket_data4.StopAfter(1);
1657 1544
1658 HostPortPair server2("mail.example.org", kDefaultServerPort); 1545 HostPortPair server2("mail.example.org", kDefaultServerPort);
1659 HostPortPair server3("docs.example.org", kDefaultServerPort); 1546 HostPortPair server3("docs.example.org", kDefaultServerPort);
1660 HostPortPair server4("images.example.org", kDefaultServerPort); 1547 HostPortPair server4("images.example.org", kDefaultServerPort);
1661 1548
1662 crypto_client_stream_factory_.set_handshake_mode( 1549 crypto_client_stream_factory_.set_handshake_mode(
1663 MockCryptoClientStream::ZERO_RTT); 1550 MockCryptoClientStream::ZERO_RTT);
1664 host_resolver_.set_synchronous_mode(true); 1551 host_resolver_.set_synchronous_mode(true);
1665 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 1552 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
1666 "192.168.0.1", ""); 1553 "192.168.0.1", "");
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1802 disable_disk_cache_ = false; 1689 disable_disk_cache_ = false;
1803 threshold_public_resets_post_handshake_ = 2; 1690 threshold_public_resets_post_handshake_ = 2;
1804 Initialize(); 1691 Initialize();
1805 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); 1692 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
1806 1693
1807 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 1694 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
1808 host_port_pair_.port())); 1695 host_port_pair_.port()));
1809 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections( 1696 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections(
1810 factory_.get(), host_port_pair_.port())); 1697 factory_.get(), host_port_pair_.port()));
1811 1698
1812 MockRead reads[] = { 1699 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1813 MockRead(ASYNC, OK, 0) // EOF 1700 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1814 };
1815 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1816 socket_factory_.AddSocketDataProvider(&socket_data); 1701 socket_factory_.AddSocketDataProvider(&socket_data);
1817 socket_data.StopAfter(1);
1818 1702
1819 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); 1703 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
1820 socket_factory_.AddSocketDataProvider(&socket_data2); 1704 socket_factory_.AddSocketDataProvider(&socket_data2);
1821 socket_data2.StopAfter(1);
1822 1705
1823 HostPortPair server2("mail.example.org", kDefaultServerPort); 1706 HostPortPair server2("mail.example.org", kDefaultServerPort);
1824 1707
1825 crypto_client_stream_factory_.set_handshake_mode( 1708 crypto_client_stream_factory_.set_handshake_mode(
1826 MockCryptoClientStream::CONFIRM_HANDSHAKE); 1709 MockCryptoClientStream::CONFIRM_HANDSHAKE);
1827 host_resolver_.set_synchronous_mode(true); 1710 host_resolver_.set_synchronous_mode(true);
1828 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 1711 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
1829 "192.168.0.1", ""); 1712 "192.168.0.1", "");
1830 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1713 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1831 1714
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1886 disable_disk_cache_ = true; 1769 disable_disk_cache_ = true;
1887 threshold_timeouts_with_open_streams_ = 2; 1770 threshold_timeouts_with_open_streams_ = 2;
1888 Initialize(); 1771 Initialize();
1889 1772
1890 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); 1773 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
1891 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 1774 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
1892 host_port_pair_.port())); 1775 host_port_pair_.port()));
1893 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections( 1776 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections(
1894 factory_.get(), host_port_pair_.port())); 1777 factory_.get(), host_port_pair_.port()));
1895 1778
1896 MockRead reads[] = { 1779 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1897 MockRead(ASYNC, OK, 0) // EOF 1780 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1898 };
1899 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1900 socket_factory_.AddSocketDataProvider(&socket_data); 1781 socket_factory_.AddSocketDataProvider(&socket_data);
1901 socket_data.StopAfter(1);
1902 1782
1903 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); 1783 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
1904 socket_factory_.AddSocketDataProvider(&socket_data2); 1784 socket_factory_.AddSocketDataProvider(&socket_data2);
1905 socket_data2.StopAfter(1);
1906 1785
1907 HostPortPair server2("mail.example.org", kDefaultServerPort); 1786 HostPortPair server2("mail.example.org", kDefaultServerPort);
1908 1787
1909 crypto_client_stream_factory_.set_handshake_mode( 1788 crypto_client_stream_factory_.set_handshake_mode(
1910 MockCryptoClientStream::CONFIRM_HANDSHAKE); 1789 MockCryptoClientStream::CONFIRM_HANDSHAKE);
1911 host_resolver_.set_synchronous_mode(true); 1790 host_resolver_.set_synchronous_mode(true);
1912 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 1791 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
1913 "192.168.0.1", ""); 1792 "192.168.0.1", "");
1914 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1793 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1915 1794
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1976 TEST_P(QuicStreamFactoryTest, PublicResetPostHandshakeTwoOfThree) { 1855 TEST_P(QuicStreamFactoryTest, PublicResetPostHandshakeTwoOfThree) {
1977 disable_disk_cache_ = true; 1856 disable_disk_cache_ = true;
1978 threshold_public_resets_post_handshake_ = 2; 1857 threshold_public_resets_post_handshake_ = 2;
1979 Initialize(); 1858 Initialize();
1980 1859
1981 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 1860 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
1982 host_port_pair_.port())); 1861 host_port_pair_.port()));
1983 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections( 1862 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections(
1984 factory_.get(), host_port_pair_.port())); 1863 factory_.get(), host_port_pair_.port()));
1985 1864
1986 MockRead reads[] = { 1865 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1987 MockRead(ASYNC, OK, 0) // EOF 1866 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1988 };
1989 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
1990 socket_factory_.AddSocketDataProvider(&socket_data); 1867 socket_factory_.AddSocketDataProvider(&socket_data);
1991 socket_data.StopAfter(1);
1992 1868
1993 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); 1869 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
1994 socket_factory_.AddSocketDataProvider(&socket_data2); 1870 socket_factory_.AddSocketDataProvider(&socket_data2);
1995 socket_data2.StopAfter(1);
1996 1871
1997 DeterministicSocketData socket_data3(reads, arraysize(reads), nullptr, 0); 1872 SequencedSocketData socket_data3(reads, arraysize(reads), nullptr, 0);
1998 socket_factory_.AddSocketDataProvider(&socket_data3); 1873 socket_factory_.AddSocketDataProvider(&socket_data3);
1999 socket_data3.StopAfter(1);
2000 1874
2001 HostPortPair server2("mail.example.org", kDefaultServerPort); 1875 HostPortPair server2("mail.example.org", kDefaultServerPort);
2002 HostPortPair server3("docs.example.org", kDefaultServerPort); 1876 HostPortPair server3("docs.example.org", kDefaultServerPort);
2003 1877
2004 crypto_client_stream_factory_.set_handshake_mode( 1878 crypto_client_stream_factory_.set_handshake_mode(
2005 MockCryptoClientStream::CONFIRM_HANDSHAKE); 1879 MockCryptoClientStream::CONFIRM_HANDSHAKE);
2006 host_resolver_.set_synchronous_mode(true); 1880 host_resolver_.set_synchronous_mode(true);
2007 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 1881 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2008 "192.168.0.1", ""); 1882 "192.168.0.1", "");
2009 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1883 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
2091 disable_disk_cache_ = true; 1965 disable_disk_cache_ = true;
2092 threshold_public_resets_post_handshake_ = 2; 1966 threshold_public_resets_post_handshake_ = 2;
2093 Initialize(); 1967 Initialize();
2094 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); 1968 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
2095 1969
2096 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 1970 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2097 host_port_pair_.port())); 1971 host_port_pair_.port()));
2098 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections( 1972 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections(
2099 factory_.get(), host_port_pair_.port())); 1973 factory_.get(), host_port_pair_.port()));
2100 1974
2101 MockRead reads[] = { 1975 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
2102 MockRead(ASYNC, OK, 0) // EOF 1976 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
2103 };
2104 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
2105 socket_factory_.AddSocketDataProvider(&socket_data); 1977 socket_factory_.AddSocketDataProvider(&socket_data);
2106 socket_data.StopAfter(1);
2107 1978
2108 // DeterministicSocketData socket_data2(nullptr, 0, nullptr, 0); 1979 // SequencedSocketData socket_data2(nullptr, 0, nullptr, 0);
2109 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); 1980 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
2110 socket_factory_.AddSocketDataProvider(&socket_data2); 1981 socket_factory_.AddSocketDataProvider(&socket_data2);
2111 socket_data2.StopAfter(1);
2112 1982
2113 DeterministicSocketData socket_data3(reads, arraysize(reads), nullptr, 0); 1983 SequencedSocketData socket_data3(reads, arraysize(reads), nullptr, 0);
2114 socket_factory_.AddSocketDataProvider(&socket_data3); 1984 socket_factory_.AddSocketDataProvider(&socket_data3);
2115 socket_data3.StopAfter(1);
2116 1985
2117 HostPortPair server2("mail.example.org", kDefaultServerPort); 1986 HostPortPair server2("mail.example.org", kDefaultServerPort);
2118 HostPortPair server3("docs.example.org", kDefaultServerPort); 1987 HostPortPair server3("docs.example.org", kDefaultServerPort);
2119 1988
2120 crypto_client_stream_factory_.set_handshake_mode( 1989 crypto_client_stream_factory_.set_handshake_mode(
2121 MockCryptoClientStream::CONFIRM_HANDSHAKE); 1990 MockCryptoClientStream::CONFIRM_HANDSHAKE);
2122 host_resolver_.set_synchronous_mode(true); 1991 host_resolver_.set_synchronous_mode(true);
2123 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 1992 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2124 "192.168.0.1", ""); 1993 "192.168.0.1", "");
2125 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1994 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
2214 disable_disk_cache_ = true; 2083 disable_disk_cache_ = true;
2215 threshold_public_resets_post_handshake_ = 2; 2084 threshold_public_resets_post_handshake_ = 2;
2216 Initialize(); 2085 Initialize();
2217 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); 2086 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
2218 2087
2219 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 2088 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2220 host_port_pair_.port())); 2089 host_port_pair_.port()));
2221 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections( 2090 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections(
2222 factory_.get(), host_port_pair_.port())); 2091 factory_.get(), host_port_pair_.port()));
2223 2092
2224 MockRead reads[] = { 2093 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
2225 MockRead(ASYNC, OK, 0) // EOF 2094 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
2226 };
2227 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
2228 socket_factory_.AddSocketDataProvider(&socket_data); 2095 socket_factory_.AddSocketDataProvider(&socket_data);
2229 socket_data.StopAfter(1);
2230 2096
2231 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); 2097 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
2232 socket_factory_.AddSocketDataProvider(&socket_data2); 2098 socket_factory_.AddSocketDataProvider(&socket_data2);
2233 socket_data2.StopAfter(1);
2234 2099
2235 DeterministicSocketData socket_data3(reads, arraysize(reads), nullptr, 0); 2100 SequencedSocketData socket_data3(reads, arraysize(reads), nullptr, 0);
2236 socket_factory_.AddSocketDataProvider(&socket_data3); 2101 socket_factory_.AddSocketDataProvider(&socket_data3);
2237 socket_data3.StopAfter(1);
2238 2102
2239 DeterministicSocketData socket_data4(reads, arraysize(reads), nullptr, 0); 2103 SequencedSocketData socket_data4(reads, arraysize(reads), nullptr, 0);
2240 socket_factory_.AddSocketDataProvider(&socket_data4); 2104 socket_factory_.AddSocketDataProvider(&socket_data4);
2241 socket_data4.StopAfter(1);
2242 2105
2243 HostPortPair server2("mail.example.org", kDefaultServerPort); 2106 HostPortPair server2("mail.example.org", kDefaultServerPort);
2244 HostPortPair server3("docs.example.org", kDefaultServerPort); 2107 HostPortPair server3("docs.example.org", kDefaultServerPort);
2245 HostPortPair server4("images.example.org", kDefaultServerPort); 2108 HostPortPair server4("images.example.org", kDefaultServerPort);
2246 2109
2247 crypto_client_stream_factory_.set_handshake_mode( 2110 crypto_client_stream_factory_.set_handshake_mode(
2248 MockCryptoClientStream::CONFIRM_HANDSHAKE); 2111 MockCryptoClientStream::CONFIRM_HANDSHAKE);
2249 host_resolver_.set_synchronous_mode(true); 2112 host_resolver_.set_synchronous_mode(true);
2250 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 2113 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2251 "192.168.0.1", ""); 2114 "192.168.0.1", "");
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
2354 disable_disk_cache_ = true; 2217 disable_disk_cache_ = true;
2355 threshold_public_resets_post_handshake_ = 2; 2218 threshold_public_resets_post_handshake_ = 2;
2356 Initialize(); 2219 Initialize();
2357 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get()); 2220 QuicStreamFactoryPeer::SetTaskRunner(factory_.get(), runner_.get());
2358 2221
2359 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 2222 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2360 host_port_pair_.port())); 2223 host_port_pair_.port()));
2361 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections( 2224 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumberOfLossyConnections(
2362 factory_.get(), host_port_pair_.port())); 2225 factory_.get(), host_port_pair_.port()));
2363 2226
2364 MockRead reads[] = { 2227 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
2365 MockRead(ASYNC, OK, 0) // EOF 2228 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
2366 };
2367 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
2368 socket_factory_.AddSocketDataProvider(&socket_data); 2229 socket_factory_.AddSocketDataProvider(&socket_data);
2369 socket_data.StopAfter(1);
2370 2230
2371 // DeterministicSocketData socket_data2(nullptr, 0, nullptr, 0); 2231 // SequencedSocketData socket_data2(nullptr, 0, nullptr, 0);
2372 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); 2232 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
2373 socket_factory_.AddSocketDataProvider(&socket_data2); 2233 socket_factory_.AddSocketDataProvider(&socket_data2);
2374 socket_data2.StopAfter(1);
2375 2234
2376 DeterministicSocketData socket_data3(reads, arraysize(reads), nullptr, 0); 2235 SequencedSocketData socket_data3(reads, arraysize(reads), nullptr, 0);
2377 socket_factory_.AddSocketDataProvider(&socket_data3); 2236 socket_factory_.AddSocketDataProvider(&socket_data3);
2378 socket_data3.StopAfter(1);
2379 2237
2380 DeterministicSocketData socket_data4(reads, arraysize(reads), nullptr, 0); 2238 SequencedSocketData socket_data4(reads, arraysize(reads), nullptr, 0);
2381 socket_factory_.AddSocketDataProvider(&socket_data4); 2239 socket_factory_.AddSocketDataProvider(&socket_data4);
2382 socket_data4.StopAfter(1);
2383 2240
2384 HostPortPair server2("mail.example.org", kDefaultServerPort); 2241 HostPortPair server2("mail.example.org", kDefaultServerPort);
2385 HostPortPair server3("docs.example.org", kDefaultServerPort); 2242 HostPortPair server3("docs.example.org", kDefaultServerPort);
2386 HostPortPair server4("images.example.org", kDefaultServerPort); 2243 HostPortPair server4("images.example.org", kDefaultServerPort);
2387 2244
2388 crypto_client_stream_factory_.set_handshake_mode( 2245 crypto_client_stream_factory_.set_handshake_mode(
2389 MockCryptoClientStream::CONFIRM_HANDSHAKE); 2246 MockCryptoClientStream::CONFIRM_HANDSHAKE);
2390 host_resolver_.set_synchronous_mode(true); 2247 host_resolver_.set_synchronous_mode(true);
2391 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 2248 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2392 "192.168.0.1", ""); 2249 "192.168.0.1", "");
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
2495 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); 2352 EXPECT_TRUE(socket_data3.AllReadDataConsumed());
2496 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); 2353 EXPECT_TRUE(socket_data3.AllWriteDataConsumed());
2497 EXPECT_TRUE(socket_data4.AllReadDataConsumed()); 2354 EXPECT_TRUE(socket_data4.AllReadDataConsumed());
2498 EXPECT_TRUE(socket_data4.AllWriteDataConsumed()); 2355 EXPECT_TRUE(socket_data4.AllWriteDataConsumed());
2499 } 2356 }
2500 2357
2501 TEST_P(QuicStreamFactoryTest, EnableDelayTcpRace) { 2358 TEST_P(QuicStreamFactoryTest, EnableDelayTcpRace) {
2502 Initialize(); 2359 Initialize();
2503 bool delay_tcp_race = QuicStreamFactoryPeer::GetDelayTcpRace(factory_.get()); 2360 bool delay_tcp_race = QuicStreamFactoryPeer::GetDelayTcpRace(factory_.get());
2504 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), false); 2361 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), false);
2505 MockRead reads[] = { 2362 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
2506 MockRead(ASYNC, OK, 0), 2363 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
2507 };
2508 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0);
2509 socket_factory_.AddSocketDataProvider(&socket_data); 2364 socket_factory_.AddSocketDataProvider(&socket_data);
2510 socket_data.StopAfter(1);
2511 2365
2512 ServerNetworkStats stats1; 2366 ServerNetworkStats stats1;
2513 stats1.srtt = base::TimeDelta::FromMicroseconds(10); 2367 stats1.srtt = base::TimeDelta::FromMicroseconds(10);
2514 http_server_properties_.SetServerNetworkStats(host_port_pair_, stats1); 2368 http_server_properties_.SetServerNetworkStats(host_port_pair_, stats1);
2515 2369
2516 crypto_client_stream_factory_.set_handshake_mode( 2370 crypto_client_stream_factory_.set_handshake_mode(
2517 MockCryptoClientStream::ZERO_RTT); 2371 MockCryptoClientStream::ZERO_RTT);
2518 host_resolver_.set_synchronous_mode(true); 2372 host_resolver_.set_synchronous_mode(true);
2519 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 2373 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2520 "192.168.0.1", ""); 2374 "192.168.0.1", "");
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
2644 TEST_P(QuicStreamFactoryTest, YieldAfterPackets) { 2498 TEST_P(QuicStreamFactoryTest, YieldAfterPackets) {
2645 Initialize(); 2499 Initialize();
2646 QuicStreamFactoryPeer::SetYieldAfterPackets(factory_.get(), 0); 2500 QuicStreamFactoryPeer::SetYieldAfterPackets(factory_.get(), 0);
2647 2501
2648 scoped_ptr<QuicEncryptedPacket> close_packet( 2502 scoped_ptr<QuicEncryptedPacket> close_packet(
2649 ConstructConnectionClosePacket(0)); 2503 ConstructConnectionClosePacket(0));
2650 vector<MockRead> reads; 2504 vector<MockRead> reads;
2651 reads.push_back( 2505 reads.push_back(
2652 MockRead(SYNCHRONOUS, close_packet->data(), close_packet->length(), 0)); 2506 MockRead(SYNCHRONOUS, close_packet->data(), close_packet->length(), 0));
2653 reads.push_back(MockRead(ASYNC, OK, 1)); 2507 reads.push_back(MockRead(ASYNC, OK, 1));
2654 DeterministicSocketData socket_data(&reads[0], reads.size(), nullptr, 0); 2508 SequencedSocketData socket_data(&reads[0], reads.size(), nullptr, 0);
2655 socket_factory_.AddSocketDataProvider(&socket_data); 2509 socket_factory_.AddSocketDataProvider(&socket_data);
2656 socket_data.StopAfter(1);
2657 2510
2658 crypto_client_stream_factory_.set_handshake_mode( 2511 crypto_client_stream_factory_.set_handshake_mode(
2659 MockCryptoClientStream::ZERO_RTT); 2512 MockCryptoClientStream::ZERO_RTT);
2660 host_resolver_.set_synchronous_mode(true); 2513 host_resolver_.set_synchronous_mode(true);
2661 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 2514 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2662 "192.168.0.1", ""); 2515 "192.168.0.1", "");
2663 2516
2664 // Set up the TaskObserver to verify QuicPacketReader::StartReading posts a 2517 // Set up the TaskObserver to verify QuicPacketReader::StartReading posts a
2665 // task. 2518 // task.
2666 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver?? 2519 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver??
(...skipping 23 matching lines...) Expand all
2690 Initialize(); 2543 Initialize();
2691 QuicStreamFactoryPeer::SetYieldAfterDuration( 2544 QuicStreamFactoryPeer::SetYieldAfterDuration(
2692 factory_.get(), QuicTime::Delta::FromMilliseconds(-1)); 2545 factory_.get(), QuicTime::Delta::FromMilliseconds(-1));
2693 2546
2694 scoped_ptr<QuicEncryptedPacket> close_packet( 2547 scoped_ptr<QuicEncryptedPacket> close_packet(
2695 ConstructConnectionClosePacket(0)); 2548 ConstructConnectionClosePacket(0));
2696 vector<MockRead> reads; 2549 vector<MockRead> reads;
2697 reads.push_back( 2550 reads.push_back(
2698 MockRead(SYNCHRONOUS, close_packet->data(), close_packet->length(), 0)); 2551 MockRead(SYNCHRONOUS, close_packet->data(), close_packet->length(), 0));
2699 reads.push_back(MockRead(ASYNC, OK, 1)); 2552 reads.push_back(MockRead(ASYNC, OK, 1));
2700 DeterministicSocketData socket_data(&reads[0], reads.size(), nullptr, 0); 2553 SequencedSocketData socket_data(&reads[0], reads.size(), nullptr, 0);
2701 socket_factory_.AddSocketDataProvider(&socket_data); 2554 socket_factory_.AddSocketDataProvider(&socket_data);
2702 socket_data.StopAfter(1);
2703 2555
2704 crypto_client_stream_factory_.set_handshake_mode( 2556 crypto_client_stream_factory_.set_handshake_mode(
2705 MockCryptoClientStream::ZERO_RTT); 2557 MockCryptoClientStream::ZERO_RTT);
2706 host_resolver_.set_synchronous_mode(true); 2558 host_resolver_.set_synchronous_mode(true);
2707 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 2559 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
2708 "192.168.0.1", ""); 2560 "192.168.0.1", "");
2709 2561
2710 // Set up the TaskObserver to verify QuicPacketReader::StartReading posts a 2562 // Set up the TaskObserver to verify QuicPacketReader::StartReading posts a
2711 // task. 2563 // task.
2712 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver?? 2564 // TODO(rtenneti): Change SpdySessionTestTaskObserver to NetTestTaskObserver??
(...skipping 14 matching lines...) Expand all
2727 EXPECT_EQ(1u, observer.executed_count()); 2579 EXPECT_EQ(1u, observer.executed_count());
2728 2580
2729 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2581 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
2730 EXPECT_TRUE(stream.get()); 2582 EXPECT_TRUE(stream.get());
2731 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2583 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2732 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2584 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2733 } 2585 }
2734 2586
2735 } // namespace test 2587 } // namespace test
2736 } // namespace net 2588 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_network_transaction_unittest.cc ('k') | net/socket/socket_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698