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

Side by Side Diff: net/http/http_stream_factory_impl_unittest.cc

Issue 2600943002: Cleanup the preconnect to proxy code and Job controller code (Closed)
Patch Set: rch comments Created 3 years, 11 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/http/http_stream_factory_impl.h" 5 #include "net/http/http_stream_factory_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
11 #include <utility> 11 #include <utility>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/compiler_specific.h" 14 #include "base/compiler_specific.h"
15 #include "base/macros.h" 15 #include "base/macros.h"
16 #include "base/memory/ptr_util.h" 16 #include "base/memory/ptr_util.h"
17 #include "base/metrics/field_trial.h"
18 #include "base/run_loop.h" 17 #include "base/run_loop.h"
19 #include "base/test/histogram_tester.h" 18 #include "base/test/histogram_tester.h"
20 #include "net/base/port_util.h" 19 #include "net/base/port_util.h"
21 #include "net/base/test_completion_callback.h" 20 #include "net/base/test_completion_callback.h"
22 #include "net/base/test_proxy_delegate.h" 21 #include "net/base/test_proxy_delegate.h"
23 #include "net/cert/ct_policy_enforcer.h" 22 #include "net/cert/ct_policy_enforcer.h"
24 #include "net/cert/mock_cert_verifier.h" 23 #include "net/cert/mock_cert_verifier.h"
25 #include "net/cert/multi_log_ct_verifier.h" 24 #include "net/cert/multi_log_ct_verifier.h"
26 #include "net/dns/mock_host_resolver.h" 25 #include "net/dns/mock_host_resolver.h"
27 #include "net/http/bidirectional_stream_impl.h" 26 #include "net/http/bidirectional_stream_impl.h"
(...skipping 1183 matching lines...) Expand 10 before | Expand all | Expand 10 after
1211 HttpRequestInfo request; 1210 HttpRequestInfo request;
1212 request.method = "GET"; 1211 request.method = "GET";
1213 request.url = url; 1212 request.url = url;
1214 request.load_flags = 0; 1213 request.load_flags = 0;
1215 1214
1216 session->http_stream_factory()->PreconnectStreams(num_streams, request); 1215 session->http_stream_factory()->PreconnectStreams(num_streams, request);
1217 EXPECT_EQ(-1, transport_conn_pool->last_num_streams()); 1216 EXPECT_EQ(-1, transport_conn_pool->last_num_streams());
1218 } 1217 }
1219 } 1218 }
1220 1219
1221 // Verify that the proxy delegate can disable preconnect jobs to only the proxy 1220 // Verify that only one preconnect job succeeds to a proxy server that supports
1222 // servers that support request priorities. 1221 // request priorities.
1223 TEST_F(HttpStreamFactoryTest, ProxyDelegateDisablesPreconnect) { 1222 TEST_F(HttpStreamFactoryTest, OnlyOnePreconnectToProxyServer) {
1224 base::FieldTrialList field_trial_list(nullptr);
1225 base::FieldTrialList::CreateFieldTrial(
1226 "NetAllowOnlyOnePreconnectToProxyServers", "Enabled");
1227
1228 for (bool set_http_server_properties : {false, true}) { 1223 for (bool set_http_server_properties : {false, true}) {
1229 for (int num_streams = 1; num_streams < 3; ++num_streams) { 1224 for (int num_streams = 1; num_streams < 3; ++num_streams) {
1230 base::HistogramTester histogram_tester; 1225 base::HistogramTester histogram_tester;
1231 GURL url = GURL("http://www.google.com"); 1226 GURL url = GURL("http://www.google.com");
1232 std::unique_ptr<ProxyService> proxy_service = 1227 std::unique_ptr<ProxyService> proxy_service =
1233 ProxyService::CreateFixedFromPacResult("HTTPS myproxy.org:443"); 1228 ProxyService::CreateFixedFromPacResult("HTTPS myproxy.org:443");
1234 1229
1235 // Set up the proxy server as a server that supports request priorities. 1230 // Set up the proxy server as a server that supports request priorities.
1236 HttpServerPropertiesImpl http_server_properties; 1231 HttpServerPropertiesImpl http_server_properties;
1237 if (set_http_server_properties) { 1232 if (set_http_server_properties) {
1238 url::SchemeHostPort spdy_server("https", "myproxy.org", 443); 1233 url::SchemeHostPort spdy_server("https", "myproxy.org", 443);
1239 http_server_properties.SetSupportsSpdy(spdy_server, true); 1234 http_server_properties.SetSupportsSpdy(spdy_server, true);
1240 } 1235 }
1241 1236
1242 SpdySessionDependencies session_deps; 1237 SpdySessionDependencies session_deps;
1243 HttpNetworkSession::Params params = 1238 HttpNetworkSession::Params params =
1244 SpdySessionDependencies::CreateSessionParams(&session_deps); 1239 SpdySessionDependencies::CreateSessionParams(&session_deps);
1245 params.enable_quic = true; 1240 params.enable_quic = true;
1246 params.proxy_service = proxy_service.get(); 1241 params.proxy_service = proxy_service.get();
1247 params.http_server_properties = &http_server_properties; 1242 params.http_server_properties = &http_server_properties;
1243 ASSERT_TRUE(params.restrict_to_one_preconnect_for_proxies);
1248 1244
1249 std::unique_ptr<HttpNetworkSession> session( 1245 std::unique_ptr<HttpNetworkSession> session(
1250 new HttpNetworkSession(params)); 1246 new HttpNetworkSession(params));
1251 1247
1252 HttpNetworkSessionPeer peer(session.get()); 1248 HttpNetworkSessionPeer peer(session.get());
1253 HostPortPair proxy_host("myproxy.org", 443); 1249 HostPortPair proxy_host("myproxy.org", 443);
1254 1250
1255 for (int preconnect_request = 0; preconnect_request < 2; 1251 for (int preconnect_request = 0; preconnect_request < 2;
1256 ++preconnect_request) { 1252 ++preconnect_request) {
1257 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = 1253 CapturePreconnectsHttpProxySocketPool* http_proxy_pool =
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
1603 HostPortPair("myproxy", 8888)))); 1599 HostPortPair("myproxy", 8888))));
1604 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy( 1600 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy(
1605 HttpNetworkSession::WEBSOCKET_SOCKET_POOL, 1601 HttpNetworkSession::WEBSOCKET_SOCKET_POOL,
1606 HostPortPair("myproxy", 8888)))); 1602 HostPortPair("myproxy", 8888))));
1607 EXPECT_FALSE(waiter.used_proxy_info().is_direct()); 1603 EXPECT_FALSE(waiter.used_proxy_info().is_direct());
1608 } 1604 }
1609 1605
1610 // Verifies that once a stream has been created to a proxy server (that supports 1606 // Verifies that once a stream has been created to a proxy server (that supports
1611 // request priorities) the next preconnect job can again open new sockets. 1607 // request priorities) the next preconnect job can again open new sockets.
1612 TEST_F(HttpStreamFactoryTest, RequestHttpStreamOverProxyWithPreconnects) { 1608 TEST_F(HttpStreamFactoryTest, RequestHttpStreamOverProxyWithPreconnects) {
1613 base::FieldTrialList field_trial_list(nullptr);
1614 base::FieldTrialList::CreateFieldTrial(
1615 "NetAllowOnlyOnePreconnectToProxyServers", "Enabled");
1616
1617 SpdySessionDependencies session_deps( 1609 SpdySessionDependencies session_deps(
1618 ProxyService::CreateFixed("https://myproxy.org:443")); 1610 ProxyService::CreateFixed("https://myproxy.org:443"));
1619 1611
1620 // Set up the proxy server as a server that supports request priorities. 1612 // Set up the proxy server as a server that supports request priorities.
1621 std::unique_ptr<HttpServerPropertiesImpl> http_server_properties( 1613 std::unique_ptr<HttpServerPropertiesImpl> http_server_properties(
1622 new HttpServerPropertiesImpl()); 1614 new HttpServerPropertiesImpl());
1623 url::SchemeHostPort spdy_server("https", "myproxy.org", 443); 1615 url::SchemeHostPort spdy_server("https", "myproxy.org", 443);
1624 http_server_properties->SetSupportsSpdy(spdy_server, true); 1616 http_server_properties->SetSupportsSpdy(spdy_server, true);
1625 session_deps.http_server_properties = std::move(http_server_properties); 1617 session_deps.http_server_properties = std::move(http_server_properties);
1626 1618
(...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after
2512 session->GetTransportSocketPool( 2504 session->GetTransportSocketPool(
2513 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 2505 HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
2514 EXPECT_EQ(1, GetSocketPoolGroupCount( 2506 EXPECT_EQ(1, GetSocketPoolGroupCount(
2515 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 2507 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
2516 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); 2508 EXPECT_TRUE(waiter.used_proxy_info().is_direct());
2517 } 2509 }
2518 2510
2519 } // namespace 2511 } // namespace
2520 2512
2521 } // namespace net 2513 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_factory_impl_job_controller_unittest.cc ('k') | net/spdy/spdy_test_util_common.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698