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

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

Issue 1744693002: Implement QUIC-based net::BidirectionalStream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@basecl
Patch Set: Address comments and fixed tests Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
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 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 socket_factory_.AddSocketDataProvider(&socket_data); 305 socket_factory_.AddSocketDataProvider(&socket_data);
306 306
307 QuicStreamRequest request(factory_.get()); 307 QuicStreamRequest request(factory_.get());
308 GURL url("https://" + destination.host() + "/"); 308 GURL url("https://" + destination.host() + "/");
309 EXPECT_EQ(ERR_IO_PENDING, 309 EXPECT_EQ(ERR_IO_PENDING,
310 request.Request(destination, privacy_mode_, 310 request.Request(destination, privacy_mode_,
311 /*cert_verify_flags=*/0, url, "GET", net_log_, 311 /*cert_verify_flags=*/0, url, "GET", net_log_,
312 callback_.callback())); 312 callback_.callback()));
313 313
314 EXPECT_EQ(OK, callback_.WaitForResult()); 314 EXPECT_EQ(OK, callback_.WaitForResult());
315 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 315 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
316 EXPECT_TRUE(stream.get()); 316 EXPECT_TRUE(stream.get());
317 stream.reset(); 317 stream.reset();
318 318
319 QuicChromiumClientSession* session = 319 QuicChromiumClientSession* session =
320 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), destination); 320 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), destination);
321 321
322 if (socket_count + 1 != socket_factory_.udp_client_socket_ports().size()) { 322 if (socket_count + 1 != socket_factory_.udp_client_socket_ports().size()) {
323 ADD_FAILURE(); 323 ADD_FAILURE();
324 return 0; 324 return 0;
325 } 325 }
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); 453 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
454 socket_factory_.AddSocketDataProvider(&socket_data); 454 socket_factory_.AddSocketDataProvider(&socket_data);
455 455
456 QuicStreamRequest request(factory_.get()); 456 QuicStreamRequest request(factory_.get());
457 EXPECT_EQ(ERR_IO_PENDING, 457 EXPECT_EQ(ERR_IO_PENDING,
458 request.Request(host_port_pair_, privacy_mode_, 458 request.Request(host_port_pair_, privacy_mode_,
459 /*cert_verify_flags=*/0, url_, "GET", net_log_, 459 /*cert_verify_flags=*/0, url_, "GET", net_log_,
460 callback_.callback())); 460 callback_.callback()));
461 461
462 EXPECT_EQ(OK, callback_.WaitForResult()); 462 EXPECT_EQ(OK, callback_.WaitForResult());
463 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 463 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
464 EXPECT_TRUE(stream.get()); 464 EXPECT_TRUE(stream.get());
465 465
466 // Will reset stream 3. 466 // Will reset stream 3.
467 stream = CreateFromSession(host_port_pair_); 467 stream = CreateFromSession(host_port_pair_);
468 EXPECT_TRUE(stream.get()); 468 EXPECT_TRUE(stream.get());
469 469
470 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result 470 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result
471 // in streams on different sessions. 471 // in streams on different sessions.
472 QuicStreamRequest request2(factory_.get()); 472 QuicStreamRequest request2(factory_.get());
473 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_, 473 EXPECT_EQ(OK, request2.Request(host_port_pair_, privacy_mode_,
474 /*cert_verify_flags=*/0, url_, "GET", net_log_, 474 /*cert_verify_flags=*/0, url_, "GET", net_log_,
475 callback_.callback())); 475 callback_.callback()));
476 stream = request2.ReleaseStream(); // Will reset stream 5. 476 stream = request2.CreateStream(); // Will reset stream 5.
477 stream.reset(); // Will reset stream 7. 477 stream.reset(); // Will reset stream 7.
478 478
479 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 479 EXPECT_TRUE(socket_data.AllReadDataConsumed());
480 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 480 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
481 } 481 }
482 482
483 TEST_P(QuicStreamFactoryTest, CreateZeroRtt) { 483 TEST_P(QuicStreamFactoryTest, CreateZeroRtt) {
484 Initialize(); 484 Initialize();
485 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 485 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
486 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 486 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
487 487
488 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 488 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
489 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); 489 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
490 socket_factory_.AddSocketDataProvider(&socket_data); 490 socket_factory_.AddSocketDataProvider(&socket_data);
491 491
492 crypto_client_stream_factory_.set_handshake_mode( 492 crypto_client_stream_factory_.set_handshake_mode(
493 MockCryptoClientStream::ZERO_RTT); 493 MockCryptoClientStream::ZERO_RTT);
494 host_resolver_.set_synchronous_mode(true); 494 host_resolver_.set_synchronous_mode(true);
495 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 495 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
496 "192.168.0.1", ""); 496 "192.168.0.1", "");
497 497
498 QuicStreamRequest request(factory_.get()); 498 QuicStreamRequest request(factory_.get());
499 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 499 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
500 /*cert_verify_flags=*/0, url_, "GET", net_log_, 500 /*cert_verify_flags=*/0, url_, "GET", net_log_,
501 callback_.callback())); 501 callback_.callback()));
502 502
503 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 503 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
504 EXPECT_TRUE(stream.get()); 504 EXPECT_TRUE(stream.get());
505 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 505 EXPECT_TRUE(socket_data.AllReadDataConsumed());
506 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 506 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
507 } 507 }
508 508
509 TEST_P(QuicStreamFactoryTest, CreateZeroRttPost) { 509 TEST_P(QuicStreamFactoryTest, CreateZeroRttPost) {
510 Initialize(); 510 Initialize();
511 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 511 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
512 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 512 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
513 513
(...skipping 12 matching lines...) Expand all
526 EXPECT_EQ(ERR_IO_PENDING, 526 EXPECT_EQ(ERR_IO_PENDING,
527 request.Request(host_port_pair_, privacy_mode_, 527 request.Request(host_port_pair_, privacy_mode_,
528 /*cert_verify_flags=*/0, url_, "POST", net_log_, 528 /*cert_verify_flags=*/0, url_, "POST", net_log_,
529 callback_.callback())); 529 callback_.callback()));
530 530
531 // Confirm the handshake and verify that the stream is created. 531 // Confirm the handshake and verify that the stream is created.
532 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( 532 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
533 QuicSession::HANDSHAKE_CONFIRMED); 533 QuicSession::HANDSHAKE_CONFIRMED);
534 534
535 EXPECT_EQ(OK, callback_.WaitForResult()); 535 EXPECT_EQ(OK, callback_.WaitForResult());
536 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 536 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
537 EXPECT_TRUE(stream.get()); 537 EXPECT_TRUE(stream.get());
538 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 538 EXPECT_TRUE(socket_data.AllReadDataConsumed());
539 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 539 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
540 } 540 }
541 541
542 TEST_P(QuicStreamFactoryTest, NoZeroRttForDifferentHost) { 542 TEST_P(QuicStreamFactoryTest, NoZeroRttForDifferentHost) {
543 Initialize(); 543 Initialize();
544 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 544 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
545 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 545 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
546 546
(...skipping 12 matching lines...) Expand all
559 /*cert_verify_flags=*/0, url2_, "GET", net_log_, 559 /*cert_verify_flags=*/0, url2_, "GET", net_log_,
560 callback_.callback()); 560 callback_.callback());
561 // If server and origin have different hostnames, then handshake confirmation 561 // If server and origin have different hostnames, then handshake confirmation
562 // should be required, so Request will return asynchronously. 562 // should be required, so Request will return asynchronously.
563 EXPECT_EQ(ERR_IO_PENDING, rv); 563 EXPECT_EQ(ERR_IO_PENDING, rv);
564 // Confirm handshake. 564 // Confirm handshake.
565 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( 565 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
566 QuicSession::HANDSHAKE_CONFIRMED); 566 QuicSession::HANDSHAKE_CONFIRMED);
567 EXPECT_EQ(OK, callback_.WaitForResult()); 567 EXPECT_EQ(OK, callback_.WaitForResult());
568 568
569 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 569 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
570 EXPECT_TRUE(stream.get()); 570 EXPECT_TRUE(stream.get());
571 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 571 EXPECT_TRUE(socket_data.AllReadDataConsumed());
572 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 572 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
573 } 573 }
574 574
575 TEST_P(QuicStreamFactoryTest, GoAway) { 575 TEST_P(QuicStreamFactoryTest, GoAway) {
576 Initialize(); 576 Initialize();
577 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 577 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
578 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 578 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
579 579
580 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 580 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
581 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); 581 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
582 socket_factory_.AddSocketDataProvider(&socket_data); 582 socket_factory_.AddSocketDataProvider(&socket_data);
583 583
584 QuicStreamRequest request(factory_.get()); 584 QuicStreamRequest request(factory_.get());
585 EXPECT_EQ(ERR_IO_PENDING, 585 EXPECT_EQ(ERR_IO_PENDING,
586 request.Request(host_port_pair_, privacy_mode_, 586 request.Request(host_port_pair_, privacy_mode_,
587 /*cert_verify_flags=*/0, url_, "GET", net_log_, 587 /*cert_verify_flags=*/0, url_, "GET", net_log_,
588 callback_.callback())); 588 callback_.callback()));
589 589
590 EXPECT_EQ(OK, callback_.WaitForResult()); 590 EXPECT_EQ(OK, callback_.WaitForResult());
591 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 591 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
592 EXPECT_TRUE(stream.get()); 592 EXPECT_TRUE(stream.get());
593 593
594 QuicChromiumClientSession* session = 594 QuicChromiumClientSession* session =
595 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 595 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
596 596
597 session->OnGoAway(QuicGoAwayFrame()); 597 session->OnGoAway(QuicGoAwayFrame());
598 598
599 EXPECT_FALSE( 599 EXPECT_FALSE(
600 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 600 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
601 601
(...skipping 13 matching lines...) Expand all
615 HostPortPair server2(kServer2HostName, kDefaultServerPort); 615 HostPortPair server2(kServer2HostName, kDefaultServerPort);
616 host_resolver_.set_synchronous_mode(true); 616 host_resolver_.set_synchronous_mode(true);
617 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 617 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
618 "192.168.0.1", ""); 618 "192.168.0.1", "");
619 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 619 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
620 620
621 QuicStreamRequest request(factory_.get()); 621 QuicStreamRequest request(factory_.get());
622 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 622 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
623 /*cert_verify_flags=*/0, url_, "GET", net_log_, 623 /*cert_verify_flags=*/0, url_, "GET", net_log_,
624 callback_.callback())); 624 callback_.callback()));
625 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 625 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
626 EXPECT_TRUE(stream.get()); 626 EXPECT_TRUE(stream.get());
627 627
628 TestCompletionCallback callback; 628 TestCompletionCallback callback;
629 QuicStreamRequest request2(factory_.get()); 629 QuicStreamRequest request2(factory_.get());
630 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 630 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
631 /*cert_verify_flags=*/0, url2_, "GET", 631 /*cert_verify_flags=*/0, url2_, "GET",
632 net_log_, callback.callback())); 632 net_log_, callback.callback()));
633 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 633 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
634 EXPECT_TRUE(stream2.get()); 634 EXPECT_TRUE(stream2.get());
635 635
636 EXPECT_EQ( 636 EXPECT_EQ(
637 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_), 637 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_),
638 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 638 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
639 639
640 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 640 EXPECT_TRUE(socket_data.AllReadDataConsumed());
641 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 641 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
642 } 642 }
643 643
(...skipping 13 matching lines...) Expand all
657 HostPortPair server2(kServer2HostName, kDefaultServerPort); 657 HostPortPair server2(kServer2HostName, kDefaultServerPort);
658 host_resolver_.set_synchronous_mode(true); 658 host_resolver_.set_synchronous_mode(true);
659 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 659 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
660 "192.168.0.1", ""); 660 "192.168.0.1", "");
661 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 661 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
662 662
663 QuicStreamRequest request(factory_.get()); 663 QuicStreamRequest request(factory_.get());
664 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 664 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
665 /*cert_verify_flags=*/0, url_, "GET", net_log_, 665 /*cert_verify_flags=*/0, url_, "GET", net_log_,
666 callback_.callback())); 666 callback_.callback()));
667 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 667 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
668 EXPECT_TRUE(stream.get()); 668 EXPECT_TRUE(stream.get());
669 669
670 TestCompletionCallback callback; 670 TestCompletionCallback callback;
671 QuicStreamRequest request2(factory_.get()); 671 QuicStreamRequest request2(factory_.get());
672 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 672 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
673 /*cert_verify_flags=*/0, url2_, "GET", 673 /*cert_verify_flags=*/0, url2_, "GET",
674 net_log_, callback.callback())); 674 net_log_, callback.callback()));
675 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 675 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
676 EXPECT_TRUE(stream2.get()); 676 EXPECT_TRUE(stream2.get());
677 677
678 EXPECT_NE( 678 EXPECT_NE(
679 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_), 679 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_),
680 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 680 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
681 681
682 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 682 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
683 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 683 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
684 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 684 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
685 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 685 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
(...skipping 14 matching lines...) Expand all
700 HostPortPair server2(kServer2HostName, kDefaultServerPort); 700 HostPortPair server2(kServer2HostName, kDefaultServerPort);
701 host_resolver_.set_synchronous_mode(true); 701 host_resolver_.set_synchronous_mode(true);
702 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), 702 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(),
703 "192.168.0.1", ""); 703 "192.168.0.1", "");
704 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 704 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
705 705
706 QuicStreamRequest request(factory_.get()); 706 QuicStreamRequest request(factory_.get());
707 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 707 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
708 /*cert_verify_flags=*/0, url_, "GET", net_log_, 708 /*cert_verify_flags=*/0, url_, "GET", net_log_,
709 callback_.callback())); 709 callback_.callback()));
710 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 710 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
711 EXPECT_TRUE(stream.get()); 711 EXPECT_TRUE(stream.get());
712 712
713 TestCompletionCallback callback; 713 TestCompletionCallback callback;
714 QuicStreamRequest request2(factory_.get()); 714 QuicStreamRequest request2(factory_.get());
715 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 715 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
716 /*cert_verify_flags=*/0, url2_, "GET", 716 /*cert_verify_flags=*/0, url2_, "GET",
717 net_log_, callback.callback())); 717 net_log_, callback.callback()));
718 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 718 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
719 EXPECT_TRUE(stream2.get()); 719 EXPECT_TRUE(stream2.get());
720 720
721 factory_->OnSessionGoingAway( 721 factory_->OnSessionGoingAway(
722 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_)); 722 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_));
723 EXPECT_FALSE( 723 EXPECT_FALSE(
724 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 724 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
725 EXPECT_FALSE( 725 EXPECT_FALSE(
726 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server2)); 726 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server2));
727 727
728 TestCompletionCallback callback3; 728 TestCompletionCallback callback3;
729 QuicStreamRequest request3(factory_.get()); 729 QuicStreamRequest request3(factory_.get());
730 EXPECT_EQ(OK, request3.Request(server2, privacy_mode_, 730 EXPECT_EQ(OK, request3.Request(server2, privacy_mode_,
731 /*cert_verify_flags=*/0, url2_, "GET", 731 /*cert_verify_flags=*/0, url2_, "GET",
732 net_log_, callback3.callback())); 732 net_log_, callback3.callback()));
733 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); 733 scoped_ptr<QuicHttpStream> stream3 = request3.CreateStream();
734 EXPECT_TRUE(stream3.get()); 734 EXPECT_TRUE(stream3.get());
735 735
736 EXPECT_TRUE(QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server2)); 736 EXPECT_TRUE(QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server2));
737 737
738 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 738 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
739 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 739 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
740 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 740 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
741 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 741 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
742 } 742 }
743 743
(...skipping 11 matching lines...) Expand all
755 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 755 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
756 756
757 host_resolver_.set_synchronous_mode(true); 757 host_resolver_.set_synchronous_mode(true);
758 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 758 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
759 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 759 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
760 760
761 QuicStreamRequest request(factory_.get()); 761 QuicStreamRequest request(factory_.get());
762 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 762 EXPECT_EQ(OK, request.Request(server1, privacy_mode_,
763 /*cert_verify_flags=*/0, url_, "GET", net_log_, 763 /*cert_verify_flags=*/0, url_, "GET", net_log_,
764 callback_.callback())); 764 callback_.callback()));
765 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 765 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
766 EXPECT_TRUE(stream.get()); 766 EXPECT_TRUE(stream.get());
767 767
768 TestCompletionCallback callback; 768 TestCompletionCallback callback;
769 QuicStreamRequest request2(factory_.get()); 769 QuicStreamRequest request2(factory_.get());
770 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 770 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
771 /*cert_verify_flags=*/0, url2_, "GET", 771 /*cert_verify_flags=*/0, url2_, "GET",
772 net_log_, callback_.callback())); 772 net_log_, callback_.callback()));
773 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 773 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
774 EXPECT_TRUE(stream2.get()); 774 EXPECT_TRUE(stream2.get());
775 775
776 EXPECT_EQ(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1), 776 EXPECT_EQ(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1),
777 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 777 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
778 778
779 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 779 EXPECT_TRUE(socket_data.AllReadDataConsumed());
780 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 780 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
781 } 781 }
782 782
783 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingIfDisabled) { 783 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingIfDisabled) {
(...skipping 14 matching lines...) Expand all
798 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 798 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
799 799
800 host_resolver_.set_synchronous_mode(true); 800 host_resolver_.set_synchronous_mode(true);
801 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 801 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
802 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 802 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
803 803
804 QuicStreamRequest request(factory_.get()); 804 QuicStreamRequest request(factory_.get());
805 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 805 EXPECT_EQ(OK, request.Request(server1, privacy_mode_,
806 /*cert_verify_flags=*/0, url_, "GET", net_log_, 806 /*cert_verify_flags=*/0, url_, "GET", net_log_,
807 callback_.callback())); 807 callback_.callback()));
808 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 808 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
809 EXPECT_TRUE(stream.get()); 809 EXPECT_TRUE(stream.get());
810 810
811 TestCompletionCallback callback; 811 TestCompletionCallback callback;
812 QuicStreamRequest request2(factory_.get()); 812 QuicStreamRequest request2(factory_.get());
813 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 813 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
814 /*cert_verify_flags=*/0, url2_, "GET", 814 /*cert_verify_flags=*/0, url2_, "GET",
815 net_log_, callback_.callback())); 815 net_log_, callback_.callback()));
816 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 816 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
817 EXPECT_TRUE(stream2.get()); 817 EXPECT_TRUE(stream2.get());
818 818
819 EXPECT_NE(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1), 819 EXPECT_NE(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1),
820 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 820 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
821 821
822 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 822 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
823 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 823 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
824 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 824 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
825 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 825 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
826 } 826 }
(...skipping 24 matching lines...) Expand all
851 851
852 host_resolver_.set_synchronous_mode(true); 852 host_resolver_.set_synchronous_mode(true);
853 host_resolver_.rules()->AddIPLiteralRule(alternative.host(), "192.168.0.1", 853 host_resolver_.rules()->AddIPLiteralRule(alternative.host(), "192.168.0.1",
854 ""); 854 "");
855 855
856 // Open first stream to alternative. 856 // Open first stream to alternative.
857 QuicStreamRequest request1(factory_.get()); 857 QuicStreamRequest request1(factory_.get());
858 EXPECT_EQ(OK, request1.Request(alternative, privacy_mode_, 858 EXPECT_EQ(OK, request1.Request(alternative, privacy_mode_,
859 /*cert_verify_flags=*/0, url_, "GET", 859 /*cert_verify_flags=*/0, url_, "GET",
860 net_log_, callback_.callback())); 860 net_log_, callback_.callback()));
861 scoped_ptr<QuicHttpStream> stream1 = request1.ReleaseStream(); 861 scoped_ptr<QuicHttpStream> stream1 = request1.CreateStream();
862 EXPECT_TRUE(stream1.get()); 862 EXPECT_TRUE(stream1.get());
863 863
864 QuicStreamRequest request2(factory_.get()); 864 QuicStreamRequest request2(factory_.get());
865 int rv = request2.Request(alternative, privacy_mode_, 865 int rv = request2.Request(alternative, privacy_mode_,
866 /*cert_verify_flags=*/0, url, "GET", net_log_, 866 /*cert_verify_flags=*/0, url, "GET", net_log_,
867 callback_.callback()); 867 callback_.callback());
868 if (valid) { 868 if (valid) {
869 // Alternative service of origin to |alternative| should pool to session 869 // Alternative service of origin to |alternative| should pool to session
870 // of |stream1| even if origin is different. Since only one 870 // of |stream1| even if origin is different. Since only one
871 // SocketDataProvider is set up, the second request succeeding means that 871 // SocketDataProvider is set up, the second request succeeding means that
872 // it pooled to the session opened by the first one. 872 // it pooled to the session opened by the first one.
873 EXPECT_EQ(OK, rv); 873 EXPECT_EQ(OK, rv);
874 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 874 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
875 EXPECT_TRUE(stream2.get()); 875 EXPECT_TRUE(stream2.get());
876 } else { 876 } else {
877 EXPECT_EQ(ERR_ALTERNATIVE_CERT_NOT_VALID_FOR_ORIGIN, rv); 877 EXPECT_EQ(ERR_ALTERNATIVE_CERT_NOT_VALID_FOR_ORIGIN, rv);
878 } 878 }
879 879
880 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 880 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
881 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 881 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
882 } 882 }
883 }; 883 };
884 884
(...skipping 30 matching lines...) Expand all
915 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 915 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
916 916
917 host_resolver_.set_synchronous_mode(true); 917 host_resolver_.set_synchronous_mode(true);
918 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 918 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
919 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 919 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
920 920
921 QuicStreamRequest request(factory_.get()); 921 QuicStreamRequest request(factory_.get());
922 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 922 EXPECT_EQ(OK, request.Request(server1, privacy_mode_,
923 /*cert_verify_flags=*/0, url_, "GET", net_log_, 923 /*cert_verify_flags=*/0, url_, "GET", net_log_,
924 callback_.callback())); 924 callback_.callback()));
925 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 925 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
926 EXPECT_TRUE(stream.get()); 926 EXPECT_TRUE(stream.get());
927 927
928 TestCompletionCallback callback; 928 TestCompletionCallback callback;
929 QuicStreamRequest request2(factory_.get()); 929 QuicStreamRequest request2(factory_.get());
930 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 930 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
931 /*cert_verify_flags=*/0, url2_, "GET", 931 /*cert_verify_flags=*/0, url2_, "GET",
932 net_log_, callback_.callback())); 932 net_log_, callback_.callback()));
933 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 933 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
934 EXPECT_TRUE(stream2.get()); 934 EXPECT_TRUE(stream2.get());
935 935
936 EXPECT_EQ(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1), 936 EXPECT_EQ(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1),
937 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 937 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
938 938
939 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 939 EXPECT_TRUE(socket_data.AllReadDataConsumed());
940 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 940 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
941 } 941 }
942 942
943 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingWithMatchingPinsIfDisabled) { 943 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingWithMatchingPinsIfDisabled) {
(...skipping 20 matching lines...) Expand all
964 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 964 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
965 965
966 host_resolver_.set_synchronous_mode(true); 966 host_resolver_.set_synchronous_mode(true);
967 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 967 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
968 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 968 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
969 969
970 QuicStreamRequest request(factory_.get()); 970 QuicStreamRequest request(factory_.get());
971 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 971 EXPECT_EQ(OK, request.Request(server1, privacy_mode_,
972 /*cert_verify_flags=*/0, url_, "GET", net_log_, 972 /*cert_verify_flags=*/0, url_, "GET", net_log_,
973 callback_.callback())); 973 callback_.callback()));
974 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 974 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
975 EXPECT_TRUE(stream.get()); 975 EXPECT_TRUE(stream.get());
976 976
977 TestCompletionCallback callback; 977 TestCompletionCallback callback;
978 QuicStreamRequest request2(factory_.get()); 978 QuicStreamRequest request2(factory_.get());
979 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 979 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
980 /*cert_verify_flags=*/0, url2_, "GET", 980 /*cert_verify_flags=*/0, url2_, "GET",
981 net_log_, callback_.callback())); 981 net_log_, callback_.callback()));
982 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 982 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
983 EXPECT_TRUE(stream2.get()); 983 EXPECT_TRUE(stream2.get());
984 984
985 EXPECT_NE(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1), 985 EXPECT_NE(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1),
986 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 986 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
987 987
988 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 988 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
989 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 989 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
990 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 990 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
991 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 991 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
992 } 992 }
(...skipping 25 matching lines...) Expand all
1018 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2); 1018 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2);
1019 1019
1020 host_resolver_.set_synchronous_mode(true); 1020 host_resolver_.set_synchronous_mode(true);
1021 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); 1021 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", "");
1022 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 1022 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
1023 1023
1024 QuicStreamRequest request(factory_.get()); 1024 QuicStreamRequest request(factory_.get());
1025 EXPECT_EQ(OK, request.Request(server1, privacy_mode_, 1025 EXPECT_EQ(OK, request.Request(server1, privacy_mode_,
1026 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1026 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1027 callback_.callback())); 1027 callback_.callback()));
1028 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1028 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1029 EXPECT_TRUE(stream.get()); 1029 EXPECT_TRUE(stream.get());
1030 1030
1031 TestCompletionCallback callback; 1031 TestCompletionCallback callback;
1032 QuicStreamRequest request2(factory_.get()); 1032 QuicStreamRequest request2(factory_.get());
1033 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 1033 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
1034 /*cert_verify_flags=*/0, url2_, "GET", 1034 /*cert_verify_flags=*/0, url2_, "GET",
1035 net_log_, callback_.callback())); 1035 net_log_, callback_.callback()));
1036 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 1036 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
1037 EXPECT_TRUE(stream2.get()); 1037 EXPECT_TRUE(stream2.get());
1038 1038
1039 EXPECT_NE(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1), 1039 EXPECT_NE(QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server1),
1040 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2)); 1040 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2));
1041 1041
1042 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 1042 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
1043 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 1043 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
1044 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1044 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1045 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1045 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1046 } 1046 }
(...skipping 10 matching lines...) Expand all
1057 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0); 1057 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0);
1058 socket_factory_.AddSocketDataProvider(&socket_data2); 1058 socket_factory_.AddSocketDataProvider(&socket_data2);
1059 1059
1060 QuicStreamRequest request(factory_.get()); 1060 QuicStreamRequest request(factory_.get());
1061 EXPECT_EQ(ERR_IO_PENDING, 1061 EXPECT_EQ(ERR_IO_PENDING,
1062 request.Request(host_port_pair_, privacy_mode_, 1062 request.Request(host_port_pair_, privacy_mode_,
1063 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1063 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1064 callback_.callback())); 1064 callback_.callback()));
1065 1065
1066 EXPECT_EQ(OK, callback_.WaitForResult()); 1066 EXPECT_EQ(OK, callback_.WaitForResult());
1067 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1067 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1068 EXPECT_TRUE(stream.get()); 1068 EXPECT_TRUE(stream.get());
1069 1069
1070 // Mark the session as going away. Ensure that while it is still alive 1070 // Mark the session as going away. Ensure that while it is still alive
1071 // that it is no longer active. 1071 // that it is no longer active.
1072 QuicChromiumClientSession* session = 1072 QuicChromiumClientSession* session =
1073 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1073 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
1074 factory_->OnSessionGoingAway(session); 1074 factory_->OnSessionGoingAway(session);
1075 EXPECT_EQ(true, 1075 EXPECT_EQ(true,
1076 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1076 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1077 EXPECT_FALSE( 1077 EXPECT_FALSE(
1078 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 1078 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
1079 EXPECT_FALSE(HasActiveSession(host_port_pair_)); 1079 EXPECT_FALSE(HasActiveSession(host_port_pair_));
1080 1080
1081 // Create a new request for the same destination and verify that a 1081 // Create a new request for the same destination and verify that a
1082 // new session is created. 1082 // new session is created.
1083 QuicStreamRequest request2(factory_.get()); 1083 QuicStreamRequest request2(factory_.get());
1084 EXPECT_EQ(ERR_IO_PENDING, 1084 EXPECT_EQ(ERR_IO_PENDING,
1085 request2.Request(host_port_pair_, privacy_mode_, 1085 request2.Request(host_port_pair_, privacy_mode_,
1086 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1086 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1087 callback_.callback())); 1087 callback_.callback()));
1088 EXPECT_EQ(OK, callback_.WaitForResult()); 1088 EXPECT_EQ(OK, callback_.WaitForResult());
1089 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 1089 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
1090 EXPECT_TRUE(stream2.get()); 1090 EXPECT_TRUE(stream2.get());
1091 1091
1092 EXPECT_TRUE( 1092 EXPECT_TRUE(
1093 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 1093 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
1094 EXPECT_NE(session, QuicStreamFactoryPeer::GetActiveSession(factory_.get(), 1094 EXPECT_NE(session, QuicStreamFactoryPeer::GetActiveSession(factory_.get(),
1095 host_port_pair_)); 1095 host_port_pair_));
1096 EXPECT_EQ(true, 1096 EXPECT_EQ(true,
1097 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1097 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1098 1098
1099 stream2.reset(); 1099 stream2.reset();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1133 QuicStreamRequest request(factory_.get()); 1133 QuicStreamRequest request(factory_.get());
1134 int rv = request.Request(host_port_pair_, privacy_mode_, 1134 int rv = request.Request(host_port_pair_, privacy_mode_,
1135 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1135 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1136 callback_.callback()); 1136 callback_.callback());
1137 if (i == 0) { 1137 if (i == 0) {
1138 EXPECT_EQ(ERR_IO_PENDING, rv); 1138 EXPECT_EQ(ERR_IO_PENDING, rv);
1139 EXPECT_EQ(OK, callback_.WaitForResult()); 1139 EXPECT_EQ(OK, callback_.WaitForResult());
1140 } else { 1140 } else {
1141 EXPECT_EQ(OK, rv); 1141 EXPECT_EQ(OK, rv);
1142 } 1142 }
1143 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1143 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1144 EXPECT_TRUE(stream); 1144 EXPECT_TRUE(stream);
1145 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1145 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1146 net_log_, CompletionCallback())); 1146 net_log_, CompletionCallback()));
1147 streams.push_back(stream.release()); 1147 streams.push_back(stream.release());
1148 } 1148 }
1149 1149
1150 QuicStreamRequest request(factory_.get()); 1150 QuicStreamRequest request(factory_.get());
1151 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 1151 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
1152 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1152 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1153 CompletionCallback())); 1153 CompletionCallback()));
1154 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1154 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1155 EXPECT_TRUE(stream); 1155 EXPECT_TRUE(stream);
1156 EXPECT_EQ(ERR_IO_PENDING, 1156 EXPECT_EQ(ERR_IO_PENDING,
1157 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_, 1157 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_,
1158 callback_.callback())); 1158 callback_.callback()));
1159 1159
1160 // Close the first stream. 1160 // Close the first stream.
1161 streams.front()->Close(false); 1161 streams.front()->Close(false);
1162 // Trigger exchange of RSTs that in turn allow progress for the last 1162 // Trigger exchange of RSTs that in turn allow progress for the last
1163 // stream. 1163 // stream.
1164 EXPECT_EQ(OK, callback_.WaitForResult()); 1164 EXPECT_EQ(OK, callback_.WaitForResult());
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1292 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 1292 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1293 socket_factory_.AddSocketDataProvider(&socket_data2); 1293 socket_factory_.AddSocketDataProvider(&socket_data2);
1294 1294
1295 QuicStreamRequest request(factory_.get()); 1295 QuicStreamRequest request(factory_.get());
1296 EXPECT_EQ(ERR_IO_PENDING, 1296 EXPECT_EQ(ERR_IO_PENDING,
1297 request.Request(host_port_pair_, privacy_mode_, 1297 request.Request(host_port_pair_, privacy_mode_,
1298 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1298 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1299 callback_.callback())); 1299 callback_.callback()));
1300 1300
1301 EXPECT_EQ(OK, callback_.WaitForResult()); 1301 EXPECT_EQ(OK, callback_.WaitForResult());
1302 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1302 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1303 HttpRequestInfo request_info; 1303 HttpRequestInfo request_info;
1304 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1304 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1305 net_log_, CompletionCallback())); 1305 net_log_, CompletionCallback()));
1306 1306
1307 // Close the session and verify that stream saw the error. 1307 // Close the session and verify that stream saw the error.
1308 factory_->CloseAllSessions(ERR_INTERNET_DISCONNECTED, QUIC_INTERNAL_ERROR); 1308 factory_->CloseAllSessions(ERR_INTERNET_DISCONNECTED, QUIC_INTERNAL_ERROR);
1309 EXPECT_EQ(ERR_INTERNET_DISCONNECTED, 1309 EXPECT_EQ(ERR_INTERNET_DISCONNECTED,
1310 stream->ReadResponseHeaders(callback_.callback())); 1310 stream->ReadResponseHeaders(callback_.callback()));
1311 1311
1312 // Now attempting to request a stream to the same origin should create 1312 // Now attempting to request a stream to the same origin should create
1313 // a new session. 1313 // a new session.
1314 1314
1315 QuicStreamRequest request2(factory_.get()); 1315 QuicStreamRequest request2(factory_.get());
1316 EXPECT_EQ(ERR_IO_PENDING, 1316 EXPECT_EQ(ERR_IO_PENDING,
1317 request2.Request(host_port_pair_, privacy_mode_, 1317 request2.Request(host_port_pair_, privacy_mode_,
1318 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1318 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1319 callback_.callback())); 1319 callback_.callback()));
1320 1320
1321 EXPECT_EQ(OK, callback_.WaitForResult()); 1321 EXPECT_EQ(OK, callback_.WaitForResult());
1322 stream = request2.ReleaseStream(); 1322 stream = request2.CreateStream();
1323 stream.reset(); // Will reset stream 3. 1323 stream.reset(); // Will reset stream 3.
1324 1324
1325 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1325 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1326 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1326 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1327 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1327 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1328 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1328 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1329 } 1329 }
1330 1330
1331 TEST_P(QuicStreamFactoryTest, OnIPAddressChanged) { 1331 TEST_P(QuicStreamFactoryTest, OnIPAddressChanged) {
1332 close_sessions_on_ip_change_ = true; 1332 close_sessions_on_ip_change_ = true;
(...skipping 15 matching lines...) Expand all
1348 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 1348 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1349 socket_factory_.AddSocketDataProvider(&socket_data2); 1349 socket_factory_.AddSocketDataProvider(&socket_data2);
1350 1350
1351 QuicStreamRequest request(factory_.get()); 1351 QuicStreamRequest request(factory_.get());
1352 EXPECT_EQ(ERR_IO_PENDING, 1352 EXPECT_EQ(ERR_IO_PENDING,
1353 request.Request(host_port_pair_, privacy_mode_, 1353 request.Request(host_port_pair_, privacy_mode_,
1354 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1354 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1355 callback_.callback())); 1355 callback_.callback()));
1356 1356
1357 EXPECT_EQ(OK, callback_.WaitForResult()); 1357 EXPECT_EQ(OK, callback_.WaitForResult());
1358 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1358 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1359 HttpRequestInfo request_info; 1359 HttpRequestInfo request_info;
1360 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1360 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1361 net_log_, CompletionCallback())); 1361 net_log_, CompletionCallback()));
1362 1362
1363 // Change the IP address and verify that stream saw the error. 1363 // Change the IP address and verify that stream saw the error.
1364 NotifyIPAddressChanged(); 1364 NotifyIPAddressChanged();
1365 EXPECT_EQ(ERR_NETWORK_CHANGED, 1365 EXPECT_EQ(ERR_NETWORK_CHANGED,
1366 stream->ReadResponseHeaders(callback_.callback())); 1366 stream->ReadResponseHeaders(callback_.callback()));
1367 EXPECT_TRUE(factory_->require_confirmation()); 1367 EXPECT_TRUE(factory_->require_confirmation());
1368 1368
1369 // Now attempting to request a stream to the same origin should create 1369 // Now attempting to request a stream to the same origin should create
1370 // a new session. 1370 // a new session.
1371 1371
1372 QuicStreamRequest request2(factory_.get()); 1372 QuicStreamRequest request2(factory_.get());
1373 EXPECT_EQ(ERR_IO_PENDING, 1373 EXPECT_EQ(ERR_IO_PENDING,
1374 request2.Request(host_port_pair_, privacy_mode_, 1374 request2.Request(host_port_pair_, privacy_mode_,
1375 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1375 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1376 callback_.callback())); 1376 callback_.callback()));
1377 1377
1378 EXPECT_EQ(OK, callback_.WaitForResult()); 1378 EXPECT_EQ(OK, callback_.WaitForResult());
1379 stream = request2.ReleaseStream(); 1379 stream = request2.CreateStream();
1380 stream.reset(); // Will reset stream 3. 1380 stream.reset(); // Will reset stream 3.
1381 1381
1382 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1382 EXPECT_TRUE(socket_data.AllReadDataConsumed());
1383 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 1383 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
1384 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 1384 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
1385 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 1385 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
1386 } 1386 }
1387 1387
1388 TEST_P(QuicStreamFactoryTest, OnNetworkChangeSoonToDisconnect) { 1388 TEST_P(QuicStreamFactoryTest, OnNetworkChangeSoonToDisconnect) {
1389 InitializeConnectionMigrationTest( 1389 InitializeConnectionMigrationTest(
(...skipping 11 matching lines...) Expand all
1401 arraysize(writes)); 1401 arraysize(writes));
1402 socket_factory_.AddSocketDataProvider(&socket_data); 1402 socket_factory_.AddSocketDataProvider(&socket_data);
1403 1403
1404 // Create request and QuicHttpStream. 1404 // Create request and QuicHttpStream.
1405 QuicStreamRequest request(factory_.get()); 1405 QuicStreamRequest request(factory_.get());
1406 EXPECT_EQ(ERR_IO_PENDING, 1406 EXPECT_EQ(ERR_IO_PENDING,
1407 request.Request(host_port_pair_, privacy_mode_, 1407 request.Request(host_port_pair_, privacy_mode_,
1408 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1408 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1409 callback_.callback())); 1409 callback_.callback()));
1410 EXPECT_EQ(OK, callback_.WaitForResult()); 1410 EXPECT_EQ(OK, callback_.WaitForResult());
1411 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1411 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1412 EXPECT_TRUE(stream.get()); 1412 EXPECT_TRUE(stream.get());
1413 1413
1414 // Cause QUIC stream to be created. 1414 // Cause QUIC stream to be created.
1415 HttpRequestInfo request_info; 1415 HttpRequestInfo request_info;
1416 request_info.method = "GET"; 1416 request_info.method = "GET";
1417 request_info.url = GURL("https://www.example.org/"); 1417 request_info.url = GURL("https://www.example.org/");
1418 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1418 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1419 net_log_, CompletionCallback())); 1419 net_log_, CompletionCallback()));
1420 1420
1421 // Ensure that session is alive and active. 1421 // Ensure that session is alive and active.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1466 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 1466 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1467 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 1467 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1468 socket_factory_.AddSocketDataProvider(&socket_data2); 1468 socket_factory_.AddSocketDataProvider(&socket_data2);
1469 1469
1470 QuicStreamRequest request2(factory_.get()); 1470 QuicStreamRequest request2(factory_.get());
1471 EXPECT_EQ(ERR_IO_PENDING, 1471 EXPECT_EQ(ERR_IO_PENDING,
1472 request2.Request(host_port_pair_, privacy_mode_, 1472 request2.Request(host_port_pair_, privacy_mode_,
1473 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1473 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1474 callback_.callback())); 1474 callback_.callback()));
1475 EXPECT_EQ(OK, callback_.WaitForResult()); 1475 EXPECT_EQ(OK, callback_.WaitForResult());
1476 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 1476 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
1477 EXPECT_TRUE(stream2.get()); 1477 EXPECT_TRUE(stream2.get());
1478 1478
1479 EXPECT_TRUE( 1479 EXPECT_TRUE(
1480 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 1480 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
1481 QuicChromiumClientSession* new_session = 1481 QuicChromiumClientSession* new_session =
1482 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1482 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
1483 EXPECT_NE(session, new_session); 1483 EXPECT_NE(session, new_session);
1484 1484
1485 // On a DISCONNECTED notification, nothing happens to the migrated 1485 // On a DISCONNECTED notification, nothing happens to the migrated
1486 // session, but the new session is closed since it has no open 1486 // session, but the new session is closed since it has no open
(...skipping 29 matching lines...) Expand all
1516 arraysize(writes)); 1516 arraysize(writes));
1517 socket_factory_.AddSocketDataProvider(&socket_data); 1517 socket_factory_.AddSocketDataProvider(&socket_data);
1518 1518
1519 // Create request and QuicHttpStream. 1519 // Create request and QuicHttpStream.
1520 QuicStreamRequest request(factory_.get()); 1520 QuicStreamRequest request(factory_.get());
1521 EXPECT_EQ(ERR_IO_PENDING, 1521 EXPECT_EQ(ERR_IO_PENDING,
1522 request.Request(host_port_pair_, privacy_mode_, 1522 request.Request(host_port_pair_, privacy_mode_,
1523 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1523 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1524 callback_.callback())); 1524 callback_.callback()));
1525 EXPECT_EQ(OK, callback_.WaitForResult()); 1525 EXPECT_EQ(OK, callback_.WaitForResult());
1526 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1526 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1527 EXPECT_TRUE(stream.get()); 1527 EXPECT_TRUE(stream.get());
1528 1528
1529 // Cause QUIC stream to be created. 1529 // Cause QUIC stream to be created.
1530 HttpRequestInfo request_info; 1530 HttpRequestInfo request_info;
1531 request_info.method = "GET"; 1531 request_info.method = "GET";
1532 request_info.url = GURL("https://www.example.org/"); 1532 request_info.url = GURL("https://www.example.org/");
1533 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1533 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1534 net_log_, CompletionCallback())); 1534 net_log_, CompletionCallback()));
1535 1535
1536 // Ensure that session is alive and active. 1536 // Ensure that session is alive and active.
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1577 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 1577 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1578 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 1578 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1579 socket_factory_.AddSocketDataProvider(&socket_data2); 1579 socket_factory_.AddSocketDataProvider(&socket_data2);
1580 1580
1581 QuicStreamRequest request2(factory_.get()); 1581 QuicStreamRequest request2(factory_.get());
1582 EXPECT_EQ(ERR_IO_PENDING, 1582 EXPECT_EQ(ERR_IO_PENDING,
1583 request2.Request(host_port_pair_, privacy_mode_, 1583 request2.Request(host_port_pair_, privacy_mode_,
1584 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1584 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1585 callback_.callback())); 1585 callback_.callback()));
1586 EXPECT_EQ(OK, callback_.WaitForResult()); 1586 EXPECT_EQ(OK, callback_.WaitForResult());
1587 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 1587 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
1588 EXPECT_TRUE(stream2.get()); 1588 EXPECT_TRUE(stream2.get());
1589 1589
1590 EXPECT_TRUE( 1590 EXPECT_TRUE(
1591 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 1591 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
1592 EXPECT_NE(session, QuicStreamFactoryPeer::GetActiveSession(factory_.get(), 1592 EXPECT_NE(session, QuicStreamFactoryPeer::GetActiveSession(factory_.get(),
1593 host_port_pair_)); 1593 host_port_pair_));
1594 EXPECT_EQ(true, 1594 EXPECT_EQ(true,
1595 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1595 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1596 1596
1597 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 1597 EXPECT_TRUE(socket_data.AllReadDataConsumed());
(...skipping 20 matching lines...) Expand all
1618 arraysize(writes)); 1618 arraysize(writes));
1619 socket_factory_.AddSocketDataProvider(&socket_data); 1619 socket_factory_.AddSocketDataProvider(&socket_data);
1620 1620
1621 // Create request and QuicHttpStream. 1621 // Create request and QuicHttpStream.
1622 QuicStreamRequest request(factory_.get()); 1622 QuicStreamRequest request(factory_.get());
1623 EXPECT_EQ(ERR_IO_PENDING, 1623 EXPECT_EQ(ERR_IO_PENDING,
1624 request.Request(host_port_pair_, privacy_mode_, 1624 request.Request(host_port_pair_, privacy_mode_,
1625 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1625 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1626 callback_.callback())); 1626 callback_.callback()));
1627 EXPECT_EQ(OK, callback_.WaitForResult()); 1627 EXPECT_EQ(OK, callback_.WaitForResult());
1628 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1628 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1629 EXPECT_TRUE(stream.get()); 1629 EXPECT_TRUE(stream.get());
1630 1630
1631 // Cause QUIC stream to be created. 1631 // Cause QUIC stream to be created.
1632 HttpRequestInfo request_info; 1632 HttpRequestInfo request_info;
1633 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1633 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1634 net_log_, CompletionCallback())); 1634 net_log_, CompletionCallback()));
1635 1635
1636 // Ensure that session is alive and active. 1636 // Ensure that session is alive and active.
1637 QuicChromiumClientSession* session = 1637 QuicChromiumClientSession* session =
1638 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1638 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1672 arraysize(writes)); 1672 arraysize(writes));
1673 socket_factory_.AddSocketDataProvider(&socket_data); 1673 socket_factory_.AddSocketDataProvider(&socket_data);
1674 1674
1675 // Create request and QuicHttpStream. 1675 // Create request and QuicHttpStream.
1676 QuicStreamRequest request(factory_.get()); 1676 QuicStreamRequest request(factory_.get());
1677 EXPECT_EQ(ERR_IO_PENDING, 1677 EXPECT_EQ(ERR_IO_PENDING,
1678 request.Request(host_port_pair_, privacy_mode_, 1678 request.Request(host_port_pair_, privacy_mode_,
1679 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1679 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1680 callback_.callback())); 1680 callback_.callback()));
1681 EXPECT_EQ(OK, callback_.WaitForResult()); 1681 EXPECT_EQ(OK, callback_.WaitForResult());
1682 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1682 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1683 EXPECT_TRUE(stream.get()); 1683 EXPECT_TRUE(stream.get());
1684 1684
1685 // Cause QUIC stream to be created. 1685 // Cause QUIC stream to be created.
1686 HttpRequestInfo request_info; 1686 HttpRequestInfo request_info;
1687 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1687 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1688 net_log_, CompletionCallback())); 1688 net_log_, CompletionCallback()));
1689 1689
1690 // Ensure that session is alive and active. 1690 // Ensure that session is alive and active.
1691 QuicChromiumClientSession* session = 1691 QuicChromiumClientSession* session =
1692 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1692 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
(...skipping 28 matching lines...) Expand all
1721 arraysize(writes)); 1721 arraysize(writes));
1722 socket_factory_.AddSocketDataProvider(&socket_data); 1722 socket_factory_.AddSocketDataProvider(&socket_data);
1723 1723
1724 // Create request and QuicHttpStream. 1724 // Create request and QuicHttpStream.
1725 QuicStreamRequest request(factory_.get()); 1725 QuicStreamRequest request(factory_.get());
1726 EXPECT_EQ(ERR_IO_PENDING, 1726 EXPECT_EQ(ERR_IO_PENDING,
1727 request.Request(host_port_pair_, privacy_mode_, 1727 request.Request(host_port_pair_, privacy_mode_,
1728 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1728 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1729 callback_.callback())); 1729 callback_.callback()));
1730 EXPECT_EQ(OK, callback_.WaitForResult()); 1730 EXPECT_EQ(OK, callback_.WaitForResult());
1731 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1731 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1732 EXPECT_TRUE(stream.get()); 1732 EXPECT_TRUE(stream.get());
1733 1733
1734 // Cause QUIC stream to be created. 1734 // Cause QUIC stream to be created.
1735 HttpRequestInfo request_info; 1735 HttpRequestInfo request_info;
1736 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1736 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1737 net_log_, CompletionCallback())); 1737 net_log_, CompletionCallback()));
1738 1738
1739 // Ensure that session is alive and active. 1739 // Ensure that session is alive and active.
1740 QuicChromiumClientSession* session = 1740 QuicChromiumClientSession* session =
1741 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1741 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1773 arraysize(writes)); 1773 arraysize(writes));
1774 socket_factory_.AddSocketDataProvider(&socket_data); 1774 socket_factory_.AddSocketDataProvider(&socket_data);
1775 1775
1776 // Create request and QuicHttpStream. 1776 // Create request and QuicHttpStream.
1777 QuicStreamRequest request(factory_.get()); 1777 QuicStreamRequest request(factory_.get());
1778 EXPECT_EQ(ERR_IO_PENDING, 1778 EXPECT_EQ(ERR_IO_PENDING,
1779 request.Request(host_port_pair_, privacy_mode_, 1779 request.Request(host_port_pair_, privacy_mode_,
1780 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1780 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1781 callback_.callback())); 1781 callback_.callback()));
1782 EXPECT_EQ(OK, callback_.WaitForResult()); 1782 EXPECT_EQ(OK, callback_.WaitForResult());
1783 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1783 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1784 EXPECT_TRUE(stream.get()); 1784 EXPECT_TRUE(stream.get());
1785 1785
1786 // Cause QUIC stream to be created. 1786 // Cause QUIC stream to be created.
1787 HttpRequestInfo request_info; 1787 HttpRequestInfo request_info;
1788 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1788 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1789 net_log_, CompletionCallback())); 1789 net_log_, CompletionCallback()));
1790 1790
1791 // Ensure that session is alive and active. 1791 // Ensure that session is alive and active.
1792 QuicChromiumClientSession* session = 1792 QuicChromiumClientSession* session =
1793 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1793 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
(...skipping 23 matching lines...) Expand all
1817 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u); 1817 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u);
1818 socket_factory_.AddSocketDataProvider(&socket_data); 1818 socket_factory_.AddSocketDataProvider(&socket_data);
1819 1819
1820 // Create request and QuicHttpStream. 1820 // Create request and QuicHttpStream.
1821 QuicStreamRequest request(factory_.get()); 1821 QuicStreamRequest request(factory_.get());
1822 EXPECT_EQ(ERR_IO_PENDING, 1822 EXPECT_EQ(ERR_IO_PENDING,
1823 request.Request(host_port_pair_, privacy_mode_, 1823 request.Request(host_port_pair_, privacy_mode_,
1824 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1824 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1825 callback_.callback())); 1825 callback_.callback()));
1826 EXPECT_EQ(OK, callback_.WaitForResult()); 1826 EXPECT_EQ(OK, callback_.WaitForResult());
1827 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1827 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1828 EXPECT_TRUE(stream.get()); 1828 EXPECT_TRUE(stream.get());
1829 1829
1830 // Ensure that session is alive and active. 1830 // Ensure that session is alive and active.
1831 QuicChromiumClientSession* session = 1831 QuicChromiumClientSession* session =
1832 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1832 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
1833 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1833 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1834 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 1834 EXPECT_TRUE(HasActiveSession(host_port_pair_));
1835 1835
1836 // Trigger connection migration. Since there are no active streams, 1836 // Trigger connection migration. Since there are no active streams,
1837 // the session will be closed. 1837 // the session will be closed.
(...skipping 17 matching lines...) Expand all
1855 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u); 1855 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u);
1856 socket_factory_.AddSocketDataProvider(&socket_data); 1856 socket_factory_.AddSocketDataProvider(&socket_data);
1857 1857
1858 // Create request and QuicHttpStream. 1858 // Create request and QuicHttpStream.
1859 QuicStreamRequest request(factory_.get()); 1859 QuicStreamRequest request(factory_.get());
1860 EXPECT_EQ(ERR_IO_PENDING, 1860 EXPECT_EQ(ERR_IO_PENDING,
1861 request.Request(host_port_pair_, privacy_mode_, 1861 request.Request(host_port_pair_, privacy_mode_,
1862 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1862 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1863 callback_.callback())); 1863 callback_.callback()));
1864 EXPECT_EQ(OK, callback_.WaitForResult()); 1864 EXPECT_EQ(OK, callback_.WaitForResult());
1865 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1865 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1866 EXPECT_TRUE(stream.get()); 1866 EXPECT_TRUE(stream.get());
1867 1867
1868 // Ensure that session is alive and active. 1868 // Ensure that session is alive and active.
1869 QuicChromiumClientSession* session = 1869 QuicChromiumClientSession* session =
1870 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1870 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
1871 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); 1871 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
1872 EXPECT_TRUE(HasActiveSession(host_port_pair_)); 1872 EXPECT_TRUE(HasActiveSession(host_port_pair_));
1873 1873
1874 // Trigger connection migration. Since there are no active streams, 1874 // Trigger connection migration. Since there are no active streams,
1875 // the session will be closed. 1875 // the session will be closed.
(...skipping 23 matching lines...) Expand all
1899 arraysize(writes)); 1899 arraysize(writes));
1900 socket_factory_.AddSocketDataProvider(&socket_data); 1900 socket_factory_.AddSocketDataProvider(&socket_data);
1901 1901
1902 // Create request and QuicHttpStream. 1902 // Create request and QuicHttpStream.
1903 QuicStreamRequest request(factory_.get()); 1903 QuicStreamRequest request(factory_.get());
1904 EXPECT_EQ(ERR_IO_PENDING, 1904 EXPECT_EQ(ERR_IO_PENDING,
1905 request.Request(host_port_pair_, privacy_mode_, 1905 request.Request(host_port_pair_, privacy_mode_,
1906 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1906 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1907 callback_.callback())); 1907 callback_.callback()));
1908 EXPECT_EQ(OK, callback_.WaitForResult()); 1908 EXPECT_EQ(OK, callback_.WaitForResult());
1909 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 1909 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
1910 EXPECT_TRUE(stream.get()); 1910 EXPECT_TRUE(stream.get());
1911 1911
1912 // Cause QUIC stream to be created. 1912 // Cause QUIC stream to be created.
1913 HttpRequestInfo request_info; 1913 HttpRequestInfo request_info;
1914 request_info.method = "GET"; 1914 request_info.method = "GET";
1915 request_info.url = GURL("https://www.example.org/"); 1915 request_info.url = GURL("https://www.example.org/");
1916 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 1916 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
1917 net_log_, CompletionCallback())); 1917 net_log_, CompletionCallback()));
1918 1918
1919 // Ensure that session is alive and active. 1919 // Ensure that session is alive and active.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1967 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 1967 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
1968 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 1968 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
1969 socket_factory_.AddSocketDataProvider(&socket_data2); 1969 socket_factory_.AddSocketDataProvider(&socket_data2);
1970 1970
1971 QuicStreamRequest request2(factory_.get()); 1971 QuicStreamRequest request2(factory_.get());
1972 EXPECT_EQ(ERR_IO_PENDING, 1972 EXPECT_EQ(ERR_IO_PENDING,
1973 request2.Request(host_port_pair_, privacy_mode_, 1973 request2.Request(host_port_pair_, privacy_mode_,
1974 /*cert_verify_flags=*/0, url_, "GET", net_log_, 1974 /*cert_verify_flags=*/0, url_, "GET", net_log_,
1975 callback_.callback())); 1975 callback_.callback()));
1976 EXPECT_EQ(OK, callback_.WaitForResult()); 1976 EXPECT_EQ(OK, callback_.WaitForResult());
1977 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 1977 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
1978 EXPECT_TRUE(stream2.get()); 1978 EXPECT_TRUE(stream2.get());
1979 1979
1980 EXPECT_TRUE( 1980 EXPECT_TRUE(
1981 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_)); 1981 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), host_port_pair_));
1982 QuicChromiumClientSession* new_session = 1982 QuicChromiumClientSession* new_session =
1983 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 1983 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
1984 EXPECT_NE(session, new_session); 1984 EXPECT_NE(session, new_session);
1985 1985
1986 // On a SOON_TO_DISCONNECT notification, nothing happens to the 1986 // On a SOON_TO_DISCONNECT notification, nothing happens to the
1987 // migrated session, but the new session is closed since it has no 1987 // migrated session, but the new session is closed since it has no
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2022 arraysize(writes)); 2022 arraysize(writes));
2023 socket_factory_.AddSocketDataProvider(&socket_data); 2023 socket_factory_.AddSocketDataProvider(&socket_data);
2024 2024
2025 // Create request and QuicHttpStream. 2025 // Create request and QuicHttpStream.
2026 QuicStreamRequest request(factory_.get()); 2026 QuicStreamRequest request(factory_.get());
2027 EXPECT_EQ(ERR_IO_PENDING, 2027 EXPECT_EQ(ERR_IO_PENDING,
2028 request.Request(host_port_pair_, privacy_mode_, 2028 request.Request(host_port_pair_, privacy_mode_,
2029 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2029 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2030 callback_.callback())); 2030 callback_.callback()));
2031 EXPECT_EQ(OK, callback_.WaitForResult()); 2031 EXPECT_EQ(OK, callback_.WaitForResult());
2032 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2032 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
2033 EXPECT_TRUE(stream.get()); 2033 EXPECT_TRUE(stream.get());
2034 2034
2035 // Cause QUIC stream to be created. 2035 // Cause QUIC stream to be created.
2036 HttpRequestInfo request_info; 2036 HttpRequestInfo request_info;
2037 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2037 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2038 net_log_, CompletionCallback())); 2038 net_log_, CompletionCallback()));
2039 2039
2040 // Ensure that session is alive and active. 2040 // Ensure that session is alive and active.
2041 QuicChromiumClientSession* session = 2041 QuicChromiumClientSession* session =
2042 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 2042 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2081 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 2081 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
2082 socket_factory_.AddSocketDataProvider(&socket_data2); 2082 socket_factory_.AddSocketDataProvider(&socket_data2);
2083 2083
2084 QuicStreamRequest request(factory_.get()); 2084 QuicStreamRequest request(factory_.get());
2085 EXPECT_EQ(ERR_IO_PENDING, 2085 EXPECT_EQ(ERR_IO_PENDING,
2086 request.Request(host_port_pair_, privacy_mode_, 2086 request.Request(host_port_pair_, privacy_mode_,
2087 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2087 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2088 callback_.callback())); 2088 callback_.callback()));
2089 2089
2090 EXPECT_EQ(OK, callback_.WaitForResult()); 2090 EXPECT_EQ(OK, callback_.WaitForResult());
2091 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2091 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
2092 HttpRequestInfo request_info; 2092 HttpRequestInfo request_info;
2093 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2093 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2094 net_log_, CompletionCallback())); 2094 net_log_, CompletionCallback()));
2095 2095
2096 factory_->OnSSLConfigChanged(); 2096 factory_->OnSSLConfigChanged();
2097 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, 2097 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED,
2098 stream->ReadResponseHeaders(callback_.callback())); 2098 stream->ReadResponseHeaders(callback_.callback()));
2099 EXPECT_FALSE(factory_->require_confirmation()); 2099 EXPECT_FALSE(factory_->require_confirmation());
2100 2100
2101 // Now attempting to request a stream to the same origin should create 2101 // Now attempting to request a stream to the same origin should create
2102 // a new session. 2102 // a new session.
2103 2103
2104 QuicStreamRequest request2(factory_.get()); 2104 QuicStreamRequest request2(factory_.get());
2105 EXPECT_EQ(ERR_IO_PENDING, 2105 EXPECT_EQ(ERR_IO_PENDING,
2106 request2.Request(host_port_pair_, privacy_mode_, 2106 request2.Request(host_port_pair_, privacy_mode_,
2107 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2107 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2108 callback_.callback())); 2108 callback_.callback()));
2109 2109
2110 EXPECT_EQ(OK, callback_.WaitForResult()); 2110 EXPECT_EQ(OK, callback_.WaitForResult());
2111 stream = request2.ReleaseStream(); 2111 stream = request2.CreateStream();
2112 stream.reset(); // Will reset stream 3. 2112 stream.reset(); // Will reset stream 3.
2113 2113
2114 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2114 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2115 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2115 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2116 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 2116 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
2117 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 2117 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
2118 } 2118 }
2119 2119
2120 TEST_P(QuicStreamFactoryTest, OnCertAdded) { 2120 TEST_P(QuicStreamFactoryTest, OnCertAdded) {
2121 Initialize(); 2121 Initialize();
(...skipping 14 matching lines...) Expand all
2136 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 2136 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
2137 socket_factory_.AddSocketDataProvider(&socket_data2); 2137 socket_factory_.AddSocketDataProvider(&socket_data2);
2138 2138
2139 QuicStreamRequest request(factory_.get()); 2139 QuicStreamRequest request(factory_.get());
2140 EXPECT_EQ(ERR_IO_PENDING, 2140 EXPECT_EQ(ERR_IO_PENDING,
2141 request.Request(host_port_pair_, privacy_mode_, 2141 request.Request(host_port_pair_, privacy_mode_,
2142 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2142 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2143 callback_.callback())); 2143 callback_.callback()));
2144 2144
2145 EXPECT_EQ(OK, callback_.WaitForResult()); 2145 EXPECT_EQ(OK, callback_.WaitForResult());
2146 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2146 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
2147 HttpRequestInfo request_info; 2147 HttpRequestInfo request_info;
2148 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2148 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2149 net_log_, CompletionCallback())); 2149 net_log_, CompletionCallback()));
2150 2150
2151 // Add a cert and verify that stream saw the event. 2151 // Add a cert and verify that stream saw the event.
2152 factory_->OnCertAdded(nullptr); 2152 factory_->OnCertAdded(nullptr);
2153 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, 2153 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED,
2154 stream->ReadResponseHeaders(callback_.callback())); 2154 stream->ReadResponseHeaders(callback_.callback()));
2155 EXPECT_FALSE(factory_->require_confirmation()); 2155 EXPECT_FALSE(factory_->require_confirmation());
2156 2156
2157 // Now attempting to request a stream to the same origin should create 2157 // Now attempting to request a stream to the same origin should create
2158 // a new session. 2158 // a new session.
2159 2159
2160 QuicStreamRequest request2(factory_.get()); 2160 QuicStreamRequest request2(factory_.get());
2161 EXPECT_EQ(ERR_IO_PENDING, 2161 EXPECT_EQ(ERR_IO_PENDING,
2162 request2.Request(host_port_pair_, privacy_mode_, 2162 request2.Request(host_port_pair_, privacy_mode_,
2163 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2163 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2164 callback_.callback())); 2164 callback_.callback()));
2165 2165
2166 EXPECT_EQ(OK, callback_.WaitForResult()); 2166 EXPECT_EQ(OK, callback_.WaitForResult());
2167 stream = request2.ReleaseStream(); 2167 stream = request2.CreateStream();
2168 stream.reset(); // Will reset stream 3. 2168 stream.reset(); // Will reset stream 3.
2169 2169
2170 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2170 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2171 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2171 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2172 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 2172 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
2173 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 2173 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
2174 } 2174 }
2175 2175
2176 TEST_P(QuicStreamFactoryTest, OnCACertChanged) { 2176 TEST_P(QuicStreamFactoryTest, OnCACertChanged) {
2177 Initialize(); 2177 Initialize();
(...skipping 14 matching lines...) Expand all
2192 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); 2192 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0);
2193 socket_factory_.AddSocketDataProvider(&socket_data2); 2193 socket_factory_.AddSocketDataProvider(&socket_data2);
2194 2194
2195 QuicStreamRequest request(factory_.get()); 2195 QuicStreamRequest request(factory_.get());
2196 EXPECT_EQ(ERR_IO_PENDING, 2196 EXPECT_EQ(ERR_IO_PENDING,
2197 request.Request(host_port_pair_, privacy_mode_, 2197 request.Request(host_port_pair_, privacy_mode_,
2198 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2198 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2199 callback_.callback())); 2199 callback_.callback()));
2200 2200
2201 EXPECT_EQ(OK, callback_.WaitForResult()); 2201 EXPECT_EQ(OK, callback_.WaitForResult());
2202 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2202 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
2203 HttpRequestInfo request_info; 2203 HttpRequestInfo request_info;
2204 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2204 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2205 net_log_, CompletionCallback())); 2205 net_log_, CompletionCallback()));
2206 2206
2207 // Change the CA cert and verify that stream saw the event. 2207 // Change the CA cert and verify that stream saw the event.
2208 factory_->OnCACertChanged(nullptr); 2208 factory_->OnCACertChanged(nullptr);
2209 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, 2209 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED,
2210 stream->ReadResponseHeaders(callback_.callback())); 2210 stream->ReadResponseHeaders(callback_.callback()));
2211 EXPECT_FALSE(factory_->require_confirmation()); 2211 EXPECT_FALSE(factory_->require_confirmation());
2212 2212
2213 // Now attempting to request a stream to the same origin should create 2213 // Now attempting to request a stream to the same origin should create
2214 // a new session. 2214 // a new session.
2215 2215
2216 QuicStreamRequest request2(factory_.get()); 2216 QuicStreamRequest request2(factory_.get());
2217 EXPECT_EQ(ERR_IO_PENDING, 2217 EXPECT_EQ(ERR_IO_PENDING,
2218 request2.Request(host_port_pair_, privacy_mode_, 2218 request2.Request(host_port_pair_, privacy_mode_,
2219 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2219 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2220 callback_.callback())); 2220 callback_.callback()));
2221 2221
2222 EXPECT_EQ(OK, callback_.WaitForResult()); 2222 EXPECT_EQ(OK, callback_.WaitForResult());
2223 stream = request2.ReleaseStream(); 2223 stream = request2.CreateStream();
2224 stream.reset(); // Will reset stream 3. 2224 stream.reset(); // Will reset stream 3.
2225 2225
2226 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2226 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2227 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2227 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2228 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 2228 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
2229 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 2229 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
2230 } 2230 }
2231 2231
2232 TEST_P(QuicStreamFactoryTest, SharedCryptoConfig) { 2232 TEST_P(QuicStreamFactoryTest, SharedCryptoConfig) {
2233 Initialize(); 2233 Initialize();
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
2340 QuicServerId server_id(host_port_pair_, privacy_mode_); 2340 QuicServerId server_id(host_port_pair_, privacy_mode_);
2341 EXPECT_EQ(ERR_IO_PENDING, 2341 EXPECT_EQ(ERR_IO_PENDING,
2342 request.Request(host_port_pair_, privacy_mode_, 2342 request.Request(host_port_pair_, privacy_mode_,
2343 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2343 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2344 callback_.callback())); 2344 callback_.callback()));
2345 EXPECT_EQ(2u, QuicStreamFactoryPeer::GetNumberOfActiveJobs(factory_.get(), 2345 EXPECT_EQ(2u, QuicStreamFactoryPeer::GetNumberOfActiveJobs(factory_.get(),
2346 server_id)); 2346 server_id));
2347 2347
2348 runner_->RunNextTask(); 2348 runner_->RunNextTask();
2349 2349
2350 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2350 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
2351 EXPECT_TRUE(stream.get()); 2351 EXPECT_TRUE(stream.get());
2352 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2352 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2353 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2353 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2354 EXPECT_EQ(0u, QuicStreamFactoryPeer::GetNumberOfActiveJobs(factory_.get(), 2354 EXPECT_EQ(0u, QuicStreamFactoryPeer::GetNumberOfActiveJobs(factory_.get(),
2355 server_id)); 2355 server_id));
2356 } 2356 }
2357 2357
2358 TEST_P(QuicStreamFactoryTest, EnableNotLoadFromDiskCache) { 2358 TEST_P(QuicStreamFactoryTest, EnableNotLoadFromDiskCache) {
2359 disable_disk_cache_ = true; 2359 disable_disk_cache_ = true;
2360 Initialize(); 2360 Initialize();
(...skipping 14 matching lines...) Expand all
2375 2375
2376 QuicStreamRequest request(factory_.get()); 2376 QuicStreamRequest request(factory_.get());
2377 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 2377 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
2378 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2378 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2379 callback_.callback())); 2379 callback_.callback()));
2380 2380
2381 // If we are waiting for disk cache, we would have posted a task. Verify that 2381 // If we are waiting for disk cache, we would have posted a task. Verify that
2382 // the CancelWaitForDataReady task hasn't been posted. 2382 // the CancelWaitForDataReady task hasn't been posted.
2383 ASSERT_EQ(0u, runner_->GetPostedTasks().size()); 2383 ASSERT_EQ(0u, runner_->GetPostedTasks().size());
2384 2384
2385 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2385 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
2386 EXPECT_TRUE(stream.get()); 2386 EXPECT_TRUE(stream.get());
2387 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2387 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2388 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2388 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2389 } 2389 }
2390 2390
2391 TEST_P(QuicStreamFactoryTest, BadPacketLoss) { 2391 TEST_P(QuicStreamFactoryTest, BadPacketLoss) {
2392 disable_disk_cache_ = false; 2392 disable_disk_cache_ = false;
2393 max_number_of_lossy_connections_ = 2; 2393 max_number_of_lossy_connections_ = 2;
2394 Initialize(); 2394 Initialize();
2395 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 2395 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
2536 factory_->OnHandshakeConfirmed(session4, /*packet_loss_rate=*/1.0f)); 2536 factory_->OnHandshakeConfirmed(session4, /*packet_loss_rate=*/1.0f));
2537 EXPECT_EQ(3, QuicStreamFactoryPeer::GetNumberOfLossyConnections( 2537 EXPECT_EQ(3, QuicStreamFactoryPeer::GetNumberOfLossyConnections(
2538 factory_.get(), server4.port())); 2538 factory_.get(), server4.port()));
2539 EXPECT_FALSE(session4->connection()->connected()); 2539 EXPECT_FALSE(session4->connection()->connected());
2540 EXPECT_TRUE( 2540 EXPECT_TRUE(
2541 QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), server4.port())); 2541 QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), server4.port()));
2542 EXPECT_FALSE( 2542 EXPECT_FALSE(
2543 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server4)); 2543 QuicStreamFactoryPeer::HasActiveSession(factory_.get(), server4));
2544 EXPECT_FALSE(HasActiveSession(server4)); 2544 EXPECT_FALSE(HasActiveSession(server4));
2545 2545
2546 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2546 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
2547 EXPECT_TRUE(stream.get()); 2547 EXPECT_TRUE(stream.get());
2548 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 2548 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
2549 EXPECT_TRUE(stream2.get()); 2549 EXPECT_TRUE(stream2.get());
2550 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); 2550 scoped_ptr<QuicHttpStream> stream3 = request3.CreateStream();
2551 EXPECT_TRUE(stream3.get()); 2551 EXPECT_TRUE(stream3.get());
2552 scoped_ptr<QuicHttpStream> stream4 = request4.ReleaseStream(); 2552 scoped_ptr<QuicHttpStream> stream4 = request4.CreateStream();
2553 EXPECT_TRUE(stream4.get()); 2553 EXPECT_TRUE(stream4.get());
2554 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2554 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2555 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2555 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2556 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 2556 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
2557 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 2557 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
2558 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); 2558 EXPECT_TRUE(socket_data3.AllReadDataConsumed());
2559 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); 2559 EXPECT_TRUE(socket_data3.AllWriteDataConsumed());
2560 EXPECT_TRUE(socket_data4.AllReadDataConsumed()); 2560 EXPECT_TRUE(socket_data4.AllReadDataConsumed());
2561 EXPECT_TRUE(socket_data4.AllWriteDataConsumed()); 2561 EXPECT_TRUE(socket_data4.AllWriteDataConsumed());
2562 } 2562 }
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
2629 base::RunLoop run_loop2; 2629 base::RunLoop run_loop2;
2630 run_loop2.RunUntilIdle(); 2630 run_loop2.RunUntilIdle();
2631 EXPECT_EQ(2, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( 2631 EXPECT_EQ(2, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake(
2632 factory_.get())); 2632 factory_.get()));
2633 EXPECT_TRUE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 2633 EXPECT_TRUE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2634 host_port_pair_.port())); 2634 host_port_pair_.port()));
2635 EXPECT_EQ( 2635 EXPECT_EQ(
2636 QuicChromiumClientSession::QUIC_DISABLED_PUBLIC_RESET_POST_HANDSHAKE, 2636 QuicChromiumClientSession::QUIC_DISABLED_PUBLIC_RESET_POST_HANDSHAKE,
2637 factory_->QuicDisabledReason(host_port_pair_.port())); 2637 factory_->QuicDisabledReason(host_port_pair_.port()));
2638 2638
2639 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2639 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
2640 EXPECT_TRUE(stream.get()); 2640 EXPECT_FALSE(stream.get()); // Session is already closed.
2641 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 2641 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
2642 EXPECT_TRUE(stream2.get()); 2642 EXPECT_FALSE(stream2.get()); // Session is already closed.
2643 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2643 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2644 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2644 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2645 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 2645 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
2646 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 2646 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
2647 } 2647 }
2648 2648
2649 TEST_P(QuicStreamFactoryTest, TimeoutsWithOpenStreamsTwoOfTwo) { 2649 TEST_P(QuicStreamFactoryTest, TimeoutsWithOpenStreamsTwoOfTwo) {
2650 disable_disk_cache_ = true; 2650 disable_disk_cache_ = true;
2651 threshold_timeouts_with_open_streams_ = 2; 2651 threshold_timeouts_with_open_streams_ = 2;
2652 Initialize(); 2652 Initialize();
(...skipping 24 matching lines...) Expand all
2677 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); 2677 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", "");
2678 2678
2679 QuicStreamRequest request(factory_.get()); 2679 QuicStreamRequest request(factory_.get());
2680 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 2680 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
2681 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2681 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2682 callback_.callback())); 2682 callback_.callback()));
2683 2683
2684 QuicChromiumClientSession* session = 2684 QuicChromiumClientSession* session =
2685 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 2685 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
2686 2686
2687 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2687 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
2688 EXPECT_TRUE(stream.get()); 2688 EXPECT_TRUE(stream.get());
2689 HttpRequestInfo request_info; 2689 HttpRequestInfo request_info;
2690 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2690 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2691 net_log_, CompletionCallback())); 2691 net_log_, CompletionCallback()));
2692 2692
2693 DVLOG(1) 2693 DVLOG(1)
2694 << "Created 1st session and initialized a stream. Now trigger timeout"; 2694 << "Created 1st session and initialized a stream. Now trigger timeout";
2695 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 2695 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
2696 ConnectionCloseSource::FROM_SELF); 2696 ConnectionCloseSource::FROM_SELF);
2697 // Need to spin the loop now to ensure that 2697 // Need to spin the loop now to ensure that
2698 // QuicStreamFactory::OnSessionClosed() runs. 2698 // QuicStreamFactory::OnSessionClosed() runs.
2699 base::RunLoop run_loop; 2699 base::RunLoop run_loop;
2700 run_loop.RunUntilIdle(); 2700 run_loop.RunUntilIdle();
2701 2701
2702 EXPECT_EQ( 2702 EXPECT_EQ(
2703 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); 2703 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get()));
2704 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 2704 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2705 host_port_pair_.port())); 2705 host_port_pair_.port()));
2706 2706
2707 // Test two-in-a-row timeouts with open streams. 2707 // Test two-in-a-row timeouts with open streams.
2708 DVLOG(1) << "Create 2nd session and timeout with open stream"; 2708 DVLOG(1) << "Create 2nd session and timeout with open stream";
2709 TestCompletionCallback callback2; 2709 TestCompletionCallback callback2;
2710 QuicStreamRequest request2(factory_.get()); 2710 QuicStreamRequest request2(factory_.get());
2711 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_, 2711 EXPECT_EQ(OK, request2.Request(server2, privacy_mode_,
2712 /*cert_verify_flags=*/0, url2_, "GET", 2712 /*cert_verify_flags=*/0, url2_, "GET",
2713 net_log_, callback2.callback())); 2713 net_log_, callback2.callback()));
2714 QuicChromiumClientSession* session2 = 2714 QuicChromiumClientSession* session2 =
2715 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2); 2715 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server2);
2716 2716
2717 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 2717 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
2718 EXPECT_TRUE(stream2.get()); 2718 EXPECT_TRUE(stream2.get());
2719 EXPECT_EQ(OK, stream2->InitializeStream(&request_info, DEFAULT_PRIORITY, 2719 EXPECT_EQ(OK, stream2->InitializeStream(&request_info, DEFAULT_PRIORITY,
2720 net_log_, CompletionCallback())); 2720 net_log_, CompletionCallback()));
2721 2721
2722 session2->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 2722 session2->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
2723 ConnectionCloseSource::FROM_SELF); 2723 ConnectionCloseSource::FROM_SELF);
2724 // Need to spin the loop now to ensure that 2724 // Need to spin the loop now to ensure that
2725 // QuicStreamFactory::OnSessionClosed() runs. 2725 // QuicStreamFactory::OnSessionClosed() runs.
2726 base::RunLoop run_loop2; 2726 base::RunLoop run_loop2;
2727 run_loop2.RunUntilIdle(); 2727 run_loop2.RunUntilIdle();
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
2832 base::RunLoop run_loop3; 2832 base::RunLoop run_loop3;
2833 run_loop3.RunUntilIdle(); 2833 run_loop3.RunUntilIdle();
2834 EXPECT_EQ(2, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( 2834 EXPECT_EQ(2, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake(
2835 factory_.get())); 2835 factory_.get()));
2836 EXPECT_TRUE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 2836 EXPECT_TRUE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2837 host_port_pair_.port())); 2837 host_port_pair_.port()));
2838 EXPECT_EQ( 2838 EXPECT_EQ(
2839 QuicChromiumClientSession::QUIC_DISABLED_PUBLIC_RESET_POST_HANDSHAKE, 2839 QuicChromiumClientSession::QUIC_DISABLED_PUBLIC_RESET_POST_HANDSHAKE,
2840 factory_->QuicDisabledReason(host_port_pair_.port())); 2840 factory_->QuicDisabledReason(host_port_pair_.port()));
2841 2841
2842 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2842 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
2843 EXPECT_TRUE(stream.get()); 2843 EXPECT_FALSE(stream.get()); // Session is already closed.
2844 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 2844 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
2845 EXPECT_TRUE(stream2.get()); 2845 EXPECT_FALSE(stream2.get()); // Session is already closed.
2846 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); 2846 scoped_ptr<QuicHttpStream> stream3 = request3.CreateStream();
2847 EXPECT_TRUE(stream3.get()); 2847 EXPECT_FALSE(stream3.get()); // Session is already closed.
2848 2848
2849 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2849 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2850 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2850 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2851 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 2851 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
2852 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 2852 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
2853 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); 2853 EXPECT_TRUE(socket_data3.AllReadDataConsumed());
2854 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); 2854 EXPECT_TRUE(socket_data3.AllWriteDataConsumed());
2855 } 2855 }
2856 2856
2857 TEST_P(QuicStreamFactoryTest, TimeoutsWithOpenStreamsTwoOfThree) { 2857 TEST_P(QuicStreamFactoryTest, TimeoutsWithOpenStreamsTwoOfThree) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2893 2893
2894 // Test first and third out of three timeouts with open streams. 2894 // Test first and third out of three timeouts with open streams.
2895 QuicStreamRequest request(factory_.get()); 2895 QuicStreamRequest request(factory_.get());
2896 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 2896 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
2897 /*cert_verify_flags=*/0, url_, "GET", net_log_, 2897 /*cert_verify_flags=*/0, url_, "GET", net_log_,
2898 callback_.callback())); 2898 callback_.callback()));
2899 2899
2900 QuicChromiumClientSession* session = 2900 QuicChromiumClientSession* session =
2901 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 2901 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
2902 2902
2903 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 2903 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
2904 EXPECT_TRUE(stream.get()); 2904 EXPECT_TRUE(stream.get());
2905 HttpRequestInfo request_info; 2905 HttpRequestInfo request_info;
2906 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 2906 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
2907 net_log_, CompletionCallback())); 2907 net_log_, CompletionCallback()));
2908 2908
2909 DVLOG(1) 2909 DVLOG(1)
2910 << "Created 1st session and initialized a stream. Now trigger timeout"; 2910 << "Created 1st session and initialized a stream. Now trigger timeout";
2911 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 2911 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
2912 ConnectionCloseSource::FROM_SELF); 2912 ConnectionCloseSource::FROM_SELF);
2913 // Need to spin the loop now to ensure that 2913 // Need to spin the loop now to ensure that
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2945 << " will disable QUIC"; 2945 << " will disable QUIC";
2946 2946
2947 TestCompletionCallback callback3; 2947 TestCompletionCallback callback3;
2948 QuicStreamRequest request3(factory_.get()); 2948 QuicStreamRequest request3(factory_.get());
2949 EXPECT_EQ(OK, request3.Request(server3, privacy_mode_, 2949 EXPECT_EQ(OK, request3.Request(server3, privacy_mode_,
2950 /*cert_verify_flags=*/0, url3_, "GET", 2950 /*cert_verify_flags=*/0, url3_, "GET",
2951 net_log_, callback3.callback())); 2951 net_log_, callback3.callback()));
2952 QuicChromiumClientSession* session3 = 2952 QuicChromiumClientSession* session3 =
2953 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server3); 2953 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server3);
2954 2954
2955 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); 2955 scoped_ptr<QuicHttpStream> stream3 = request3.CreateStream();
2956 EXPECT_TRUE(stream3.get()); 2956 EXPECT_TRUE(stream3.get());
2957 EXPECT_EQ(OK, stream3->InitializeStream(&request_info, DEFAULT_PRIORITY, 2957 EXPECT_EQ(OK, stream3->InitializeStream(&request_info, DEFAULT_PRIORITY,
2958 net_log_, CompletionCallback())); 2958 net_log_, CompletionCallback()));
2959 session3->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 2959 session3->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
2960 ConnectionCloseSource::FROM_SELF); 2960 ConnectionCloseSource::FROM_SELF);
2961 // Need to spin the loop now to ensure that 2961 // Need to spin the loop now to ensure that
2962 // QuicStreamFactory::OnSessionClosed() runs. 2962 // QuicStreamFactory::OnSessionClosed() runs.
2963 base::RunLoop run_loop3; 2963 base::RunLoop run_loop3;
2964 run_loop3.RunUntilIdle(); 2964 run_loop3.RunUntilIdle();
2965 EXPECT_EQ( 2965 EXPECT_EQ(
2966 2, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); 2966 2, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get()));
2967 EXPECT_TRUE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 2967 EXPECT_TRUE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
2968 host_port_pair_.port())); 2968 host_port_pair_.port()));
2969 EXPECT_EQ(QuicChromiumClientSession::QUIC_DISABLED_TIMEOUT_WITH_OPEN_STREAMS, 2969 EXPECT_EQ(QuicChromiumClientSession::QUIC_DISABLED_TIMEOUT_WITH_OPEN_STREAMS,
2970 factory_->QuicDisabledReason(host_port_pair_.port())); 2970 factory_->QuicDisabledReason(host_port_pair_.port()));
2971 2971
2972 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 2972 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
2973 EXPECT_TRUE(stream2.get()); 2973 EXPECT_FALSE(stream2.get()); // Session is already closed.
2974 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 2974 EXPECT_TRUE(socket_data.AllReadDataConsumed());
2975 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 2975 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
2976 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 2976 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
2977 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 2977 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
2978 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); 2978 EXPECT_TRUE(socket_data3.AllReadDataConsumed());
2979 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); 2979 EXPECT_TRUE(socket_data3.AllWriteDataConsumed());
2980 } 2980 }
2981 2981
2982 TEST_P(QuicStreamFactoryTest, DisableQuicWhenTimeoutsWithOpenStreams) { 2982 TEST_P(QuicStreamFactoryTest, DisableQuicWhenTimeoutsWithOpenStreams) {
2983 disable_disk_cache_ = true; 2983 disable_disk_cache_ = true;
(...skipping 20 matching lines...) Expand all
3004 3004
3005 // Test first timeouts with open streams will disable QUIC. 3005 // Test first timeouts with open streams will disable QUIC.
3006 QuicStreamRequest request(factory_.get()); 3006 QuicStreamRequest request(factory_.get());
3007 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 3007 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
3008 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3008 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3009 callback_.callback())); 3009 callback_.callback()));
3010 3010
3011 QuicChromiumClientSession* session = 3011 QuicChromiumClientSession* session =
3012 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 3012 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
3013 3013
3014 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 3014 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
3015 EXPECT_TRUE(stream.get()); 3015 EXPECT_TRUE(stream.get());
3016 HttpRequestInfo request_info; 3016 HttpRequestInfo request_info;
3017 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3017 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3018 net_log_, CompletionCallback())); 3018 net_log_, CompletionCallback()));
3019 3019
3020 DVLOG(1) 3020 DVLOG(1)
3021 << "Created 1st session and initialized a stream. Now trigger timeout." 3021 << "Created 1st session and initialized a stream. Now trigger timeout."
3022 << "Will disable QUIC."; 3022 << "Will disable QUIC.";
3023 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 3023 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
3024 ConnectionCloseSource::FROM_SELF); 3024 ConnectionCloseSource::FROM_SELF);
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
3156 ConnectionCloseSource::FROM_PEER); 3156 ConnectionCloseSource::FROM_PEER);
3157 // Need to spin the loop now to ensure that 3157 // Need to spin the loop now to ensure that
3158 // QuicStreamFactory::OnSessionClosed() runs. 3158 // QuicStreamFactory::OnSessionClosed() runs.
3159 base::RunLoop run_loop4; 3159 base::RunLoop run_loop4;
3160 run_loop4.RunUntilIdle(); 3160 run_loop4.RunUntilIdle();
3161 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake( 3161 EXPECT_EQ(1, QuicStreamFactoryPeer::GetNumPublicResetsPostHandshake(
3162 factory_.get())); 3162 factory_.get()));
3163 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 3163 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
3164 host_port_pair_.port())); 3164 host_port_pair_.port()));
3165 3165
3166 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 3166 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
3167 EXPECT_TRUE(stream.get()); 3167 EXPECT_FALSE(stream.get()); // Session is already closed.
3168 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 3168 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
3169 EXPECT_TRUE(stream2.get()); 3169 EXPECT_FALSE(stream2.get()); // Session is already closed.
3170 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); 3170 scoped_ptr<QuicHttpStream> stream3 = request3.CreateStream();
3171 EXPECT_TRUE(stream3.get()); 3171 EXPECT_FALSE(stream3.get()); // Session is already closed.
3172 scoped_ptr<QuicHttpStream> stream4 = request4.ReleaseStream(); 3172 scoped_ptr<QuicHttpStream> stream4 = request4.CreateStream();
3173 EXPECT_TRUE(stream4.get()); 3173 EXPECT_FALSE(stream4.get()); // Session is already closed.
3174 3174
3175 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 3175 EXPECT_TRUE(socket_data.AllReadDataConsumed());
3176 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 3176 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
3177 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 3177 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
3178 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 3178 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
3179 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); 3179 EXPECT_TRUE(socket_data3.AllReadDataConsumed());
3180 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); 3180 EXPECT_TRUE(socket_data3.AllWriteDataConsumed());
3181 EXPECT_TRUE(socket_data4.AllReadDataConsumed()); 3181 EXPECT_TRUE(socket_data4.AllReadDataConsumed());
3182 EXPECT_TRUE(socket_data4.AllWriteDataConsumed()); 3182 EXPECT_TRUE(socket_data4.AllWriteDataConsumed());
3183 } 3183 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
3227 3227
3228 // Test first and fourth out of three timeouts with open streams. 3228 // Test first and fourth out of three timeouts with open streams.
3229 QuicStreamRequest request(factory_.get()); 3229 QuicStreamRequest request(factory_.get());
3230 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, 3230 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_,
3231 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3231 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3232 callback_.callback())); 3232 callback_.callback()));
3233 3233
3234 QuicChromiumClientSession* session = 3234 QuicChromiumClientSession* session =
3235 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 3235 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
3236 3236
3237 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 3237 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
3238 EXPECT_TRUE(stream.get()); 3238 EXPECT_TRUE(stream.get());
3239 HttpRequestInfo request_info; 3239 HttpRequestInfo request_info;
3240 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, 3240 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY,
3241 net_log_, CompletionCallback())); 3241 net_log_, CompletionCallback()));
3242 3242
3243 DVLOG(1) 3243 DVLOG(1)
3244 << "Created 1st session and initialized a stream. Now trigger timeout"; 3244 << "Created 1st session and initialized a stream. Now trigger timeout";
3245 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 3245 session->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
3246 ConnectionCloseSource::FROM_SELF); 3246 ConnectionCloseSource::FROM_SELF);
3247 // Need to spin the loop now to ensure that 3247 // Need to spin the loop now to ensure that
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
3297 << " will not disable QUIC"; 3297 << " will not disable QUIC";
3298 3298
3299 TestCompletionCallback callback4; 3299 TestCompletionCallback callback4;
3300 QuicStreamRequest request4(factory_.get()); 3300 QuicStreamRequest request4(factory_.get());
3301 EXPECT_EQ(OK, request4.Request(server4, privacy_mode_, 3301 EXPECT_EQ(OK, request4.Request(server4, privacy_mode_,
3302 /*cert_verify_flags=*/0, url4_, "GET", 3302 /*cert_verify_flags=*/0, url4_, "GET",
3303 net_log_, callback4.callback())); 3303 net_log_, callback4.callback()));
3304 QuicChromiumClientSession* session4 = 3304 QuicChromiumClientSession* session4 =
3305 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server4); 3305 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), server4);
3306 3306
3307 scoped_ptr<QuicHttpStream> stream4 = request4.ReleaseStream(); 3307 scoped_ptr<QuicHttpStream> stream4 = request4.CreateStream();
3308 EXPECT_TRUE(stream4.get()); 3308 EXPECT_TRUE(stream4.get());
3309 EXPECT_EQ(OK, stream4->InitializeStream(&request_info, DEFAULT_PRIORITY, 3309 EXPECT_EQ(OK, stream4->InitializeStream(&request_info, DEFAULT_PRIORITY,
3310 net_log_, CompletionCallback())); 3310 net_log_, CompletionCallback()));
3311 session4->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT, 3311 session4->connection()->CloseConnection(QUIC_NETWORK_IDLE_TIMEOUT,
3312 ConnectionCloseSource::FROM_SELF); 3312 ConnectionCloseSource::FROM_SELF);
3313 // Need to spin the loop now to ensure that 3313 // Need to spin the loop now to ensure that
3314 // QuicStreamFactory::OnSessionClosed() runs. 3314 // QuicStreamFactory::OnSessionClosed() runs.
3315 base::RunLoop run_loop4; 3315 base::RunLoop run_loop4;
3316 run_loop4.RunUntilIdle(); 3316 run_loop4.RunUntilIdle();
3317 EXPECT_EQ( 3317 EXPECT_EQ(
3318 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get())); 3318 1, QuicStreamFactoryPeer::GetNumTimeoutsWithOpenStreams(factory_.get()));
3319 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(), 3319 EXPECT_FALSE(QuicStreamFactoryPeer::IsQuicDisabled(factory_.get(),
3320 host_port_pair_.port())); 3320 host_port_pair_.port()));
3321 3321
3322 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 3322 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
3323 EXPECT_TRUE(stream2.get()); 3323 EXPECT_FALSE(stream2.get()); // Session is already closed.
3324 scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream(); 3324 scoped_ptr<QuicHttpStream> stream3 = request3.CreateStream();
3325 EXPECT_TRUE(stream3.get()); 3325 EXPECT_FALSE(stream3.get()); // Session is already closed.
3326 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 3326 EXPECT_TRUE(socket_data.AllReadDataConsumed());
3327 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 3327 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
3328 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 3328 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
3329 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 3329 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
3330 EXPECT_TRUE(socket_data3.AllReadDataConsumed()); 3330 EXPECT_TRUE(socket_data3.AllReadDataConsumed());
3331 EXPECT_TRUE(socket_data3.AllWriteDataConsumed()); 3331 EXPECT_TRUE(socket_data3.AllWriteDataConsumed());
3332 EXPECT_TRUE(socket_data4.AllReadDataConsumed()); 3332 EXPECT_TRUE(socket_data4.AllReadDataConsumed());
3333 EXPECT_TRUE(socket_data4.AllWriteDataConsumed()); 3333 EXPECT_TRUE(socket_data4.AllWriteDataConsumed());
3334 } 3334 }
3335 3335
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
3369 EXPECT_TRUE(factory_->delay_tcp_race()); 3369 EXPECT_TRUE(factory_->delay_tcp_race());
3370 EXPECT_EQ(base::TimeDelta::FromMicroseconds(15), 3370 EXPECT_EQ(base::TimeDelta::FromMicroseconds(15),
3371 request.GetTimeDelayForWaitingJob()); 3371 request.GetTimeDelayForWaitingJob());
3372 3372
3373 // Confirm the handshake and verify that the stream is created. 3373 // Confirm the handshake and verify that the stream is created.
3374 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( 3374 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
3375 QuicSession::HANDSHAKE_CONFIRMED); 3375 QuicSession::HANDSHAKE_CONFIRMED);
3376 3376
3377 EXPECT_EQ(OK, callback_.WaitForResult()); 3377 EXPECT_EQ(OK, callback_.WaitForResult());
3378 3378
3379 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 3379 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
3380 EXPECT_TRUE(stream.get()); 3380 EXPECT_TRUE(stream.get());
3381 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 3381 EXPECT_TRUE(socket_data.AllReadDataConsumed());
3382 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 3382 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
3383 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), delay_tcp_race); 3383 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), delay_tcp_race);
3384 } 3384 }
3385 3385
3386 TEST_P(QuicStreamFactoryTest, MaybeInitialize) { 3386 TEST_P(QuicStreamFactoryTest, MaybeInitialize) {
3387 idle_connection_timeout_seconds_ = 500; 3387 idle_connection_timeout_seconds_ = 500;
3388 Initialize(); 3388 Initialize();
3389 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 3389 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
3514 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets 3514 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets
3515 // called. 3515 // called.
3516 base::RunLoop run_loop; 3516 base::RunLoop run_loop;
3517 run_loop.RunUntilIdle(); 3517 run_loop.RunUntilIdle();
3518 3518
3519 // Verify task that the observer's executed_count is 1, which indicates 3519 // Verify task that the observer's executed_count is 1, which indicates
3520 // QuicChromiumPacketReader::StartReading() has posted only one task and 3520 // QuicChromiumPacketReader::StartReading() has posted only one task and
3521 // yielded the read. 3521 // yielded the read.
3522 EXPECT_EQ(1u, observer.executed_count()); 3522 EXPECT_EQ(1u, observer.executed_count());
3523 3523
3524 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 3524 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
3525 EXPECT_TRUE(stream.get()); 3525 EXPECT_FALSE(stream.get()); // Session is already closed.
3526 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 3526 EXPECT_TRUE(socket_data.AllReadDataConsumed());
3527 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 3527 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
3528 } 3528 }
3529 3529
3530 TEST_P(QuicStreamFactoryTest, YieldAfterDuration) { 3530 TEST_P(QuicStreamFactoryTest, YieldAfterDuration) {
3531 Initialize(); 3531 Initialize();
3532 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 3532 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
3533 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 3533 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3534 QuicStreamFactoryPeer::SetYieldAfterDuration( 3534 QuicStreamFactoryPeer::SetYieldAfterDuration(
3535 factory_.get(), QuicTime::Delta::FromMilliseconds(-1)); 3535 factory_.get(), QuicTime::Delta::FromMilliseconds(-1));
(...skipping 27 matching lines...) Expand all
3563 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets 3563 // Call run_loop so that QuicChromiumPacketReader::OnReadComplete() gets
3564 // called. 3564 // called.
3565 base::RunLoop run_loop; 3565 base::RunLoop run_loop;
3566 run_loop.RunUntilIdle(); 3566 run_loop.RunUntilIdle();
3567 3567
3568 // Verify task that the observer's executed_count is 1, which indicates 3568 // Verify task that the observer's executed_count is 1, which indicates
3569 // QuicChromiumPacketReader::StartReading() has posted only one task and 3569 // QuicChromiumPacketReader::StartReading() has posted only one task and
3570 // yielded the read. 3570 // yielded the read.
3571 EXPECT_EQ(1u, observer.executed_count()); 3571 EXPECT_EQ(1u, observer.executed_count());
3572 3572
3573 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 3573 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
3574 EXPECT_TRUE(stream.get()); 3574 EXPECT_FALSE(stream.get()); // Session is already closed.
3575 EXPECT_TRUE(socket_data.AllReadDataConsumed()); 3575 EXPECT_TRUE(socket_data.AllReadDataConsumed());
3576 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); 3576 EXPECT_TRUE(socket_data.AllWriteDataConsumed());
3577 } 3577 }
3578 3578
3579 TEST_P(QuicStreamFactoryTest, ServerPushSessionAffinity) { 3579 TEST_P(QuicStreamFactoryTest, ServerPushSessionAffinity) {
3580 Initialize(); 3580 Initialize();
3581 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); 3581 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails();
3582 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); 3582 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
3583 3583
3584 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 3584 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
3585 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); 3585 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0);
3586 socket_factory_.AddSocketDataProvider(&socket_data); 3586 socket_factory_.AddSocketDataProvider(&socket_data);
3587 3587
3588 QuicStreamRequest request(factory_.get()); 3588 QuicStreamRequest request(factory_.get());
3589 EXPECT_EQ(ERR_IO_PENDING, 3589 EXPECT_EQ(ERR_IO_PENDING,
3590 request.Request(host_port_pair_, privacy_mode_, 3590 request.Request(host_port_pair_, privacy_mode_,
3591 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3591 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3592 callback_.callback())); 3592 callback_.callback()));
3593 3593
3594 EXPECT_EQ(OK, callback_.WaitForResult()); 3594 EXPECT_EQ(OK, callback_.WaitForResult());
3595 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 3595 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
3596 EXPECT_TRUE(stream.get()); 3596 EXPECT_TRUE(stream.get());
3597 3597
3598 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 3598 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
3599 3599
3600 std::string url = "https://www.example.org/"; 3600 std::string url = "https://www.example.org/";
3601 3601
3602 QuicChromiumClientSession* session = 3602 QuicChromiumClientSession* session =
3603 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 3603 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
3604 3604
3605 QuicClientPromisedInfo promised(session, kServerDataStreamId1, url); 3605 QuicClientPromisedInfo promised(session, kServerDataStreamId1, url);
(...skipping 29 matching lines...) Expand all
3635 socket_factory_.AddSocketDataProvider(&socket_data1); 3635 socket_factory_.AddSocketDataProvider(&socket_data1);
3636 socket_factory_.AddSocketDataProvider(&socket_data2); 3636 socket_factory_.AddSocketDataProvider(&socket_data2);
3637 3637
3638 QuicStreamRequest request(factory_.get()); 3638 QuicStreamRequest request(factory_.get());
3639 EXPECT_EQ(ERR_IO_PENDING, 3639 EXPECT_EQ(ERR_IO_PENDING,
3640 request.Request(host_port_pair_, privacy_mode_, 3640 request.Request(host_port_pair_, privacy_mode_,
3641 /*cert_verify_flags=*/0, url_, "GET", net_log_, 3641 /*cert_verify_flags=*/0, url_, "GET", net_log_,
3642 callback_.callback())); 3642 callback_.callback()));
3643 3643
3644 EXPECT_EQ(OK, callback_.WaitForResult()); 3644 EXPECT_EQ(OK, callback_.WaitForResult());
3645 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); 3645 scoped_ptr<QuicHttpStream> stream = request.CreateStream();
3646 EXPECT_TRUE(stream.get()); 3646 EXPECT_TRUE(stream.get());
3647 3647
3648 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 3648 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
3649 3649
3650 std::string url = "https://www.example.org/"; 3650 std::string url = "https://www.example.org/";
3651 QuicChromiumClientSession* session = 3651 QuicChromiumClientSession* session =
3652 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_); 3652 QuicStreamFactoryPeer::GetActiveSession(factory_.get(), host_port_pair_);
3653 3653
3654 QuicClientPromisedInfo promised(session, kServerDataStreamId1, url); 3654 QuicClientPromisedInfo promised(session, kServerDataStreamId1, url);
3655 3655
3656 QuicClientPushPromiseIndex* index = 3656 QuicClientPushPromiseIndex* index =
3657 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()); 3657 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get());
3658 3658
3659 (*index->promised_by_url())[url] = &promised; 3659 (*index->promised_by_url())[url] = &promised;
3660 EXPECT_EQ(index->GetPromised(url), &promised); 3660 EXPECT_EQ(index->GetPromised(url), &promised);
3661 3661
3662 // Doing the request should not use the push stream, but rather 3662 // Doing the request should not use the push stream, but rather
3663 // cancel it because the privacy modes do not match. 3663 // cancel it because the privacy modes do not match.
3664 QuicStreamRequest request2(factory_.get()); 3664 QuicStreamRequest request2(factory_.get());
3665 EXPECT_EQ(ERR_IO_PENDING, 3665 EXPECT_EQ(ERR_IO_PENDING,
3666 request2.Request(host_port_pair_, PRIVACY_MODE_ENABLED, 3666 request2.Request(host_port_pair_, PRIVACY_MODE_ENABLED,
3667 /*cert_verify_flags=*/0, GURL(url), "GET", 3667 /*cert_verify_flags=*/0, GURL(url), "GET",
3668 net_log_, callback_.callback())); 3668 net_log_, callback_.callback()));
3669 3669
3670 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); 3670 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get()));
3671 EXPECT_EQ(index->GetPromised(url), nullptr); 3671 EXPECT_EQ(index->GetPromised(url), nullptr);
3672 3672
3673 EXPECT_EQ(OK, callback_.WaitForResult()); 3673 EXPECT_EQ(OK, callback_.WaitForResult());
3674 scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream(); 3674 scoped_ptr<QuicHttpStream> stream2 = request2.CreateStream();
3675 EXPECT_TRUE(stream2.get()); 3675 EXPECT_TRUE(stream2.get());
3676 3676
3677 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); 3677 EXPECT_TRUE(socket_data1.AllReadDataConsumed());
3678 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); 3678 EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
3679 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); 3679 EXPECT_TRUE(socket_data2.AllReadDataConsumed());
3680 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); 3680 EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
3681 } 3681 }
3682 3682
3683 } // namespace test 3683 } // namespace test
3684 } // namespace net 3684 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698