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

Side by Side Diff: net/quic/chromium/quic_network_transaction_unittest.cc

Issue 2907463002: Split HttpNetworkSession::Params into two structs. (Closed)
Patch Set: Response to comments Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/chromium/quic_end_to_end_unittest.cc ('k') | net/socket/client_socket_pool_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <algorithm> 5 #include <algorithm>
6 #include <memory> 6 #include <memory>
7 #include <ostream> 7 #include <ostream>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 bool should_include_version, 493 bool should_include_version,
494 bool fin, 494 bool fin,
495 SpdyHeaderBlock headers, 495 SpdyHeaderBlock headers,
496 QuicStreamOffset* offset) { 496 QuicStreamOffset* offset) {
497 return server_maker_.MakeResponseHeadersPacketWithOffsetTracking( 497 return server_maker_.MakeResponseHeadersPacketWithOffsetTracking(
498 packet_number, stream_id, should_include_version, fin, 498 packet_number, stream_id, should_include_version, fin,
499 std::move(headers), offset); 499 std::move(headers), offset);
500 } 500 }
501 501
502 void CreateSession() { 502 void CreateSession() {
503 params_.enable_quic = true; 503 session_params_.enable_quic = true;
504 params_.quic_clock = &clock_; 504 session_params_.quic_supported_versions = SupportedVersions(version_);
505 params_.quic_random = &random_generator_; 505
506 params_.client_socket_factory = &socket_factory_; 506 session_context_.quic_clock = &clock_;
507 params_.quic_crypto_client_stream_factory = &crypto_client_stream_factory_; 507 session_context_.quic_random = &random_generator_;
508 params_.host_resolver = &host_resolver_; 508 session_context_.client_socket_factory = &socket_factory_;
509 params_.cert_verifier = &cert_verifier_; 509 session_context_.quic_crypto_client_stream_factory =
510 params_.transport_security_state = &transport_security_state_; 510 &crypto_client_stream_factory_;
511 params_.cert_transparency_verifier = cert_transparency_verifier_.get(); 511 session_context_.host_resolver = &host_resolver_;
512 params_.ct_policy_enforcer = &ct_policy_enforcer_; 512 session_context_.cert_verifier = &cert_verifier_;
513 params_.socket_performance_watcher_factory = 513 session_context_.transport_security_state = &transport_security_state_;
514 session_context_.cert_transparency_verifier =
515 cert_transparency_verifier_.get();
516 session_context_.ct_policy_enforcer = &ct_policy_enforcer_;
517 session_context_.socket_performance_watcher_factory =
514 &test_socket_performance_watcher_factory_; 518 &test_socket_performance_watcher_factory_;
515 params_.proxy_service = proxy_service_.get(); 519 session_context_.proxy_service = proxy_service_.get();
516 params_.ssl_config_service = ssl_config_service_.get(); 520 session_context_.ssl_config_service = ssl_config_service_.get();
517 params_.http_auth_handler_factory = auth_handler_factory_.get(); 521 session_context_.http_auth_handler_factory = auth_handler_factory_.get();
518 params_.http_server_properties = &http_server_properties_; 522 session_context_.http_server_properties = &http_server_properties_;
519 params_.quic_supported_versions = SupportedVersions(version_); 523 session_context_.net_log = net_log_.bound().net_log();
520 params_.net_log = net_log_.bound().net_log();
521 524
522 session_.reset(new HttpNetworkSession(params_)); 525 session_.reset(new HttpNetworkSession(session_params_, session_context_));
523 session_->quic_stream_factory()->set_require_confirmation(false); 526 session_->quic_stream_factory()->set_require_confirmation(false);
524 } 527 }
525 528
526 void CheckWasQuicResponse(HttpNetworkTransaction* trans) { 529 void CheckWasQuicResponse(HttpNetworkTransaction* trans) {
527 const HttpResponseInfo* response = trans->GetResponseInfo(); 530 const HttpResponseInfo* response = trans->GetResponseInfo();
528 ASSERT_TRUE(response != nullptr); 531 ASSERT_TRUE(response != nullptr);
529 ASSERT_TRUE(response->headers.get() != nullptr); 532 ASSERT_TRUE(response->headers.get() != nullptr);
530 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 533 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
531 EXPECT_TRUE(response->was_fetched_via_spdy); 534 EXPECT_TRUE(response->was_fetched_via_spdy);
532 EXPECT_TRUE(response->was_alpn_negotiated); 535 EXPECT_TRUE(response->was_alpn_negotiated);
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 socket_factory_.AddSocketDataProvider(&http_data_1); 693 socket_factory_.AddSocketDataProvider(&http_data_1);
691 socket_factory_.AddSocketDataProvider(&http_data_2); 694 socket_factory_.AddSocketDataProvider(&http_data_2);
692 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 695 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
693 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 696 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
694 697
695 TestProxyDelegate test_proxy_delegate; 698 TestProxyDelegate test_proxy_delegate;
696 // Proxy URL is different from the request URL. 699 // Proxy URL is different from the request URL.
697 test_proxy_delegate.set_alternative_proxy_server( 700 test_proxy_delegate.set_alternative_proxy_server(
698 ProxyServer::FromPacString("QUIC myproxy.org:443")); 701 ProxyServer::FromPacString("QUIC myproxy.org:443"));
699 702
700 params_.proxy_delegate = &test_proxy_delegate; 703 session_context_.proxy_delegate = &test_proxy_delegate;
701 proxy_service_ = 704 proxy_service_ =
702 ProxyService::CreateFixedFromPacResult("HTTPS myproxy.org:443"); 705 ProxyService::CreateFixedFromPacResult("HTTPS myproxy.org:443");
703 706
704 CreateSession(); 707 CreateSession();
705 EXPECT_TRUE(test_proxy_delegate.alternative_proxy_server().is_valid()); 708 EXPECT_TRUE(test_proxy_delegate.alternative_proxy_server().is_valid());
706 709
707 // The first request should be fetched via the HTTPS proxy. 710 // The first request should be fetched via the HTTPS proxy.
708 SendRequestAndExpectHttpResponseFromProxy("hello from http", true, 443); 711 SendRequestAndExpectHttpResponseFromProxy("hello from http", true, 443);
709 712
710 // Even through the alternative proxy server job failed, the proxy should 713 // Even through the alternative proxy server job failed, the proxy should
(...skipping 29 matching lines...) Expand all
740 MockCertVerifier cert_verifier_; 743 MockCertVerifier cert_verifier_;
741 TransportSecurityState transport_security_state_; 744 TransportSecurityState transport_security_state_;
742 std::unique_ptr<CTVerifier> cert_transparency_verifier_; 745 std::unique_ptr<CTVerifier> cert_transparency_verifier_;
743 CTPolicyEnforcer ct_policy_enforcer_; 746 CTPolicyEnforcer ct_policy_enforcer_;
744 TestSocketPerformanceWatcherFactory test_socket_performance_watcher_factory_; 747 TestSocketPerformanceWatcherFactory test_socket_performance_watcher_factory_;
745 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_; 748 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service_;
746 std::unique_ptr<ProxyService> proxy_service_; 749 std::unique_ptr<ProxyService> proxy_service_;
747 std::unique_ptr<HttpAuthHandlerFactory> auth_handler_factory_; 750 std::unique_ptr<HttpAuthHandlerFactory> auth_handler_factory_;
748 MockRandom random_generator_; 751 MockRandom random_generator_;
749 HttpServerPropertiesImpl http_server_properties_; 752 HttpServerPropertiesImpl http_server_properties_;
750 HttpNetworkSession::Params params_; 753 HttpNetworkSession::Params session_params_;
754 HttpNetworkSession::Context session_context_;
751 HttpRequestInfo request_; 755 HttpRequestInfo request_;
752 BoundTestNetLog net_log_; 756 BoundTestNetLog net_log_;
753 std::vector<std::unique_ptr<StaticSocketDataProvider>> hanging_data_; 757 std::vector<std::unique_ptr<StaticSocketDataProvider>> hanging_data_;
754 SSLSocketDataProvider ssl_data_; 758 SSLSocketDataProvider ssl_data_;
755 759
756 private: 760 private:
757 void SendRequestAndExpectQuicResponseMaybeFromProxy( 761 void SendRequestAndExpectQuicResponseMaybeFromProxy(
758 const std::string& expected, 762 const std::string& expected,
759 bool used_proxy, 763 bool used_proxy,
760 uint16_t port) { 764 uint16_t port) {
(...skipping 13 matching lines...) Expand all
774 EXPECT_TRUE(trans.GetResponseInfo()->proxy_server.is_direct()); 778 EXPECT_TRUE(trans.GetResponseInfo()->proxy_server.is_direct());
775 } 779 }
776 } 780 }
777 }; 781 };
778 782
779 INSTANTIATE_TEST_CASE_P(Version, 783 INSTANTIATE_TEST_CASE_P(Version,
780 QuicNetworkTransactionTest, 784 QuicNetworkTransactionTest,
781 ::testing::ValuesIn(AllSupportedVersions())); 785 ::testing::ValuesIn(AllSupportedVersions()));
782 786
783 TEST_P(QuicNetworkTransactionTest, SocketWatcherEnabled) { 787 TEST_P(QuicNetworkTransactionTest, SocketWatcherEnabled) {
784 params_.origins_to_force_quic_on.insert( 788 session_params_.origins_to_force_quic_on.insert(
785 HostPortPair::FromString("mail.example.org:443")); 789 HostPortPair::FromString("mail.example.org:443"));
786 790
787 MockQuicData mock_quic_data; 791 MockQuicData mock_quic_data;
788 QuicStreamOffset header_stream_offset = 0; 792 QuicStreamOffset header_stream_offset = 0;
789 mock_quic_data.AddWrite( 793 mock_quic_data.AddWrite(
790 ConstructInitialSettingsPacket(1, &header_stream_offset)); 794 ConstructInitialSettingsPacket(1, &header_stream_offset));
791 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 795 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
792 2, GetNthClientInitiatedStreamId(0), true, true, 796 2, GetNthClientInitiatedStreamId(0), true, true,
793 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 797 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
794 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 798 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
(...skipping 10 matching lines...) Expand all
805 test_socket_performance_watcher_factory_.set_should_notify_updated_rtt(true); 809 test_socket_performance_watcher_factory_.set_should_notify_updated_rtt(true);
806 810
807 EXPECT_FALSE( 811 EXPECT_FALSE(
808 test_socket_performance_watcher_factory_.rtt_notification_received()); 812 test_socket_performance_watcher_factory_.rtt_notification_received());
809 SendRequestAndExpectQuicResponse("hello!"); 813 SendRequestAndExpectQuicResponse("hello!");
810 EXPECT_TRUE( 814 EXPECT_TRUE(
811 test_socket_performance_watcher_factory_.rtt_notification_received()); 815 test_socket_performance_watcher_factory_.rtt_notification_received());
812 } 816 }
813 817
814 TEST_P(QuicNetworkTransactionTest, SocketWatcherDisabled) { 818 TEST_P(QuicNetworkTransactionTest, SocketWatcherDisabled) {
815 params_.origins_to_force_quic_on.insert( 819 session_params_.origins_to_force_quic_on.insert(
816 HostPortPair::FromString("mail.example.org:443")); 820 HostPortPair::FromString("mail.example.org:443"));
817 821
818 MockQuicData mock_quic_data; 822 MockQuicData mock_quic_data;
819 QuicStreamOffset header_stream_offset = 0; 823 QuicStreamOffset header_stream_offset = 0;
820 mock_quic_data.AddWrite( 824 mock_quic_data.AddWrite(
821 ConstructInitialSettingsPacket(1, &header_stream_offset)); 825 ConstructInitialSettingsPacket(1, &header_stream_offset));
822 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 826 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
823 2, GetNthClientInitiatedStreamId(0), true, true, 827 2, GetNthClientInitiatedStreamId(0), true, true,
824 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 828 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
825 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 829 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
(...skipping 10 matching lines...) Expand all
836 test_socket_performance_watcher_factory_.set_should_notify_updated_rtt(false); 840 test_socket_performance_watcher_factory_.set_should_notify_updated_rtt(false);
837 841
838 EXPECT_FALSE( 842 EXPECT_FALSE(
839 test_socket_performance_watcher_factory_.rtt_notification_received()); 843 test_socket_performance_watcher_factory_.rtt_notification_received());
840 SendRequestAndExpectQuicResponse("hello!"); 844 SendRequestAndExpectQuicResponse("hello!");
841 EXPECT_FALSE( 845 EXPECT_FALSE(
842 test_socket_performance_watcher_factory_.rtt_notification_received()); 846 test_socket_performance_watcher_factory_.rtt_notification_received());
843 } 847 }
844 848
845 TEST_P(QuicNetworkTransactionTest, ForceQuic) { 849 TEST_P(QuicNetworkTransactionTest, ForceQuic) {
846 params_.origins_to_force_quic_on.insert( 850 session_params_.origins_to_force_quic_on.insert(
847 HostPortPair::FromString("mail.example.org:443")); 851 HostPortPair::FromString("mail.example.org:443"));
848 852
849 MockQuicData mock_quic_data; 853 MockQuicData mock_quic_data;
850 QuicStreamOffset header_stream_offset = 0; 854 QuicStreamOffset header_stream_offset = 0;
851 mock_quic_data.AddWrite( 855 mock_quic_data.AddWrite(
852 ConstructInitialSettingsPacket(1, &header_stream_offset)); 856 ConstructInitialSettingsPacket(1, &header_stream_offset));
853 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 857 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
854 2, GetNthClientInitiatedStreamId(0), true, true, 858 2, GetNthClientInitiatedStreamId(0), true, true,
855 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 859 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
856 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 860 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
900 entries, 0, NetLogEventType::QUIC_SESSION_STREAM_FRAME_RECEIVED, 904 entries, 0, NetLogEventType::QUIC_SESSION_STREAM_FRAME_RECEIVED,
901 NetLogEventPhase::NONE); 905 NetLogEventPhase::NONE);
902 EXPECT_LT(0, pos); 906 EXPECT_LT(0, pos);
903 907
904 int log_stream_id; 908 int log_stream_id;
905 ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &log_stream_id)); 909 ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &log_stream_id));
906 EXPECT_EQ(3, log_stream_id); 910 EXPECT_EQ(3, log_stream_id);
907 } 911 }
908 912
909 TEST_P(QuicNetworkTransactionTest, LargeResponseHeaders) { 913 TEST_P(QuicNetworkTransactionTest, LargeResponseHeaders) {
910 params_.origins_to_force_quic_on.insert( 914 session_params_.origins_to_force_quic_on.insert(
911 HostPortPair::FromString("mail.example.org:443")); 915 HostPortPair::FromString("mail.example.org:443"));
912 916
913 MockQuicData mock_quic_data; 917 MockQuicData mock_quic_data;
914 QuicStreamOffset header_stream_offset = 0; 918 QuicStreamOffset header_stream_offset = 0;
915 mock_quic_data.AddWrite( 919 mock_quic_data.AddWrite(
916 ConstructInitialSettingsPacket(1, &header_stream_offset)); 920 ConstructInitialSettingsPacket(1, &header_stream_offset));
917 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 921 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
918 2, GetNthClientInitiatedStreamId(0), true, true, 922 2, GetNthClientInitiatedStreamId(0), true, true,
919 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 923 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
920 SpdyHeaderBlock response_headers = GetResponseHeaders("200 OK"); 924 SpdyHeaderBlock response_headers = GetResponseHeaders("200 OK");
(...skipping 29 matching lines...) Expand all
950 ConstructClientAckPacket(4, packet_number, 3, 1)); 954 ConstructClientAckPacket(4, packet_number, 3, 1));
951 955
952 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 956 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
953 957
954 CreateSession(); 958 CreateSession();
955 959
956 SendRequestAndExpectQuicResponse("hello!"); 960 SendRequestAndExpectQuicResponse("hello!");
957 } 961 }
958 962
959 TEST_P(QuicNetworkTransactionTest, TooLargeResponseHeaders) { 963 TEST_P(QuicNetworkTransactionTest, TooLargeResponseHeaders) {
960 params_.origins_to_force_quic_on.insert( 964 session_params_.origins_to_force_quic_on.insert(
961 HostPortPair::FromString("mail.example.org:443")); 965 HostPortPair::FromString("mail.example.org:443"));
962 966
963 MockQuicData mock_quic_data; 967 MockQuicData mock_quic_data;
964 QuicStreamOffset header_stream_offset = 0; 968 QuicStreamOffset header_stream_offset = 0;
965 mock_quic_data.AddWrite( 969 mock_quic_data.AddWrite(
966 ConstructInitialSettingsPacket(1, &header_stream_offset)); 970 ConstructInitialSettingsPacket(1, &header_stream_offset));
967 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 971 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
968 2, GetNthClientInitiatedStreamId(0), true, true, 972 2, GetNthClientInitiatedStreamId(0), true, true,
969 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 973 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
970 SpdyHeaderBlock response_headers = GetResponseHeaders("200 OK"); 974 SpdyHeaderBlock response_headers = GetResponseHeaders("200 OK");
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 CreateSession(); 1010 CreateSession();
1007 1011
1008 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session_.get()); 1012 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session_.get());
1009 TestCompletionCallback callback; 1013 TestCompletionCallback callback;
1010 int rv = trans.Start(&request_, callback.callback(), net_log_.bound()); 1014 int rv = trans.Start(&request_, callback.callback(), net_log_.bound());
1011 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1015 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1012 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_QUIC_PROTOCOL_ERROR)); 1016 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_QUIC_PROTOCOL_ERROR));
1013 } 1017 }
1014 1018
1015 TEST_P(QuicNetworkTransactionTest, ForceQuicForAll) { 1019 TEST_P(QuicNetworkTransactionTest, ForceQuicForAll) {
1016 params_.origins_to_force_quic_on.insert(HostPortPair()); 1020 session_params_.origins_to_force_quic_on.insert(HostPortPair());
1017 1021
1018 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE); 1022 AddQuicAlternateProtocolMapping(MockCryptoClientStream::CONFIRM_HANDSHAKE);
1019 1023
1020 MockQuicData mock_quic_data; 1024 MockQuicData mock_quic_data;
1021 QuicStreamOffset header_stream_offset = 0; 1025 QuicStreamOffset header_stream_offset = 0;
1022 mock_quic_data.AddWrite( 1026 mock_quic_data.AddWrite(
1023 ConstructInitialSettingsPacket(1, &header_stream_offset)); 1027 ConstructInitialSettingsPacket(1, &header_stream_offset));
1024 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 1028 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
1025 2, GetNthClientInitiatedStreamId(0), true, true, 1029 2, GetNthClientInitiatedStreamId(0), true, true,
1026 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 1030 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
1027 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( 1031 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket(
1028 1, GetNthClientInitiatedStreamId(0), false, false, 1032 1, GetNthClientInitiatedStreamId(0), false, false,
1029 GetResponseHeaders("200 OK"))); 1033 GetResponseHeaders("200 OK")));
1030 mock_quic_data.AddRead(ConstructServerDataPacket( 1034 mock_quic_data.AddRead(ConstructServerDataPacket(
1031 2, GetNthClientInitiatedStreamId(0), false, true, 0, "hello!")); 1035 2, GetNthClientInitiatedStreamId(0), false, true, 0, "hello!"));
1032 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1)); 1036 mock_quic_data.AddWrite(ConstructClientAckPacket(3, 2, 1, 1));
1033 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read 1037 mock_quic_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); // No more data to read
1034 1038
1035 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 1039 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
1036 1040
1037 CreateSession(); 1041 CreateSession();
1038 1042
1039 SendRequestAndExpectQuicResponse("hello!"); 1043 SendRequestAndExpectQuicResponse("hello!");
1040 EXPECT_TRUE( 1044 EXPECT_TRUE(
1041 test_socket_performance_watcher_factory_.rtt_notification_received()); 1045 test_socket_performance_watcher_factory_.rtt_notification_received());
1042 } 1046 }
1043 1047
1044 TEST_P(QuicNetworkTransactionTest, QuicProxy) { 1048 TEST_P(QuicNetworkTransactionTest, QuicProxy) {
1045 params_.enable_quic = true; 1049 session_params_.enable_quic = true;
1046 proxy_service_ = 1050 proxy_service_ =
1047 ProxyService::CreateFixedFromPacResult("QUIC mail.example.org:70"); 1051 ProxyService::CreateFixedFromPacResult("QUIC mail.example.org:70");
1048 1052
1049 MockQuicData mock_quic_data; 1053 MockQuicData mock_quic_data;
1050 QuicStreamOffset header_stream_offset = 0; 1054 QuicStreamOffset header_stream_offset = 0;
1051 mock_quic_data.AddWrite( 1055 mock_quic_data.AddWrite(
1052 ConstructInitialSettingsPacket(1, &header_stream_offset)); 1056 ConstructInitialSettingsPacket(1, &header_stream_offset));
1053 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 1057 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
1054 2, GetNthClientInitiatedStreamId(0), true, true, 1058 2, GetNthClientInitiatedStreamId(0), true, true,
1055 GetRequestHeaders("GET", "http", "/"), &header_stream_offset)); 1059 GetRequestHeaders("GET", "http", "/"), &header_stream_offset));
(...skipping 21 matching lines...) Expand all
1077 test_socket_performance_watcher_factory_.rtt_notification_received()); 1081 test_socket_performance_watcher_factory_.rtt_notification_received());
1078 } 1082 }
1079 1083
1080 // Regression test for https://crbug.com/492458. Test that for an HTTP 1084 // Regression test for https://crbug.com/492458. Test that for an HTTP
1081 // connection through a QUIC proxy, the certificate exhibited by the proxy is 1085 // connection through a QUIC proxy, the certificate exhibited by the proxy is
1082 // checked against the proxy hostname, not the origin hostname. 1086 // checked against the proxy hostname, not the origin hostname.
1083 TEST_P(QuicNetworkTransactionTest, QuicProxyWithCert) { 1087 TEST_P(QuicNetworkTransactionTest, QuicProxyWithCert) {
1084 const std::string origin_host = "mail.example.com"; 1088 const std::string origin_host = "mail.example.com";
1085 const std::string proxy_host = "www.example.org"; 1089 const std::string proxy_host = "www.example.org";
1086 1090
1087 params_.enable_quic = true; 1091 session_params_.enable_quic = true;
1088 proxy_service_ = 1092 proxy_service_ =
1089 ProxyService::CreateFixedFromPacResult("QUIC " + proxy_host + ":70"); 1093 ProxyService::CreateFixedFromPacResult("QUIC " + proxy_host + ":70");
1090 1094
1091 client_maker_.set_hostname(origin_host); 1095 client_maker_.set_hostname(origin_host);
1092 MockQuicData mock_quic_data; 1096 MockQuicData mock_quic_data;
1093 QuicStreamOffset header_stream_offset = 0; 1097 QuicStreamOffset header_stream_offset = 0;
1094 mock_quic_data.AddWrite( 1098 mock_quic_data.AddWrite(
1095 ConstructInitialSettingsPacket(1, &header_stream_offset)); 1099 ConstructInitialSettingsPacket(1, &header_stream_offset));
1096 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 1100 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
1097 2, GetNthClientInitiatedStreamId(0), true, true, 1101 2, GetNthClientInitiatedStreamId(0), true, true,
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
1242 1246
1243 // The retry logic must hide the 421 status. The transaction succeeds on 1247 // The retry logic must hide the 421 status. The transaction succeeds on
1244 // |http_data|. 1248 // |http_data|.
1245 EXPECT_THAT(callback.WaitForResult(), IsOk()); 1249 EXPECT_THAT(callback.WaitForResult(), IsOk());
1246 CheckWasHttpResponse(&trans); 1250 CheckWasHttpResponse(&trans);
1247 CheckResponsePort(&trans, 443); 1251 CheckResponsePort(&trans, 443);
1248 CheckResponseData(&trans, "hello!"); 1252 CheckResponseData(&trans, "hello!");
1249 } 1253 }
1250 1254
1251 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) { 1255 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) {
1252 params_.origins_to_force_quic_on.insert( 1256 session_params_.origins_to_force_quic_on.insert(
1253 HostPortPair::FromString("mail.example.org:443")); 1257 HostPortPair::FromString("mail.example.org:443"));
1254 1258
1255 MockQuicData mock_quic_data1; 1259 MockQuicData mock_quic_data1;
1256 QuicStreamOffset header_stream_offset = 0; 1260 QuicStreamOffset header_stream_offset = 0;
1257 mock_quic_data1.AddWrite( 1261 mock_quic_data1.AddWrite(
1258 ConstructInitialSettingsPacket(1, &header_stream_offset)); 1262 ConstructInitialSettingsPacket(1, &header_stream_offset));
1259 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED); 1263 mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED);
1260 MockQuicData mock_quic_data2; 1264 MockQuicData mock_quic_data2;
1261 header_stream_offset = 0; 1265 header_stream_offset = 0;
1262 mock_quic_data2.AddWrite( 1266 mock_quic_data2.AddWrite(
(...skipping 13 matching lines...) Expand all
1276 TestCompletionCallback callback; 1280 TestCompletionCallback callback;
1277 int rv = trans.Start(&request_, callback.callback(), net_log_.bound()); 1281 int rv = trans.Start(&request_, callback.callback(), net_log_.bound());
1278 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 1282 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
1279 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_CLOSED)); 1283 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_CLOSED));
1280 EXPECT_EQ(1 + i, test_socket_performance_watcher_factory_.watcher_count()); 1284 EXPECT_EQ(1 + i, test_socket_performance_watcher_factory_.watcher_count());
1281 } 1285 }
1282 } 1286 }
1283 1287
1284 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) { 1288 TEST_P(QuicNetworkTransactionTest, DoNotForceQuicForHttps) {
1285 // Attempt to "force" quic on 443, which will not be honored. 1289 // Attempt to "force" quic on 443, which will not be honored.
1286 params_.origins_to_force_quic_on.insert( 1290 session_params_.origins_to_force_quic_on.insert(
1287 HostPortPair::FromString("www.google.com:443")); 1291 HostPortPair::FromString("www.google.com:443"));
1288 1292
1289 MockRead http_reads[] = { 1293 MockRead http_reads[] = {
1290 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), 1294 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"),
1291 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 1295 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
1292 MockRead(ASYNC, OK)}; 1296 MockRead(ASYNC, OK)};
1293 1297
1294 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0); 1298 StaticSocketDataProvider data(http_reads, arraysize(http_reads), nullptr, 0);
1295 socket_factory_.AddSocketDataProvider(&data); 1299 socket_factory_.AddSocketDataProvider(&data);
1296 SSLSocketDataProvider ssl(ASYNC, OK); 1300 SSLSocketDataProvider ssl(ASYNC, OK);
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
1545 // because of migrating port. 1549 // because of migrating port.
1546 NetErrorDetails details; 1550 NetErrorDetails details;
1547 EXPECT_FALSE(details.quic_port_migration_detected); 1551 EXPECT_FALSE(details.quic_port_migration_detected);
1548 trans.PopulateNetErrorDetails(&details); 1552 trans.PopulateNetErrorDetails(&details);
1549 EXPECT_TRUE(details.quic_port_migration_detected); 1553 EXPECT_TRUE(details.quic_port_migration_detected);
1550 } 1554 }
1551 1555
1552 // Verify that if a QUIC connection times out, the QuicHttpStream will 1556 // Verify that if a QUIC connection times out, the QuicHttpStream will
1553 // return QUIC_PROTOCOL_ERROR. 1557 // return QUIC_PROTOCOL_ERROR.
1554 TEST_P(QuicNetworkTransactionTest, TimeoutAfterHandshakeConfirmed) { 1558 TEST_P(QuicNetworkTransactionTest, TimeoutAfterHandshakeConfirmed) {
1555 params_.quic_idle_connection_timeout_seconds = 5; 1559 session_params_.quic_idle_connection_timeout_seconds = 5;
1556 1560
1557 // The request will initially go out over QUIC. 1561 // The request will initially go out over QUIC.
1558 MockQuicData quic_data; 1562 MockQuicData quic_data;
1559 QuicStreamOffset header_stream_offset = 0; 1563 QuicStreamOffset header_stream_offset = 0;
1560 SpdyPriority priority = 1564 SpdyPriority priority =
1561 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 1565 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
1562 1566
1563 std::string request_data; 1567 std::string request_data;
1564 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 1568 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
1565 1, GetNthClientInitiatedStreamId(0), true, true, priority, 1569 1, GetNthClientInitiatedStreamId(0), true, true, priority,
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1635 quic_task_runner_->RunUntilIdle(); 1639 quic_task_runner_->RunUntilIdle();
1636 1640
1637 ExpectQuicAlternateProtocolMapping(); 1641 ExpectQuicAlternateProtocolMapping();
1638 ASSERT_TRUE(quic_data.AllWriteDataConsumed()); 1642 ASSERT_TRUE(quic_data.AllWriteDataConsumed());
1639 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_QUIC_PROTOCOL_ERROR)); 1643 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_QUIC_PROTOCOL_ERROR));
1640 } 1644 }
1641 1645
1642 // Verify that if a QUIC connection RTOs, the QuicHttpStream will 1646 // Verify that if a QUIC connection RTOs, the QuicHttpStream will
1643 // return QUIC_PROTOCOL_ERROR. 1647 // return QUIC_PROTOCOL_ERROR.
1644 TEST_P(QuicNetworkTransactionTest, TooManyRtosAfterHandshakeConfirmed) { 1648 TEST_P(QuicNetworkTransactionTest, TooManyRtosAfterHandshakeConfirmed) {
1645 params_.quic_connection_options.push_back(k5RTO); 1649 session_params_.quic_connection_options.push_back(k5RTO);
1646 1650
1647 // The request will initially go out over QUIC. 1651 // The request will initially go out over QUIC.
1648 MockQuicData quic_data; 1652 MockQuicData quic_data;
1649 QuicStreamOffset header_stream_offset = 0; 1653 QuicStreamOffset header_stream_offset = 0;
1650 SpdyPriority priority = 1654 SpdyPriority priority =
1651 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 1655 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
1652 1656
1653 std::string request_data; 1657 std::string request_data;
1654 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 1658 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
1655 1, GetNthClientInitiatedStreamId(0), true, true, priority, 1659 1, GetNthClientInitiatedStreamId(0), true, true, priority,
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1734 1738
1735 ExpectQuicAlternateProtocolMapping(); 1739 ExpectQuicAlternateProtocolMapping();
1736 ASSERT_TRUE(quic_data.AllWriteDataConsumed()); 1740 ASSERT_TRUE(quic_data.AllWriteDataConsumed());
1737 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_QUIC_PROTOCOL_ERROR)); 1741 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_QUIC_PROTOCOL_ERROR));
1738 } 1742 }
1739 1743
1740 // Verify that if a QUIC connection RTOs, while there are no active streams 1744 // Verify that if a QUIC connection RTOs, while there are no active streams
1741 // QUIC will not be marked as broken. 1745 // QUIC will not be marked as broken.
1742 TEST_P(QuicNetworkTransactionTest, 1746 TEST_P(QuicNetworkTransactionTest,
1743 TooManyRtosAfterHandshakeConfirmedAndStreamReset) { 1747 TooManyRtosAfterHandshakeConfirmedAndStreamReset) {
1744 params_.quic_connection_options.push_back(k5RTO); 1748 session_params_.quic_connection_options.push_back(k5RTO);
1745 1749
1746 // The request will initially go out over QUIC. 1750 // The request will initially go out over QUIC.
1747 MockQuicData quic_data; 1751 MockQuicData quic_data;
1748 QuicStreamOffset header_stream_offset = 0; 1752 QuicStreamOffset header_stream_offset = 0;
1749 SpdyPriority priority = 1753 SpdyPriority priority =
1750 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 1754 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
1751 1755
1752 std::string request_data; 1756 std::string request_data;
1753 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 1757 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
1754 1, GetNthClientInitiatedStreamId(0), true, true, priority, 1758 1, GetNthClientInitiatedStreamId(0), true, true, priority,
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
1901 1905
1902 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_QUIC_PROTOCOL_ERROR)); 1906 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_QUIC_PROTOCOL_ERROR));
1903 ExpectQuicAlternateProtocolMapping(); 1907 ExpectQuicAlternateProtocolMapping();
1904 ASSERT_TRUE(quic_data.AllWriteDataConsumed()); 1908 ASSERT_TRUE(quic_data.AllWriteDataConsumed());
1905 } 1909 }
1906 1910
1907 // Verify that with mark_quic_broken_when_network_blackholes enabled, if a QUIC 1911 // Verify that with mark_quic_broken_when_network_blackholes enabled, if a QUIC
1908 // connection times out, then QUIC will be marked as broken and the request 1912 // connection times out, then QUIC will be marked as broken and the request
1909 // retried over TCP. 1913 // retried over TCP.
1910 TEST_P(QuicNetworkTransactionTest, TimeoutAfterHandshakeConfirmedThenBroken) { 1914 TEST_P(QuicNetworkTransactionTest, TimeoutAfterHandshakeConfirmedThenBroken) {
1911 params_.mark_quic_broken_when_network_blackholes = true; 1915 session_params_.mark_quic_broken_when_network_blackholes = true;
1912 params_.quic_idle_connection_timeout_seconds = 5; 1916 session_params_.quic_idle_connection_timeout_seconds = 5;
1913 1917
1914 // The request will initially go out over QUIC. 1918 // The request will initially go out over QUIC.
1915 MockQuicData quic_data; 1919 MockQuicData quic_data;
1916 QuicStreamOffset header_stream_offset = 0; 1920 QuicStreamOffset header_stream_offset = 0;
1917 SpdyPriority priority = 1921 SpdyPriority priority =
1918 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 1922 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
1919 1923
1920 std::string request_data; 1924 std::string request_data;
1921 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 1925 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
1922 1, GetNthClientInitiatedStreamId(0), true, true, priority, 1926 1, GetNthClientInitiatedStreamId(0), true, true, priority,
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
2018 // Read the response body over TCP. 2022 // Read the response body over TCP.
2019 CheckResponseData(&trans, "hello world"); 2023 CheckResponseData(&trans, "hello world");
2020 ASSERT_TRUE(http_data.AllWriteDataConsumed()); 2024 ASSERT_TRUE(http_data.AllWriteDataConsumed());
2021 ASSERT_TRUE(http_data.AllReadDataConsumed()); 2025 ASSERT_TRUE(http_data.AllReadDataConsumed());
2022 } 2026 }
2023 2027
2024 // Verify that with retry_without_alt_svc_on_quic_errors enabled, if a QUIC 2028 // Verify that with retry_without_alt_svc_on_quic_errors enabled, if a QUIC
2025 // connection times out, then QUIC will be marked as broken and the request 2029 // connection times out, then QUIC will be marked as broken and the request
2026 // retried over TCP. 2030 // retried over TCP.
2027 TEST_P(QuicNetworkTransactionTest, TimeoutAfterHandshakeConfirmedThenBroken2) { 2031 TEST_P(QuicNetworkTransactionTest, TimeoutAfterHandshakeConfirmedThenBroken2) {
2028 params_.retry_without_alt_svc_on_quic_errors = true; 2032 session_params_.retry_without_alt_svc_on_quic_errors = true;
2029 params_.quic_idle_connection_timeout_seconds = 5; 2033 session_params_.quic_idle_connection_timeout_seconds = 5;
2030 2034
2031 // The request will initially go out over QUIC. 2035 // The request will initially go out over QUIC.
2032 MockQuicData quic_data; 2036 MockQuicData quic_data;
2033 QuicStreamOffset header_stream_offset = 0; 2037 QuicStreamOffset header_stream_offset = 0;
2034 SpdyPriority priority = 2038 SpdyPriority priority =
2035 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 2039 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
2036 2040
2037 std::string request_data; 2041 std::string request_data;
2038 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 2042 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
2039 1, GetNthClientInitiatedStreamId(0), true, true, priority, 2043 1, GetNthClientInitiatedStreamId(0), true, true, priority,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
2138 ExpectBrokenAlternateProtocolMapping(); 2142 ExpectBrokenAlternateProtocolMapping();
2139 ASSERT_TRUE(http_data.AllWriteDataConsumed()); 2143 ASSERT_TRUE(http_data.AllWriteDataConsumed());
2140 ASSERT_TRUE(http_data.AllReadDataConsumed()); 2144 ASSERT_TRUE(http_data.AllReadDataConsumed());
2141 } 2145 }
2142 2146
2143 // Verify that with mark_quic_broken_when_network_blackholes enabled, if a QUIC 2147 // Verify that with mark_quic_broken_when_network_blackholes enabled, if a QUIC
2144 // connection times out, then QUIC will be marked as broken but the request 2148 // connection times out, then QUIC will be marked as broken but the request
2145 // will not be retried over TCP. 2149 // will not be retried over TCP.
2146 TEST_P(QuicNetworkTransactionTest, 2150 TEST_P(QuicNetworkTransactionTest,
2147 TimeoutAfterHandshakeConfirmedAndHeadersThenBrokenNotRetried) { 2151 TimeoutAfterHandshakeConfirmedAndHeadersThenBrokenNotRetried) {
2148 params_.mark_quic_broken_when_network_blackholes = true; 2152 session_params_.mark_quic_broken_when_network_blackholes = true;
2149 params_.quic_idle_connection_timeout_seconds = 5; 2153 session_params_.quic_idle_connection_timeout_seconds = 5;
2150 2154
2151 // The request will initially go out over QUIC. 2155 // The request will initially go out over QUIC.
2152 MockQuicData quic_data; 2156 MockQuicData quic_data;
2153 QuicStreamOffset header_stream_offset = 0; 2157 QuicStreamOffset header_stream_offset = 0;
2154 SpdyPriority priority = 2158 SpdyPriority priority =
2155 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 2159 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
2156 2160
2157 std::string request_data; 2161 std::string request_data;
2158 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 2162 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
2159 1, GetNthClientInitiatedStreamId(0), true, true, priority, 2163 1, GetNthClientInitiatedStreamId(0), true, true, priority,
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
2250 std::string response_data; 2254 std::string response_data;
2251 ASSERT_THAT(ReadTransaction(&trans, &response_data), 2255 ASSERT_THAT(ReadTransaction(&trans, &response_data),
2252 IsError(ERR_QUIC_PROTOCOL_ERROR)); 2256 IsError(ERR_QUIC_PROTOCOL_ERROR));
2253 } 2257 }
2254 2258
2255 // Verify that with mark_quic_broken_when_network_blackholes enabled, if a QUIC 2259 // Verify that with mark_quic_broken_when_network_blackholes enabled, if a QUIC
2256 // connection RTOs, then QUIC will be marked as broken and the request retried 2260 // connection RTOs, then QUIC will be marked as broken and the request retried
2257 // over TCP. 2261 // over TCP.
2258 TEST_P(QuicNetworkTransactionTest, 2262 TEST_P(QuicNetworkTransactionTest,
2259 TooManyRtosAfterHandshakeConfirmedThenBroken) { 2263 TooManyRtosAfterHandshakeConfirmedThenBroken) {
2260 params_.mark_quic_broken_when_network_blackholes = true; 2264 session_params_.mark_quic_broken_when_network_blackholes = true;
2261 params_.quic_connection_options.push_back(k5RTO); 2265 session_params_.quic_connection_options.push_back(k5RTO);
2262 2266
2263 // The request will initially go out over QUIC. 2267 // The request will initially go out over QUIC.
2264 MockQuicData quic_data; 2268 MockQuicData quic_data;
2265 QuicStreamOffset header_stream_offset = 0; 2269 QuicStreamOffset header_stream_offset = 0;
2266 SpdyPriority priority = 2270 SpdyPriority priority =
2267 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 2271 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
2268 2272
2269 std::string request_data; 2273 std::string request_data;
2270 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 2274 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
2271 1, GetNthClientInitiatedStreamId(0), true, true, priority, 2275 1, GetNthClientInitiatedStreamId(0), true, true, priority,
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
2375 // Read the response body over TCP. 2379 // Read the response body over TCP.
2376 CheckResponseData(&trans, "hello world"); 2380 CheckResponseData(&trans, "hello world");
2377 ASSERT_TRUE(http_data.AllWriteDataConsumed()); 2381 ASSERT_TRUE(http_data.AllWriteDataConsumed());
2378 ASSERT_TRUE(http_data.AllReadDataConsumed()); 2382 ASSERT_TRUE(http_data.AllReadDataConsumed());
2379 } 2383 }
2380 2384
2381 // Verify that if a QUIC connection RTOs, while there are no active streams 2385 // Verify that if a QUIC connection RTOs, while there are no active streams
2382 // QUIC will be marked as broken. 2386 // QUIC will be marked as broken.
2383 TEST_P(QuicNetworkTransactionTest, 2387 TEST_P(QuicNetworkTransactionTest,
2384 TooManyRtosAfterHandshakeConfirmedAndStreamResetThenBroken) { 2388 TooManyRtosAfterHandshakeConfirmedAndStreamResetThenBroken) {
2385 params_.mark_quic_broken_when_network_blackholes = true; 2389 session_params_.mark_quic_broken_when_network_blackholes = true;
2386 params_.quic_connection_options.push_back(k5RTO); 2390 session_params_.quic_connection_options.push_back(k5RTO);
2387 2391
2388 // The request will initially go out over QUIC. 2392 // The request will initially go out over QUIC.
2389 MockQuicData quic_data; 2393 MockQuicData quic_data;
2390 QuicStreamOffset header_stream_offset = 0; 2394 QuicStreamOffset header_stream_offset = 0;
2391 SpdyPriority priority = 2395 SpdyPriority priority =
2392 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY); 2396 ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY);
2393 2397
2394 std::string request_data; 2398 std::string request_data;
2395 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData( 2399 quic_data.AddWrite(client_maker_.MakeRequestHeadersPacketAndSaveData(
2396 1, GetNthClientInitiatedStreamId(0), true, true, priority, 2400 1, GetNthClientInitiatedStreamId(0), true, true, priority,
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
2483 ExpectBrokenAlternateProtocolMapping(); 2487 ExpectBrokenAlternateProtocolMapping();
2484 2488
2485 ASSERT_TRUE(quic_data.AllWriteDataConsumed()); 2489 ASSERT_TRUE(quic_data.AllWriteDataConsumed());
2486 } 2490 }
2487 2491
2488 // Verify that with retry_without_alt_svc_on_quic_errors enabled, if a QUIC 2492 // Verify that with retry_without_alt_svc_on_quic_errors enabled, if a QUIC
2489 // protocol error occurs after the handshake is confirmed, the request 2493 // protocol error occurs after the handshake is confirmed, the request
2490 // retried over TCP and the QUIC will be marked as broken. 2494 // retried over TCP and the QUIC will be marked as broken.
2491 TEST_P(QuicNetworkTransactionTest, 2495 TEST_P(QuicNetworkTransactionTest,
2492 ProtocolErrorAfterHandshakeConfirmedThenBroken) { 2496 ProtocolErrorAfterHandshakeConfirmedThenBroken) {
2493 params_.retry_without_alt_svc_on_quic_errors = true; 2497 session_params_.retry_without_alt_svc_on_quic_errors = true;
2494 params_.quic_idle_connection_timeout_seconds = 5; 2498 session_params_.quic_idle_connection_timeout_seconds = 5;
2495 2499
2496 // The request will initially go out over QUIC. 2500 // The request will initially go out over QUIC.
2497 MockQuicData quic_data; 2501 MockQuicData quic_data;
2498 QuicStreamOffset header_stream_offset = 0; 2502 QuicStreamOffset header_stream_offset = 0;
2499 quic_data.AddWrite(ConstructClientRequestHeadersPacket( 2503 quic_data.AddWrite(ConstructClientRequestHeadersPacket(
2500 1, GetNthClientInitiatedStreamId(0), true, true, 2504 1, GetNthClientInitiatedStreamId(0), true, true,
2501 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 2505 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
2502 quic_data.AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); 2506 quic_data.AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset));
2503 // Peer sending data from an non-existing stream causes this end to raise 2507 // Peer sending data from an non-existing stream causes this end to raise
2504 // error and close connection. 2508 // error and close connection.
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
2708 2712
2709 AddHangingNonAlternateProtocolSocketData(); 2713 AddHangingNonAlternateProtocolSocketData();
2710 2714
2711 TestProxyDelegate test_proxy_delegate; 2715 TestProxyDelegate test_proxy_delegate;
2712 2716
2713 proxy_service_ = 2717 proxy_service_ =
2714 ProxyService::CreateFixedFromPacResult("HTTPS mail.example.org:443"); 2718 ProxyService::CreateFixedFromPacResult("HTTPS mail.example.org:443");
2715 2719
2716 test_proxy_delegate.set_alternative_proxy_server( 2720 test_proxy_delegate.set_alternative_proxy_server(
2717 ProxyServer::FromPacString("QUIC mail.example.org:443")); 2721 ProxyServer::FromPacString("QUIC mail.example.org:443"));
2718 params_.proxy_delegate = &test_proxy_delegate; 2722 session_context_.proxy_delegate = &test_proxy_delegate;
2719 2723
2720 request_.url = GURL("http://mail.example.org/"); 2724 request_.url = GURL("http://mail.example.org/");
2721 2725
2722 CreateSession(); 2726 CreateSession();
2723 2727
2724 SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 443); 2728 SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 443);
2725 histogram_tester.ExpectUniqueSample("Net.QuicAlternativeProxy.Usage", 2729 histogram_tester.ExpectUniqueSample("Net.QuicAlternativeProxy.Usage",
2726 1 /* ALTERNATIVE_PROXY_USAGE_WON_RACE */, 2730 1 /* ALTERNATIVE_PROXY_USAGE_WON_RACE */,
2727 1); 2731 1);
2728 2732
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
3115 mock_quic_data.AddSocketDataToFactory(&socket_factory_); 3119 mock_quic_data.AddSocketDataToFactory(&socket_factory_);
3116 3120
3117 // There is no need to set up main job, because no attempt will be made to 3121 // There is no need to set up main job, because no attempt will be made to
3118 // speak to the proxy over TCP. 3122 // speak to the proxy over TCP.
3119 request_.url = GURL("http://mail.example.org/"); 3123 request_.url = GURL("http://mail.example.org/");
3120 TestProxyDelegate test_proxy_delegate; 3124 TestProxyDelegate test_proxy_delegate;
3121 const HostPortPair host_port_pair("mail.example.org", 443); 3125 const HostPortPair host_port_pair("mail.example.org", 443);
3122 3126
3123 test_proxy_delegate.set_alternative_proxy_server( 3127 test_proxy_delegate.set_alternative_proxy_server(
3124 ProxyServer::FromPacString("QUIC mail.example.org:443")); 3128 ProxyServer::FromPacString("QUIC mail.example.org:443"));
3125 params_.proxy_delegate = &test_proxy_delegate; 3129 session_context_.proxy_delegate = &test_proxy_delegate;
3126 CreateSession(); 3130 CreateSession();
3127 EXPECT_TRUE(test_proxy_delegate.alternative_proxy_server().is_quic()); 3131 EXPECT_TRUE(test_proxy_delegate.alternative_proxy_server().is_quic());
3128 3132
3129 // The main job needs to hang in order to guarantee that the alternative 3133 // The main job needs to hang in order to guarantee that the alternative
3130 // proxy server job will "win". 3134 // proxy server job will "win".
3131 AddHangingNonAlternateProtocolSocketData(); 3135 AddHangingNonAlternateProtocolSocketData();
3132 3136
3133 SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 443); 3137 SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 443);
3134 3138
3135 // Verify that the alternative proxy server is not marked as broken. 3139 // Verify that the alternative proxy server is not marked as broken.
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after
3827 0); 3831 0);
3828 socket_factory_.AddSocketDataProvider(&http_data); 3832 socket_factory_.AddSocketDataProvider(&http_data);
3829 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); 3833 socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
3830 3834
3831 TestProxyDelegate test_proxy_delegate; 3835 TestProxyDelegate test_proxy_delegate;
3832 const HostPortPair host_port_pair("myproxy.org", 443); 3836 const HostPortPair host_port_pair("myproxy.org", 443);
3833 test_proxy_delegate.set_alternative_proxy_server( 3837 test_proxy_delegate.set_alternative_proxy_server(
3834 ProxyServer::FromPacString("QUIC myproxy.org:443")); 3838 ProxyServer::FromPacString("QUIC myproxy.org:443"));
3835 EXPECT_TRUE(test_proxy_delegate.alternative_proxy_server().is_quic()); 3839 EXPECT_TRUE(test_proxy_delegate.alternative_proxy_server().is_quic());
3836 3840
3837 params_.proxy_delegate = &test_proxy_delegate; 3841 session_context_.proxy_delegate = &test_proxy_delegate;
3838 proxy_service_ = 3842 proxy_service_ =
3839 ProxyService::CreateFixedFromPacResult("HTTPS myproxy.org:443"); 3843 ProxyService::CreateFixedFromPacResult("HTTPS myproxy.org:443");
3840 request_.url = GURL("http://mail.example.org/"); 3844 request_.url = GURL("http://mail.example.org/");
3841 3845
3842 // In order for a new QUIC session to be established via alternate-protocol 3846 // In order for a new QUIC session to be established via alternate-protocol
3843 // without racing an HTTP connection, we need the host resolution to happen 3847 // without racing an HTTP connection, we need the host resolution to happen
3844 // synchronously. 3848 // synchronously.
3845 host_resolver_.set_synchronous_mode(true); 3849 host_resolver_.set_synchronous_mode(true);
3846 host_resolver_.rules()->AddIPLiteralRule("myproxy.org", "192.168.0.1", ""); 3850 host_resolver_.rules()->AddIPLiteralRule("myproxy.org", "192.168.0.1", "");
3847 HostResolver::RequestInfo info(HostPortPair("myproxy.org", 443)); 3851 HostResolver::RequestInfo info(HostPortPair("myproxy.org", 443));
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
3890 TEST_P(QuicNetworkTransactionTest, 3894 TEST_P(QuicNetworkTransactionTest,
3891 DISABLED_QuicUploadToAlternativeProxyServer) { 3895 DISABLED_QuicUploadToAlternativeProxyServer) {
3892 base::HistogramTester histogram_tester; 3896 base::HistogramTester histogram_tester;
3893 proxy_service_ = 3897 proxy_service_ =
3894 ProxyService::CreateFixedFromPacResult("HTTPS mail.example.org:443"); 3898 ProxyService::CreateFixedFromPacResult("HTTPS mail.example.org:443");
3895 3899
3896 TestProxyDelegate test_proxy_delegate; 3900 TestProxyDelegate test_proxy_delegate;
3897 3901
3898 test_proxy_delegate.set_alternative_proxy_server( 3902 test_proxy_delegate.set_alternative_proxy_server(
3899 ProxyServer::FromPacString("QUIC mail.example.org:443")); 3903 ProxyServer::FromPacString("QUIC mail.example.org:443"));
3900 params_.proxy_delegate = &test_proxy_delegate; 3904 session_context_.proxy_delegate = &test_proxy_delegate;
3901 3905
3902 request_.url = GURL("http://mail.example.org/"); 3906 request_.url = GURL("http://mail.example.org/");
3903 3907
3904 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 3908 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
3905 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)}; 3909 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)};
3906 SequencedSocketData socket_data(reads, arraysize(reads), writes, 3910 SequencedSocketData socket_data(reads, arraysize(reads), writes,
3907 arraysize(writes)); 3911 arraysize(writes));
3908 socket_factory_.AddSocketDataProvider(&socket_data); 3912 socket_factory_.AddSocketDataProvider(&socket_data);
3909 3913
3910 // The non-alternate protocol job needs to hang in order to guarantee that 3914 // The non-alternate protocol job needs to hang in order to guarantee that
(...skipping 18 matching lines...) Expand all
3929 3933
3930 // Verify that the proxy server is not marked as broken. 3934 // Verify that the proxy server is not marked as broken.
3931 EXPECT_TRUE(session_->proxy_service()->proxy_retry_info().empty()); 3935 EXPECT_TRUE(session_->proxy_service()->proxy_retry_info().empty());
3932 3936
3933 histogram_tester.ExpectUniqueSample("Net.QuicAlternativeProxy.Usage", 3937 histogram_tester.ExpectUniqueSample("Net.QuicAlternativeProxy.Usage",
3934 1 /* ALTERNATIVE_PROXY_USAGE_WON_RACE */, 3938 1 /* ALTERNATIVE_PROXY_USAGE_WON_RACE */,
3935 1); 3939 1);
3936 } 3940 }
3937 3941
3938 TEST_P(QuicNetworkTransactionTest, QuicUpload) { 3942 TEST_P(QuicNetworkTransactionTest, QuicUpload) {
3939 params_.origins_to_force_quic_on.insert( 3943 session_params_.origins_to_force_quic_on.insert(
3940 HostPortPair::FromString("mail.example.org:443")); 3944 HostPortPair::FromString("mail.example.org:443"));
3941 3945
3942 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; 3946 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
3943 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)}; 3947 MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)};
3944 SequencedSocketData socket_data(reads, arraysize(reads), writes, 3948 SequencedSocketData socket_data(reads, arraysize(reads), writes,
3945 arraysize(writes)); 3949 arraysize(writes));
3946 socket_factory_.AddSocketDataProvider(&socket_data); 3950 socket_factory_.AddSocketDataProvider(&socket_data);
3947 3951
3948 // The non-alternate protocol job needs to hang in order to guarantee that 3952 // The non-alternate protocol job needs to hang in order to guarantee that
3949 // the alternate-protocol job will "win". 3953 // the alternate-protocol job will "win".
(...skipping 14 matching lines...) Expand all
3964 } 3968 }
3965 3969
3966 TEST_P(QuicNetworkTransactionTest, QuicUploadWriteError) { 3970 TEST_P(QuicNetworkTransactionTest, QuicUploadWriteError) {
3967 ScopedMockNetworkChangeNotifier network_change_notifier; 3971 ScopedMockNetworkChangeNotifier network_change_notifier;
3968 MockNetworkChangeNotifier* mock_ncn = 3972 MockNetworkChangeNotifier* mock_ncn =
3969 network_change_notifier.mock_network_change_notifier(); 3973 network_change_notifier.mock_network_change_notifier();
3970 mock_ncn->ForceNetworkHandlesSupported(); 3974 mock_ncn->ForceNetworkHandlesSupported();
3971 mock_ncn->SetConnectedNetworksList( 3975 mock_ncn->SetConnectedNetworksList(
3972 {kDefaultNetworkForTests, kNewNetworkForTests}); 3976 {kDefaultNetworkForTests, kNewNetworkForTests});
3973 3977
3974 params_.origins_to_force_quic_on.insert( 3978 session_params_.origins_to_force_quic_on.insert(
3975 HostPortPair::FromString("mail.example.org:443")); 3979 HostPortPair::FromString("mail.example.org:443"));
3976 params_.quic_migrate_sessions_on_network_change = true; 3980 session_params_.quic_migrate_sessions_on_network_change = true;
3977 3981
3978 MockQuicData socket_data; 3982 MockQuicData socket_data;
3979 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); 3983 socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
3980 QuicStreamOffset offset = 0; 3984 QuicStreamOffset offset = 0;
3981 socket_data.AddWrite(ConstructInitialSettingsPacket(1, &offset)); 3985 socket_data.AddWrite(ConstructInitialSettingsPacket(1, &offset));
3982 socket_data.AddWrite(ConstructClientRequestHeadersPacket( 3986 socket_data.AddWrite(ConstructClientRequestHeadersPacket(
3983 2, GetNthClientInitiatedStreamId(0), true, false, 3987 2, GetNthClientInitiatedStreamId(0), true, false,
3984 GetRequestHeaders("POST", "https", "/"), &offset)); 3988 GetRequestHeaders("POST", "https", "/"), &offset));
3985 socket_data.AddWrite(SYNCHRONOUS, ERR_FAILED); 3989 socket_data.AddWrite(SYNCHRONOUS, ERR_FAILED);
3986 socket_data.AddSocketDataToFactory(&socket_factory_); 3990 socket_data.AddSocketDataToFactory(&socket_factory_);
(...skipping 22 matching lines...) Expand all
4009 upload_data.AppendData("1", 1, true); 4013 upload_data.AppendData("1", 1, true);
4010 base::RunLoop().RunUntilIdle(); 4014 base::RunLoop().RunUntilIdle();
4011 4015
4012 EXPECT_NE(OK, callback.WaitForResult()); 4016 EXPECT_NE(OK, callback.WaitForResult());
4013 trans.reset(); 4017 trans.reset();
4014 session_.reset(); 4018 session_.reset();
4015 } 4019 }
4016 4020
4017 // Adds coverage to catch regression such as https://crbug.com/622043 4021 // Adds coverage to catch regression such as https://crbug.com/622043
4018 TEST_P(QuicNetworkTransactionTest, QuicServerPush) { 4022 TEST_P(QuicNetworkTransactionTest, QuicServerPush) {
4019 params_.origins_to_force_quic_on.insert( 4023 session_params_.origins_to_force_quic_on.insert(
4020 HostPortPair::FromString("mail.example.org:443")); 4024 HostPortPair::FromString("mail.example.org:443"));
4021 4025
4022 MockQuicData mock_quic_data; 4026 MockQuicData mock_quic_data;
4023 QuicStreamOffset header_stream_offset = 0; 4027 QuicStreamOffset header_stream_offset = 0;
4024 mock_quic_data.AddWrite( 4028 mock_quic_data.AddWrite(
4025 ConstructInitialSettingsPacket(1, &header_stream_offset)); 4029 ConstructInitialSettingsPacket(1, &header_stream_offset));
4026 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 4030 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
4027 2, GetNthClientInitiatedStreamId(0), true, true, 4031 2, GetNthClientInitiatedStreamId(0), true, true,
4028 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 4032 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
4029 QuicStreamOffset server_header_offset = 0; 4033 QuicStreamOffset server_header_offset = 0;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
4067 EXPECT_LT(0u, entries.size()); 4071 EXPECT_LT(0u, entries.size());
4068 4072
4069 // Check that we logged a QUIC_HTTP_STREAM_ADOPTED_PUSH_STREAM 4073 // Check that we logged a QUIC_HTTP_STREAM_ADOPTED_PUSH_STREAM
4070 int pos = ExpectLogContainsSomewhere( 4074 int pos = ExpectLogContainsSomewhere(
4071 entries, 0, NetLogEventType::QUIC_HTTP_STREAM_ADOPTED_PUSH_STREAM, 4075 entries, 0, NetLogEventType::QUIC_HTTP_STREAM_ADOPTED_PUSH_STREAM,
4072 NetLogEventPhase::NONE); 4076 NetLogEventPhase::NONE);
4073 EXPECT_LT(0, pos); 4077 EXPECT_LT(0, pos);
4074 } 4078 }
4075 4079
4076 TEST_P(QuicNetworkTransactionTest, QuicForceHolBlocking) { 4080 TEST_P(QuicNetworkTransactionTest, QuicForceHolBlocking) {
4077 params_.quic_force_hol_blocking = true; 4081 session_params_.quic_force_hol_blocking = true;
4078 params_.origins_to_force_quic_on.insert( 4082 session_params_.origins_to_force_quic_on.insert(
4079 HostPortPair::FromString("mail.example.org:443")); 4083 HostPortPair::FromString("mail.example.org:443"));
4080 4084
4081 MockQuicData mock_quic_data; 4085 MockQuicData mock_quic_data;
4082 4086
4083 QuicStreamOffset offset = 0; 4087 QuicStreamOffset offset = 0;
4084 mock_quic_data.AddWrite(ConstructInitialSettingsPacket(1, &offset)); 4088 mock_quic_data.AddWrite(ConstructInitialSettingsPacket(1, &offset));
4085 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 4089 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
4086 2, GetNthClientInitiatedStreamId(0), true, false, 4090 2, GetNthClientInitiatedStreamId(0), true, false,
4087 GetRequestHeaders("POST", "https", "/"), &offset)); 4091 GetRequestHeaders("POST", "https", "/"), &offset));
4088 4092
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
4150 ~QuicURLRequestContext() override { AssertNoURLRequests(); } 4154 ~QuicURLRequestContext() override { AssertNoURLRequests(); }
4151 4155
4152 MockClientSocketFactory& socket_factory() { return *socket_factory_; } 4156 MockClientSocketFactory& socket_factory() { return *socket_factory_; }
4153 4157
4154 private: 4158 private:
4155 MockClientSocketFactory* socket_factory_; 4159 MockClientSocketFactory* socket_factory_;
4156 URLRequestContextStorage storage_; 4160 URLRequestContextStorage storage_;
4157 }; 4161 };
4158 4162
4159 TEST_P(QuicNetworkTransactionTest, RawHeaderSizeSuccessfullRequest) { 4163 TEST_P(QuicNetworkTransactionTest, RawHeaderSizeSuccessfullRequest) {
4160 params_.origins_to_force_quic_on.insert( 4164 session_params_.origins_to_force_quic_on.insert(
4161 HostPortPair::FromString("mail.example.org:443")); 4165 HostPortPair::FromString("mail.example.org:443"));
4162 4166
4163 MockQuicData mock_quic_data; 4167 MockQuicData mock_quic_data;
4164 QuicStreamOffset header_stream_offset = 0; 4168 QuicStreamOffset header_stream_offset = 0;
4165 mock_quic_data.AddWrite( 4169 mock_quic_data.AddWrite(
4166 ConstructInitialSettingsPacket(1, &header_stream_offset)); 4170 ConstructInitialSettingsPacket(1, &header_stream_offset));
4167 SpdyHeaderBlock headers(GetRequestHeaders("GET", "https", "/")); 4171 SpdyHeaderBlock headers(GetRequestHeaders("GET", "https", "/"));
4168 headers["user-agent"] = ""; 4172 headers["user-agent"] = "";
4169 headers["accept-encoding"] = "gzip, deflate"; 4173 headers["accept-encoding"] = "gzip, deflate";
4170 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 4174 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
4209 request->GetTotalSentBytes()); 4213 request->GetTotalSentBytes());
4210 EXPECT_EQ(network_delegate.total_network_bytes_received(), 4214 EXPECT_EQ(network_delegate.total_network_bytes_received(),
4211 request->GetTotalReceivedBytes()); 4215 request->GetTotalReceivedBytes());
4212 EXPECT_EQ(static_cast<int>(expected_raw_header_response_size), 4216 EXPECT_EQ(static_cast<int>(expected_raw_header_response_size),
4213 request->raw_header_size()); 4217 request->raw_header_size());
4214 EXPECT_TRUE(mock_quic_data.AllReadDataConsumed()); 4218 EXPECT_TRUE(mock_quic_data.AllReadDataConsumed());
4215 EXPECT_TRUE(mock_quic_data.AllWriteDataConsumed()); 4219 EXPECT_TRUE(mock_quic_data.AllWriteDataConsumed());
4216 } 4220 }
4217 4221
4218 TEST_P(QuicNetworkTransactionTest, RawHeaderSizeSuccessfullPushHeadersFirst) { 4222 TEST_P(QuicNetworkTransactionTest, RawHeaderSizeSuccessfullPushHeadersFirst) {
4219 params_.origins_to_force_quic_on.insert( 4223 session_params_.origins_to_force_quic_on.insert(
4220 HostPortPair::FromString("mail.example.org:443")); 4224 HostPortPair::FromString("mail.example.org:443"));
4221 4225
4222 MockQuicData mock_quic_data; 4226 MockQuicData mock_quic_data;
4223 QuicStreamOffset header_stream_offset = 0; 4227 QuicStreamOffset header_stream_offset = 0;
4224 mock_quic_data.AddWrite( 4228 mock_quic_data.AddWrite(
4225 ConstructInitialSettingsPacket(1, &header_stream_offset)); 4229 ConstructInitialSettingsPacket(1, &header_stream_offset));
4226 SpdyHeaderBlock headers(GetRequestHeaders("GET", "https", "/")); 4230 SpdyHeaderBlock headers(GetRequestHeaders("GET", "https", "/"));
4227 headers["user-agent"] = ""; 4231 headers["user-agent"] = "";
4228 headers["accept-encoding"] = "gzip, deflate"; 4232 headers["accept-encoding"] = "gzip, deflate";
4229 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 4233 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
4305 proxy_service_(ProxyService::CreateDirect()), 4309 proxy_service_(ProxyService::CreateDirect()),
4306 auth_handler_factory_( 4310 auth_handler_factory_(
4307 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)), 4311 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)),
4308 random_generator_(0), 4312 random_generator_(0),
4309 ssl_data_(ASYNC, OK) {} 4313 ssl_data_(ASYNC, OK) {}
4310 4314
4311 void SetUp() override { 4315 void SetUp() override {
4312 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); 4316 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
4313 base::RunLoop().RunUntilIdle(); 4317 base::RunLoop().RunUntilIdle();
4314 4318
4315 HttpNetworkSession::Params params; 4319 HttpNetworkSession::Params session_params;
4320 session_params.enable_quic = true;
4321 session_params.quic_supported_versions = SupportedVersions(version_);
4322
4323 HttpNetworkSession::Context session_context;
4316 4324
4317 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20)); 4325 clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(20));
4318 params.quic_clock = &clock_; 4326 session_context.quic_clock = &clock_;
4319 4327
4320 crypto_client_stream_factory_.set_handshake_mode( 4328 crypto_client_stream_factory_.set_handshake_mode(
4321 MockCryptoClientStream::CONFIRM_HANDSHAKE); 4329 MockCryptoClientStream::CONFIRM_HANDSHAKE);
4322 params.quic_crypto_client_stream_factory = &crypto_client_stream_factory_; 4330 session_context.quic_crypto_client_stream_factory =
4331 &crypto_client_stream_factory_;
4323 4332
4324 params.enable_quic = true; 4333 session_context.quic_random = &random_generator_;
4325 params.quic_random = &random_generator_; 4334 session_context.client_socket_factory = &socket_factory_;
4326 params.client_socket_factory = &socket_factory_; 4335 session_context.host_resolver = &host_resolver_;
4327 params.host_resolver = &host_resolver_; 4336 session_context.cert_verifier = &cert_verifier_;
4328 params.cert_verifier = &cert_verifier_; 4337 session_context.transport_security_state = &transport_security_state_;
4329 params.transport_security_state = &transport_security_state_; 4338 session_context.cert_transparency_verifier =
4330 params.cert_transparency_verifier = cert_transparency_verifier_.get(); 4339 cert_transparency_verifier_.get();
4331 params.ct_policy_enforcer = &ct_policy_enforcer_; 4340 session_context.ct_policy_enforcer = &ct_policy_enforcer_;
4332 params.socket_performance_watcher_factory = 4341 session_context.socket_performance_watcher_factory =
4333 &test_socket_performance_watcher_factory_; 4342 &test_socket_performance_watcher_factory_;
4334 params.ssl_config_service = ssl_config_service_.get(); 4343 session_context.ssl_config_service = ssl_config_service_.get();
4335 params.proxy_service = proxy_service_.get(); 4344 session_context.proxy_service = proxy_service_.get();
4336 params.http_auth_handler_factory = auth_handler_factory_.get(); 4345 session_context.http_auth_handler_factory = auth_handler_factory_.get();
4337 params.http_server_properties = &http_server_properties_; 4346 session_context.http_server_properties = &http_server_properties_;
4338 params.quic_supported_versions = SupportedVersions(version_);
4339 4347
4340 session_.reset(new HttpNetworkSession(params)); 4348 session_.reset(new HttpNetworkSession(session_params, session_context));
4341 session_->quic_stream_factory()->set_require_confirmation(true); 4349 session_->quic_stream_factory()->set_require_confirmation(true);
4342 } 4350 }
4343 4351
4344 void TearDown() override { 4352 void TearDown() override {
4345 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); 4353 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
4346 // Empty the current queue. 4354 // Empty the current queue.
4347 base::RunLoop().RunUntilIdle(); 4355 base::RunLoop().RunUntilIdle();
4348 PlatformTest::TearDown(); 4356 PlatformTest::TearDown();
4349 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); 4357 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
4350 base::RunLoop().RunUntilIdle(); 4358 base::RunLoop().RunUntilIdle();
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
4725 4733
4726 SendRequestAndExpectQuicResponse(origin1_); 4734 SendRequestAndExpectQuicResponse(origin1_);
4727 SendRequestAndExpectQuicResponse(origin2_); 4735 SendRequestAndExpectQuicResponse(origin2_);
4728 4736
4729 EXPECT_TRUE(AllDataConsumed()); 4737 EXPECT_TRUE(AllDataConsumed());
4730 } 4738 }
4731 4739
4732 // crbug.com/705109 - this confirms that matching request with a body 4740 // crbug.com/705109 - this confirms that matching request with a body
4733 // triggers a crash (pre-fix). 4741 // triggers a crash (pre-fix).
4734 TEST_P(QuicNetworkTransactionTest, QuicServerPushMatchesRequestWithBody) { 4742 TEST_P(QuicNetworkTransactionTest, QuicServerPushMatchesRequestWithBody) {
4735 params_.origins_to_force_quic_on.insert( 4743 session_params_.origins_to_force_quic_on.insert(
4736 HostPortPair::FromString("mail.example.org:443")); 4744 HostPortPair::FromString("mail.example.org:443"));
4737 4745
4738 MockQuicData mock_quic_data; 4746 MockQuicData mock_quic_data;
4739 QuicStreamOffset header_stream_offset = 0; 4747 QuicStreamOffset header_stream_offset = 0;
4740 mock_quic_data.AddWrite( 4748 mock_quic_data.AddWrite(
4741 ConstructInitialSettingsPacket(1, &header_stream_offset)); 4749 ConstructInitialSettingsPacket(1, &header_stream_offset));
4742 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( 4750 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket(
4743 2, GetNthClientInitiatedStreamId(0), true, true, 4751 2, GetNthClientInitiatedStreamId(0), true, true,
4744 GetRequestHeaders("GET", "https", "/"), &header_stream_offset)); 4752 GetRequestHeaders("GET", "https", "/"), &header_stream_offset));
4745 QuicStreamOffset server_header_offset = 0; 4753 QuicStreamOffset server_header_offset = 0;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
4796 4804
4797 request_.url = GURL("https://mail.example.org/pushed.jpg"); 4805 request_.url = GURL("https://mail.example.org/pushed.jpg");
4798 ChunkedUploadDataStream upload_data(0); 4806 ChunkedUploadDataStream upload_data(0);
4799 upload_data.AppendData("1", 1, true); 4807 upload_data.AppendData("1", 1, true);
4800 request_.upload_data_stream = &upload_data; 4808 request_.upload_data_stream = &upload_data;
4801 SendRequestAndExpectQuicResponse("and hello!"); 4809 SendRequestAndExpectQuicResponse("and hello!");
4802 } 4810 }
4803 4811
4804 } // namespace test 4812 } // namespace test
4805 } // namespace net 4813 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/chromium/quic_end_to_end_unittest.cc ('k') | net/socket/client_socket_pool_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698