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

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

Issue 8572041: Make ClientSocketPoolManager into an interface. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fix some straggler renames. Created 9 years, 1 month 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/http/http_stream_factory_impl_job.cc ('k') | net/net.gyp » ('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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "net/base/capturing_net_log.h" 10 #include "net/base/capturing_net_log.h"
11 #include "net/base/cert_verifier.h" 11 #include "net/base/cert_verifier.h"
12 #include "net/base/mock_host_resolver.h" 12 #include "net/base/mock_host_resolver.h"
13 #include "net/base/net_log.h" 13 #include "net/base/net_log.h"
14 #include "net/base/ssl_config_service_defaults.h" 14 #include "net/base/ssl_config_service_defaults.h"
15 #include "net/base/test_completion_callback.h" 15 #include "net/base/test_completion_callback.h"
16 #include "net/http/http_auth_handler_factory.h" 16 #include "net/http/http_auth_handler_factory.h"
17 #include "net/http/http_network_session.h" 17 #include "net/http/http_network_session.h"
18 #include "net/http/http_network_session_peer.h" 18 #include "net/http/http_network_session_peer.h"
19 #include "net/http/http_request_info.h" 19 #include "net/http/http_request_info.h"
20 #include "net/http/http_server_properties_impl.h" 20 #include "net/http/http_server_properties_impl.h"
21 #include "net/http/http_stream.h" 21 #include "net/http/http_stream.h"
22 #include "net/proxy/proxy_info.h" 22 #include "net/proxy/proxy_info.h"
23 #include "net/proxy/proxy_service.h" 23 #include "net/proxy/proxy_service.h"
24 #include "net/socket/mock_client_socket_pool_manager.h"
24 #include "net/socket/socket_test_util.h" 25 #include "net/socket/socket_test_util.h"
25 #include "net/spdy/spdy_session.h" 26 #include "net/spdy/spdy_session.h"
26 #include "net/spdy/spdy_session_pool.h" 27 #include "net/spdy/spdy_session_pool.h"
27 #include "testing/gtest/include/gtest/gtest.h" 28 #include "testing/gtest/include/gtest/gtest.h"
28 29
29 namespace net { 30 namespace net {
30 31
31 namespace { 32 namespace {
32 33
33 class MockHttpStreamFactoryImpl : public HttpStreamFactoryImpl { 34 class MockHttpStreamFactoryImpl : public HttpStreamFactoryImpl {
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 275
275 TEST(HttpStreamFactoryTest, PreconnectDirect) { 276 TEST(HttpStreamFactoryTest, PreconnectDirect) {
276 for (size_t i = 0; i < arraysize(kTests); ++i) { 277 for (size_t i = 0; i < arraysize(kTests); ++i) {
277 SessionDependencies session_deps(ProxyService::CreateDirect()); 278 SessionDependencies session_deps(ProxyService::CreateDirect());
278 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 279 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
279 HttpNetworkSessionPeer peer(session); 280 HttpNetworkSessionPeer peer(session);
280 CapturePreconnectsTransportSocketPool* transport_conn_pool = 281 CapturePreconnectsTransportSocketPool* transport_conn_pool =
281 new CapturePreconnectsTransportSocketPool( 282 new CapturePreconnectsTransportSocketPool(
282 session_deps.host_resolver.get(), 283 session_deps.host_resolver.get(),
283 session_deps.cert_verifier.get()); 284 session_deps.cert_verifier.get());
284 peer.SetTransportSocketPool(transport_conn_pool);
285 CapturePreconnectsSSLSocketPool* ssl_conn_pool = 285 CapturePreconnectsSSLSocketPool* ssl_conn_pool =
286 new CapturePreconnectsSSLSocketPool( 286 new CapturePreconnectsSSLSocketPool(
287 session_deps.host_resolver.get(), 287 session_deps.host_resolver.get(),
288 session_deps.cert_verifier.get()); 288 session_deps.cert_verifier.get());
289 peer.SetSSLSocketPool(ssl_conn_pool); 289 MockClientSocketPoolManager* mock_pool_manager =
290 new MockClientSocketPoolManager;
291 mock_pool_manager->SetTransportSocketPool(transport_conn_pool);
292 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool);
293 peer.SetClientSocketPoolManager(mock_pool_manager);
290 PreconnectHelper(kTests[i], session); 294 PreconnectHelper(kTests[i], session);
291 if (kTests[i].ssl) 295 if (kTests[i].ssl)
292 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams()); 296 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams());
293 else 297 else
294 EXPECT_EQ(kTests[i].num_streams, transport_conn_pool->last_num_streams()); 298 EXPECT_EQ(kTests[i].num_streams, transport_conn_pool->last_num_streams());
295 } 299 }
296 } 300 }
297 301
298 TEST(HttpStreamFactoryTest, PreconnectHttpProxy) { 302 TEST(HttpStreamFactoryTest, PreconnectHttpProxy) {
299 for (size_t i = 0; i < arraysize(kTests); ++i) { 303 for (size_t i = 0; i < arraysize(kTests); ++i) {
300 SessionDependencies session_deps(ProxyService::CreateFixed("http_proxy")); 304 SessionDependencies session_deps(ProxyService::CreateFixed("http_proxy"));
301 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 305 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
302 HttpNetworkSessionPeer peer(session); 306 HttpNetworkSessionPeer peer(session);
303 HostPortPair proxy_host("http_proxy", 80); 307 HostPortPair proxy_host("http_proxy", 80);
304 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = 308 CapturePreconnectsHttpProxySocketPool* http_proxy_pool =
305 new CapturePreconnectsHttpProxySocketPool( 309 new CapturePreconnectsHttpProxySocketPool(
306 session_deps.host_resolver.get(), 310 session_deps.host_resolver.get(),
307 session_deps.cert_verifier.get()); 311 session_deps.cert_verifier.get());
308 peer.SetSocketPoolForHTTPProxy(proxy_host, http_proxy_pool);
309 CapturePreconnectsSSLSocketPool* ssl_conn_pool = 312 CapturePreconnectsSSLSocketPool* ssl_conn_pool =
310 new CapturePreconnectsSSLSocketPool( 313 new CapturePreconnectsSSLSocketPool(
311 session_deps.host_resolver.get(), 314 session_deps.host_resolver.get(),
312 session_deps.cert_verifier.get()); 315 session_deps.cert_verifier.get());
313 peer.SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool); 316 MockClientSocketPoolManager* mock_pool_manager =
317 new MockClientSocketPoolManager;
318 mock_pool_manager->SetSocketPoolForHTTPProxy(proxy_host, http_proxy_pool);
319 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool);
320 peer.SetClientSocketPoolManager(mock_pool_manager);
314 PreconnectHelper(kTests[i], session); 321 PreconnectHelper(kTests[i], session);
315 if (kTests[i].ssl) 322 if (kTests[i].ssl)
316 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams()); 323 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams());
317 else 324 else
318 EXPECT_EQ(kTests[i].num_streams, http_proxy_pool->last_num_streams()); 325 EXPECT_EQ(kTests[i].num_streams, http_proxy_pool->last_num_streams());
319 } 326 }
320 } 327 }
321 328
322 TEST(HttpStreamFactoryTest, PreconnectSocksProxy) { 329 TEST(HttpStreamFactoryTest, PreconnectSocksProxy) {
323 for (size_t i = 0; i < arraysize(kTests); ++i) { 330 for (size_t i = 0; i < arraysize(kTests); ++i) {
324 SessionDependencies session_deps( 331 SessionDependencies session_deps(
325 ProxyService::CreateFixed("socks4://socks_proxy:1080")); 332 ProxyService::CreateFixed("socks4://socks_proxy:1080"));
326 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 333 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
327 HttpNetworkSessionPeer peer(session); 334 HttpNetworkSessionPeer peer(session);
328 HostPortPair proxy_host("socks_proxy", 1080); 335 HostPortPair proxy_host("socks_proxy", 1080);
329 CapturePreconnectsSOCKSSocketPool* socks_proxy_pool = 336 CapturePreconnectsSOCKSSocketPool* socks_proxy_pool =
330 new CapturePreconnectsSOCKSSocketPool( 337 new CapturePreconnectsSOCKSSocketPool(
331 session_deps.host_resolver.get(), 338 session_deps.host_resolver.get(),
332 session_deps.cert_verifier.get()); 339 session_deps.cert_verifier.get());
333 peer.SetSocketPoolForSOCKSProxy(proxy_host, socks_proxy_pool);
334 CapturePreconnectsSSLSocketPool* ssl_conn_pool = 340 CapturePreconnectsSSLSocketPool* ssl_conn_pool =
335 new CapturePreconnectsSSLSocketPool( 341 new CapturePreconnectsSSLSocketPool(
336 session_deps.host_resolver.get(), 342 session_deps.host_resolver.get(),
337 session_deps.cert_verifier.get()); 343 session_deps.cert_verifier.get());
338 peer.SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool); 344 MockClientSocketPoolManager* mock_pool_manager =
345 new MockClientSocketPoolManager;
346 mock_pool_manager->SetSocketPoolForSOCKSProxy(proxy_host, socks_proxy_pool);
347 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool);
348 peer.SetClientSocketPoolManager(mock_pool_manager);
339 PreconnectHelper(kTests[i], session); 349 PreconnectHelper(kTests[i], session);
340 if (kTests[i].ssl) 350 if (kTests[i].ssl)
341 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams()); 351 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams());
342 else 352 else
343 EXPECT_EQ(kTests[i].num_streams, socks_proxy_pool->last_num_streams()); 353 EXPECT_EQ(kTests[i].num_streams, socks_proxy_pool->last_num_streams());
344 } 354 }
345 } 355 }
346 356
347 TEST(HttpStreamFactoryTest, PreconnectDirectWithExistingSpdySession) { 357 TEST(HttpStreamFactoryTest, PreconnectDirectWithExistingSpdySession) {
348 for (size_t i = 0; i < arraysize(kTests); ++i) { 358 for (size_t i = 0; i < arraysize(kTests); ++i) {
349 SessionDependencies session_deps(ProxyService::CreateDirect()); 359 SessionDependencies session_deps(ProxyService::CreateDirect());
350 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 360 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
351 HttpNetworkSessionPeer peer(session); 361 HttpNetworkSessionPeer peer(session);
352 362
353 // Set an existing SpdySession in the pool. 363 // Set an existing SpdySession in the pool.
354 HostPortPair host_port_pair("www.google.com", 443); 364 HostPortPair host_port_pair("www.google.com", 443);
355 HostPortProxyPair pair(host_port_pair, ProxyServer::Direct()); 365 HostPortProxyPair pair(host_port_pair, ProxyServer::Direct());
356 scoped_refptr<SpdySession> spdy_session = 366 scoped_refptr<SpdySession> spdy_session =
357 session->spdy_session_pool()->Get(pair, BoundNetLog()); 367 session->spdy_session_pool()->Get(pair, BoundNetLog());
358 368
359 CapturePreconnectsTransportSocketPool* transport_conn_pool = 369 CapturePreconnectsTransportSocketPool* transport_conn_pool =
360 new CapturePreconnectsTransportSocketPool( 370 new CapturePreconnectsTransportSocketPool(
361 session_deps.host_resolver.get(), 371 session_deps.host_resolver.get(),
362 session_deps.cert_verifier.get()); 372 session_deps.cert_verifier.get());
363 peer.SetTransportSocketPool(transport_conn_pool);
364 CapturePreconnectsSSLSocketPool* ssl_conn_pool = 373 CapturePreconnectsSSLSocketPool* ssl_conn_pool =
365 new CapturePreconnectsSSLSocketPool( 374 new CapturePreconnectsSSLSocketPool(
366 session_deps.host_resolver.get(), 375 session_deps.host_resolver.get(),
367 session_deps.cert_verifier.get()); 376 session_deps.cert_verifier.get());
368 peer.SetSSLSocketPool(ssl_conn_pool); 377 MockClientSocketPoolManager* mock_pool_manager =
378 new MockClientSocketPoolManager;
379 mock_pool_manager->SetTransportSocketPool(transport_conn_pool);
380 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool);
381 peer.SetClientSocketPoolManager(mock_pool_manager);
369 PreconnectHelper(kTests[i], session); 382 PreconnectHelper(kTests[i], session);
370 // We shouldn't be preconnecting if we have an existing session, which is 383 // We shouldn't be preconnecting if we have an existing session, which is
371 // the case for https://www.google.com. 384 // the case for https://www.google.com.
372 if (kTests[i].ssl) 385 if (kTests[i].ssl)
373 EXPECT_EQ(-1, ssl_conn_pool->last_num_streams()); 386 EXPECT_EQ(-1, ssl_conn_pool->last_num_streams());
374 else 387 else
375 EXPECT_EQ(kTests[i].num_streams, transport_conn_pool->last_num_streams()); 388 EXPECT_EQ(kTests[i].num_streams, transport_conn_pool->last_num_streams());
376 } 389 }
377 } 390 }
378 391
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 const ProxyRetryInfoMap& retry_info = 428 const ProxyRetryInfoMap& retry_info =
416 session->proxy_service()->proxy_retry_info(); 429 session->proxy_service()->proxy_retry_info();
417 EXPECT_EQ(1u, retry_info.size()); 430 EXPECT_EQ(1u, retry_info.size());
418 ProxyRetryInfoMap::const_iterator iter = retry_info.find("bad:99"); 431 ProxyRetryInfoMap::const_iterator iter = retry_info.find("bad:99");
419 EXPECT_TRUE(iter != retry_info.end()); 432 EXPECT_TRUE(iter != retry_info.end());
420 } 433 }
421 434
422 } // namespace 435 } // namespace
423 436
424 } // namespace net 437 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_factory_impl_job.cc ('k') | net/net.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698