| OLD | NEW |
| 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/http/http_proxy_client_socket_pool.h" | 5 #include "net/http/http_proxy_client_socket_pool.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "base/time.h" | 10 #include "base/time.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 ExpectConnectTimingHasTimes(load_timing_info.connect_timing, | 72 ExpectConnectTimingHasTimes(load_timing_info.connect_timing, |
| 73 CONNECT_TIMING_HAS_SSL_TIMES); | 73 CONNECT_TIMING_HAS_SSL_TIMES); |
| 74 ExpectLoadTimingHasOnlyConnectionTimes(load_timing_info); | 74 ExpectLoadTimingHasOnlyConnectionTimes(load_timing_info); |
| 75 } | 75 } |
| 76 | 76 |
| 77 class SSLClientSocketPoolTest : public testing::Test { | 77 class SSLClientSocketPoolTest : public testing::Test { |
| 78 protected: | 78 protected: |
| 79 SSLClientSocketPoolTest() | 79 SSLClientSocketPoolTest() |
| 80 : proxy_service_(ProxyService::CreateDirect()), | 80 : proxy_service_(ProxyService::CreateDirect()), |
| 81 ssl_config_service_(new SSLConfigServiceDefaults), | 81 ssl_config_service_(new SSLConfigServiceDefaults), |
| 82 http_auth_handler_factory_(HttpAuthHandlerFactory::CreateDefault( | 82 http_auth_handler_factory_( |
| 83 &host_resolver_)), | 83 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)), |
| 84 session_(CreateNetworkSession()), | 84 session_(CreateNetworkSession()), |
| 85 direct_transport_socket_params_(new TransportSocketParams( | 85 direct_transport_socket_params_( |
| 86 HostPortPair("host", 443), MEDIUM, false, false, | 86 new TransportSocketParams(HostPortPair("host", 443), |
| 87 OnHostResolutionCallback())), | 87 MEDIUM, |
| 88 false, |
| 89 false, |
| 90 OnHostResolutionCallback())), |
| 88 transport_histograms_("MockTCP"), | 91 transport_histograms_("MockTCP"), |
| 89 transport_socket_pool_( | 92 transport_socket_pool_(kMaxSockets, |
| 90 kMaxSockets, | 93 kMaxSocketsPerGroup, |
| 91 kMaxSocketsPerGroup, | 94 &transport_histograms_, |
| 92 &transport_histograms_, | 95 &socket_factory_), |
| 93 &socket_factory_), | 96 proxy_transport_socket_params_( |
| 94 proxy_transport_socket_params_(new TransportSocketParams( | 97 new TransportSocketParams(HostPortPair("proxy", 443), |
| 95 HostPortPair("proxy", 443), MEDIUM, false, false, | 98 MEDIUM, |
| 96 OnHostResolutionCallback())), | 99 false, |
| 97 socks_socket_params_(new SOCKSSocketParams( | 100 false, |
| 98 proxy_transport_socket_params_, true, | 101 OnHostResolutionCallback())), |
| 99 HostPortPair("sockshost", 443), MEDIUM)), | 102 socks_socket_params_( |
| 103 new SOCKSSocketParams(proxy_transport_socket_params_, |
| 104 true, |
| 105 HostPortPair("sockshost", 443), |
| 106 MEDIUM)), |
| 100 socks_histograms_("MockSOCKS"), | 107 socks_histograms_("MockSOCKS"), |
| 101 socks_socket_pool_( | 108 socks_socket_pool_(kMaxSockets, |
| 102 kMaxSockets, | 109 kMaxSocketsPerGroup, |
| 103 kMaxSocketsPerGroup, | 110 &socks_histograms_, |
| 104 &socks_histograms_, | 111 &transport_socket_pool_), |
| 105 &transport_socket_pool_), | 112 http_proxy_socket_params_( |
| 106 http_proxy_socket_params_(new HttpProxySocketParams( | 113 new HttpProxySocketParams(proxy_transport_socket_params_, |
| 107 proxy_transport_socket_params_, NULL, GURL("http://host"), "", | 114 NULL, |
| 108 HostPortPair("host", 80), | 115 GURL("http://host"), |
| 109 session_->http_auth_cache(), | 116 std::string(), |
| 110 session_->http_auth_handler_factory(), | 117 HostPortPair("host", 80), |
| 111 session_->spdy_session_pool(), | 118 session_->http_auth_cache(), |
| 112 true)), | 119 session_->http_auth_handler_factory(), |
| 120 session_->spdy_session_pool(), |
| 121 true)), |
| 113 http_proxy_histograms_("MockHttpProxy"), | 122 http_proxy_histograms_("MockHttpProxy"), |
| 114 http_proxy_socket_pool_( | 123 http_proxy_socket_pool_(kMaxSockets, |
| 115 kMaxSockets, | 124 kMaxSocketsPerGroup, |
| 116 kMaxSocketsPerGroup, | 125 &http_proxy_histograms_, |
| 117 &http_proxy_histograms_, | 126 &host_resolver_, |
| 118 &host_resolver_, | 127 &transport_socket_pool_, |
| 119 &transport_socket_pool_, | 128 NULL, |
| 120 NULL, | 129 NULL) { |
| 121 NULL) { | |
| 122 scoped_refptr<SSLConfigService> ssl_config_service( | 130 scoped_refptr<SSLConfigService> ssl_config_service( |
| 123 new SSLConfigServiceDefaults); | 131 new SSLConfigServiceDefaults); |
| 124 ssl_config_service->GetSSLConfig(&ssl_config_); | 132 ssl_config_service->GetSSLConfig(&ssl_config_); |
| 125 } | 133 } |
| 126 | 134 |
| 127 void CreatePool(bool transport_pool, bool http_proxy_pool, bool socks_pool) { | 135 void CreatePool(bool transport_pool, bool http_proxy_pool, bool socks_pool) { |
| 128 ssl_histograms_.reset(new ClientSocketPoolHistograms("SSLUnitTest")); | 136 ssl_histograms_.reset(new ClientSocketPoolHistograms("SSLUnitTest")); |
| 129 pool_.reset(new SSLClientSocketPool( | 137 pool_.reset(new SSLClientSocketPool( |
| 130 kMaxSockets, | 138 kMaxSockets, |
| 131 kMaxSocketsPerGroup, | 139 kMaxSocketsPerGroup, |
| 132 ssl_histograms_.get(), | 140 ssl_histograms_.get(), |
| 133 NULL /* host_resolver */, | 141 NULL /* host_resolver */, |
| 134 NULL /* cert_verifier */, | 142 NULL /* cert_verifier */, |
| 135 NULL /* server_bound_cert_service */, | 143 NULL /* server_bound_cert_service */, |
| 136 NULL /* transport_security_state */, | 144 NULL /* transport_security_state */, |
| 137 "" /* ssl_session_cache_shard */, | 145 std::string() /* ssl_session_cache_shard */, |
| 138 &socket_factory_, | 146 &socket_factory_, |
| 139 transport_pool ? &transport_socket_pool_ : NULL, | 147 transport_pool ? &transport_socket_pool_ : NULL, |
| 140 socks_pool ? &socks_socket_pool_ : NULL, | 148 socks_pool ? &socks_socket_pool_ : NULL, |
| 141 http_proxy_pool ? &http_proxy_socket_pool_ : NULL, | 149 http_proxy_pool ? &http_proxy_socket_pool_ : NULL, |
| 142 NULL, | 150 NULL, |
| 143 NULL)); | 151 NULL)); |
| 144 } | 152 } |
| 145 | 153 |
| 146 scoped_refptr<SSLSocketParams> SSLParams(ProxyServer::Scheme proxy, | 154 scoped_refptr<SSLSocketParams> SSLParams(ProxyServer::Scheme proxy, |
| 147 bool want_spdy_over_npn) { | 155 bool want_spdy_over_npn) { |
| (...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 715 HostPortProxyPair pair; | 723 HostPortProxyPair pair; |
| 716 AddressList addresses; | 724 AddressList addresses; |
| 717 } test_hosts[] = { | 725 } test_hosts[] = { |
| 718 { "www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5" }, | 726 { "www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5" }, |
| 719 { "code.google.com", "192.168.0.2,192.168.0.3,192.168.0.5" }, | 727 { "code.google.com", "192.168.0.2,192.168.0.3,192.168.0.5" }, |
| 720 { "js.webkit.org", "192.168.0.4,192.168.0.1,192.0.2.33" }, | 728 { "js.webkit.org", "192.168.0.4,192.168.0.1,192.0.2.33" }, |
| 721 }; | 729 }; |
| 722 | 730 |
| 723 host_resolver_.set_synchronous_mode(true); | 731 host_resolver_.set_synchronous_mode(true); |
| 724 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { | 732 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { |
| 725 host_resolver_.rules()->AddIPLiteralRule(test_hosts[i].name, | 733 host_resolver_.rules()->AddIPLiteralRule( |
| 726 test_hosts[i].iplist, ""); | 734 test_hosts[i].name, test_hosts[i].iplist, std::string()); |
| 727 | 735 |
| 728 // This test requires that the HostResolver cache be populated. Normal | 736 // This test requires that the HostResolver cache be populated. Normal |
| 729 // code would have done this already, but we do it manually. | 737 // code would have done this already, but we do it manually. |
| 730 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); | 738 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); |
| 731 host_resolver_.Resolve(info, &test_hosts[i].addresses, CompletionCallback(), | 739 host_resolver_.Resolve(info, &test_hosts[i].addresses, CompletionCallback(), |
| 732 NULL, BoundNetLog()); | 740 NULL, BoundNetLog()); |
| 733 | 741 |
| 734 // Setup a HostPortProxyPair | 742 // Setup a HostPortProxyPair |
| 735 test_hosts[i].pair = HostPortProxyPair( | 743 test_hosts[i].pair = HostPortProxyPair( |
| 736 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct()); | 744 HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct()); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 798 HostPortProxyPair pair; | 806 HostPortProxyPair pair; |
| 799 AddressList addresses; | 807 AddressList addresses; |
| 800 } test_hosts[] = { | 808 } test_hosts[] = { |
| 801 { "www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5" }, | 809 { "www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5" }, |
| 802 { "js.webkit.com", "192.168.0.4,192.168.0.1,192.0.2.33" }, | 810 { "js.webkit.com", "192.168.0.4,192.168.0.1,192.0.2.33" }, |
| 803 }; | 811 }; |
| 804 | 812 |
| 805 TestCompletionCallback callback; | 813 TestCompletionCallback callback; |
| 806 int rv; | 814 int rv; |
| 807 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { | 815 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { |
| 808 host_resolver_.rules()->AddIPLiteralRule(test_hosts[i].name, | 816 host_resolver_.rules()->AddIPLiteralRule( |
| 809 test_hosts[i].iplist, ""); | 817 test_hosts[i].name, test_hosts[i].iplist, std::string()); |
| 810 | 818 |
| 811 // This test requires that the HostResolver cache be populated. Normal | 819 // This test requires that the HostResolver cache be populated. Normal |
| 812 // code would have done this already, but we do it manually. | 820 // code would have done this already, but we do it manually. |
| 813 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); | 821 HostResolver::RequestInfo info(HostPortPair(test_hosts[i].name, kTestPort)); |
| 814 rv = host_resolver_.Resolve(info, &test_hosts[i].addresses, | 822 rv = host_resolver_.Resolve(info, &test_hosts[i].addresses, |
| 815 callback.callback(), NULL, BoundNetLog()); | 823 callback.callback(), NULL, BoundNetLog()); |
| 816 EXPECT_EQ(OK, callback.GetResult(rv)); | 824 EXPECT_EQ(OK, callback.GetResult(rv)); |
| 817 | 825 |
| 818 // Setup a HostPortProxyPair | 826 // Setup a HostPortProxyPair |
| 819 test_hosts[i].pair = HostPortProxyPair( | 827 test_hosts[i].pair = HostPortProxyPair( |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 884 ssl.channel_id_sent = true; | 892 ssl.channel_id_sent = true; |
| 885 ssl.SetNextProto(kProtoSPDY2); | 893 ssl.SetNextProto(kProtoSPDY2); |
| 886 TestIPPoolingDisabled(&ssl); | 894 TestIPPoolingDisabled(&ssl); |
| 887 } | 895 } |
| 888 | 896 |
| 889 // It would be nice to also test the timeouts in SSLClientSocketPool. | 897 // It would be nice to also test the timeouts in SSLClientSocketPool. |
| 890 | 898 |
| 891 } // namespace | 899 } // namespace |
| 892 | 900 |
| 893 } // namespace net | 901 } // namespace net |
| OLD | NEW |