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

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

Issue 23856018: Changes to HttpNetworkTransaction for WebSocket Handshake (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rename SetWebSocketHandshakeCreateHelper Created 7 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_network_transaction_unittest.cc ('k') | net/http/http_transaction.h » ('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 "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 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 { 1, true}, 301 { 1, true},
302 { 2, true}, 302 { 2, true},
303 }; 303 };
304 304
305 void PreconnectHelperForURL(int num_streams, 305 void PreconnectHelperForURL(int num_streams,
306 const GURL& url, 306 const GURL& url,
307 HttpNetworkSession* session) { 307 HttpNetworkSession* session) {
308 HttpNetworkSessionPeer peer(session); 308 HttpNetworkSessionPeer peer(session);
309 MockHttpStreamFactoryImplForPreconnect* mock_factory = 309 MockHttpStreamFactoryImplForPreconnect* mock_factory =
310 new MockHttpStreamFactoryImplForPreconnect(session, false); 310 new MockHttpStreamFactoryImplForPreconnect(session, false);
311 peer.SetHttpStreamFactory(mock_factory); 311 peer.SetHttpStreamFactory(scoped_ptr<HttpStreamFactory>(mock_factory));
312 SSLConfig ssl_config; 312 SSLConfig ssl_config;
313 session->ssl_config_service()->GetSSLConfig(&ssl_config); 313 session->ssl_config_service()->GetSSLConfig(&ssl_config);
314 314
315 HttpRequestInfo request; 315 HttpRequestInfo request;
316 request.method = "GET"; 316 request.method = "GET";
317 request.url = url; 317 request.url = url;
318 request.load_flags = 0; 318 request.load_flags = 0;
319 319
320 session->http_stream_factory()->PreconnectStreams( 320 session->http_stream_factory()->PreconnectStreams(
321 num_streams, request, DEFAULT_PRIORITY, ssl_config, ssl_config); 321 num_streams, request, DEFAULT_PRIORITY, ssl_config, ssl_config);
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 SpdySessionDependencies::SpdyCreateSession(&session_deps)); 451 SpdySessionDependencies::SpdyCreateSession(&session_deps));
452 HttpNetworkSessionPeer peer(session); 452 HttpNetworkSessionPeer peer(session);
453 CapturePreconnectsTransportSocketPool* transport_conn_pool = 453 CapturePreconnectsTransportSocketPool* transport_conn_pool =
454 new CapturePreconnectsTransportSocketPool( 454 new CapturePreconnectsTransportSocketPool(
455 session_deps.host_resolver.get(), 455 session_deps.host_resolver.get(),
456 session_deps.cert_verifier.get()); 456 session_deps.cert_verifier.get());
457 CapturePreconnectsSSLSocketPool* ssl_conn_pool = 457 CapturePreconnectsSSLSocketPool* ssl_conn_pool =
458 new CapturePreconnectsSSLSocketPool( 458 new CapturePreconnectsSSLSocketPool(
459 session_deps.host_resolver.get(), 459 session_deps.host_resolver.get(),
460 session_deps.cert_verifier.get()); 460 session_deps.cert_verifier.get());
461 MockClientSocketPoolManager* mock_pool_manager = 461 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager(
462 new MockClientSocketPoolManager; 462 new MockClientSocketPoolManager);
463 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); 463 mock_pool_manager->SetTransportSocketPool(transport_conn_pool);
464 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool); 464 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool);
465 peer.SetClientSocketPoolManager(mock_pool_manager); 465 peer.SetClientSocketPoolManager(
466 mock_pool_manager.PassAs<ClientSocketPoolManager>());
466 PreconnectHelper(kTests[i], session.get()); 467 PreconnectHelper(kTests[i], session.get());
467 if (kTests[i].ssl) 468 if (kTests[i].ssl)
468 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams()); 469 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams());
469 else 470 else
470 EXPECT_EQ(kTests[i].num_streams, transport_conn_pool->last_num_streams()); 471 EXPECT_EQ(kTests[i].num_streams, transport_conn_pool->last_num_streams());
471 } 472 }
472 } 473 }
473 474
474 TEST_P(HttpStreamFactoryTest, PreconnectHttpProxy) { 475 TEST_P(HttpStreamFactoryTest, PreconnectHttpProxy) {
475 for (size_t i = 0; i < arraysize(kTests); ++i) { 476 for (size_t i = 0; i < arraysize(kTests); ++i) {
476 SpdySessionDependencies session_deps( 477 SpdySessionDependencies session_deps(
477 GetParam(), ProxyService::CreateFixed("http_proxy")); 478 GetParam(), ProxyService::CreateFixed("http_proxy"));
478 scoped_refptr<HttpNetworkSession> session( 479 scoped_refptr<HttpNetworkSession> session(
479 SpdySessionDependencies::SpdyCreateSession(&session_deps)); 480 SpdySessionDependencies::SpdyCreateSession(&session_deps));
480 HttpNetworkSessionPeer peer(session); 481 HttpNetworkSessionPeer peer(session);
481 HostPortPair proxy_host("http_proxy", 80); 482 HostPortPair proxy_host("http_proxy", 80);
482 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = 483 CapturePreconnectsHttpProxySocketPool* http_proxy_pool =
483 new CapturePreconnectsHttpProxySocketPool( 484 new CapturePreconnectsHttpProxySocketPool(
484 session_deps.host_resolver.get(), 485 session_deps.host_resolver.get(),
485 session_deps.cert_verifier.get()); 486 session_deps.cert_verifier.get());
486 CapturePreconnectsSSLSocketPool* ssl_conn_pool = 487 CapturePreconnectsSSLSocketPool* ssl_conn_pool =
487 new CapturePreconnectsSSLSocketPool( 488 new CapturePreconnectsSSLSocketPool(
488 session_deps.host_resolver.get(), 489 session_deps.host_resolver.get(),
489 session_deps.cert_verifier.get()); 490 session_deps.cert_verifier.get());
490 MockClientSocketPoolManager* mock_pool_manager = 491 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager(
491 new MockClientSocketPoolManager; 492 new MockClientSocketPoolManager);
492 mock_pool_manager->SetSocketPoolForHTTPProxy(proxy_host, http_proxy_pool); 493 mock_pool_manager->SetSocketPoolForHTTPProxy(proxy_host, http_proxy_pool);
493 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool); 494 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool);
494 peer.SetClientSocketPoolManager(mock_pool_manager); 495 peer.SetClientSocketPoolManager(
496 mock_pool_manager.PassAs<ClientSocketPoolManager>());
495 PreconnectHelper(kTests[i], session.get()); 497 PreconnectHelper(kTests[i], session.get());
496 if (kTests[i].ssl) 498 if (kTests[i].ssl)
497 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams()); 499 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams());
498 else 500 else
499 EXPECT_EQ(kTests[i].num_streams, http_proxy_pool->last_num_streams()); 501 EXPECT_EQ(kTests[i].num_streams, http_proxy_pool->last_num_streams());
500 } 502 }
501 } 503 }
502 504
503 TEST_P(HttpStreamFactoryTest, PreconnectSocksProxy) { 505 TEST_P(HttpStreamFactoryTest, PreconnectSocksProxy) {
504 for (size_t i = 0; i < arraysize(kTests); ++i) { 506 for (size_t i = 0; i < arraysize(kTests); ++i) {
505 SpdySessionDependencies session_deps( 507 SpdySessionDependencies session_deps(
506 GetParam(), ProxyService::CreateFixed("socks4://socks_proxy:1080")); 508 GetParam(), ProxyService::CreateFixed("socks4://socks_proxy:1080"));
507 scoped_refptr<HttpNetworkSession> session( 509 scoped_refptr<HttpNetworkSession> session(
508 SpdySessionDependencies::SpdyCreateSession(&session_deps)); 510 SpdySessionDependencies::SpdyCreateSession(&session_deps));
509 HttpNetworkSessionPeer peer(session); 511 HttpNetworkSessionPeer peer(session);
510 HostPortPair proxy_host("socks_proxy", 1080); 512 HostPortPair proxy_host("socks_proxy", 1080);
511 CapturePreconnectsSOCKSSocketPool* socks_proxy_pool = 513 CapturePreconnectsSOCKSSocketPool* socks_proxy_pool =
512 new CapturePreconnectsSOCKSSocketPool( 514 new CapturePreconnectsSOCKSSocketPool(
513 session_deps.host_resolver.get(), 515 session_deps.host_resolver.get(),
514 session_deps.cert_verifier.get()); 516 session_deps.cert_verifier.get());
515 CapturePreconnectsSSLSocketPool* ssl_conn_pool = 517 CapturePreconnectsSSLSocketPool* ssl_conn_pool =
516 new CapturePreconnectsSSLSocketPool( 518 new CapturePreconnectsSSLSocketPool(
517 session_deps.host_resolver.get(), 519 session_deps.host_resolver.get(),
518 session_deps.cert_verifier.get()); 520 session_deps.cert_verifier.get());
519 MockClientSocketPoolManager* mock_pool_manager = 521 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager(
520 new MockClientSocketPoolManager; 522 new MockClientSocketPoolManager);
521 mock_pool_manager->SetSocketPoolForSOCKSProxy(proxy_host, socks_proxy_pool); 523 mock_pool_manager->SetSocketPoolForSOCKSProxy(proxy_host, socks_proxy_pool);
522 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool); 524 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool);
523 peer.SetClientSocketPoolManager(mock_pool_manager); 525 peer.SetClientSocketPoolManager(
526 mock_pool_manager.PassAs<ClientSocketPoolManager>());
524 PreconnectHelper(kTests[i], session.get()); 527 PreconnectHelper(kTests[i], session.get());
525 if (kTests[i].ssl) 528 if (kTests[i].ssl)
526 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams()); 529 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams());
527 else 530 else
528 EXPECT_EQ(kTests[i].num_streams, socks_proxy_pool->last_num_streams()); 531 EXPECT_EQ(kTests[i].num_streams, socks_proxy_pool->last_num_streams());
529 } 532 }
530 } 533 }
531 534
532 TEST_P(HttpStreamFactoryTest, PreconnectDirectWithExistingSpdySession) { 535 TEST_P(HttpStreamFactoryTest, PreconnectDirectWithExistingSpdySession) {
533 for (size_t i = 0; i < arraysize(kTests); ++i) { 536 for (size_t i = 0; i < arraysize(kTests); ++i) {
(...skipping 10 matching lines...) Expand all
544 ignore_result(CreateFakeSpdySession(session->spdy_session_pool(), key)); 547 ignore_result(CreateFakeSpdySession(session->spdy_session_pool(), key));
545 548
546 CapturePreconnectsTransportSocketPool* transport_conn_pool = 549 CapturePreconnectsTransportSocketPool* transport_conn_pool =
547 new CapturePreconnectsTransportSocketPool( 550 new CapturePreconnectsTransportSocketPool(
548 session_deps.host_resolver.get(), 551 session_deps.host_resolver.get(),
549 session_deps.cert_verifier.get()); 552 session_deps.cert_verifier.get());
550 CapturePreconnectsSSLSocketPool* ssl_conn_pool = 553 CapturePreconnectsSSLSocketPool* ssl_conn_pool =
551 new CapturePreconnectsSSLSocketPool( 554 new CapturePreconnectsSSLSocketPool(
552 session_deps.host_resolver.get(), 555 session_deps.host_resolver.get(),
553 session_deps.cert_verifier.get()); 556 session_deps.cert_verifier.get());
554 MockClientSocketPoolManager* mock_pool_manager = 557 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager(
555 new MockClientSocketPoolManager; 558 new MockClientSocketPoolManager);
556 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); 559 mock_pool_manager->SetTransportSocketPool(transport_conn_pool);
557 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool); 560 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool);
558 peer.SetClientSocketPoolManager(mock_pool_manager); 561 peer.SetClientSocketPoolManager(
562 mock_pool_manager.PassAs<ClientSocketPoolManager>());
559 PreconnectHelper(kTests[i], session.get()); 563 PreconnectHelper(kTests[i], session.get());
560 // We shouldn't be preconnecting if we have an existing session, which is 564 // We shouldn't be preconnecting if we have an existing session, which is
561 // the case for https://www.google.com. 565 // the case for https://www.google.com.
562 if (kTests[i].ssl) 566 if (kTests[i].ssl)
563 EXPECT_EQ(-1, ssl_conn_pool->last_num_streams()); 567 EXPECT_EQ(-1, ssl_conn_pool->last_num_streams());
564 else 568 else
565 EXPECT_EQ(kTests[i].num_streams, 569 EXPECT_EQ(kTests[i].num_streams,
566 transport_conn_pool->last_num_streams()); 570 transport_conn_pool->last_num_streams());
567 } 571 }
568 } 572 }
569 573
570 // Verify that preconnects to unsafe ports are cancelled before they reach 574 // Verify that preconnects to unsafe ports are cancelled before they reach
571 // the SocketPool. 575 // the SocketPool.
572 TEST_P(HttpStreamFactoryTest, PreconnectUnsafePort) { 576 TEST_P(HttpStreamFactoryTest, PreconnectUnsafePort) {
573 ASSERT_FALSE(IsPortAllowedByDefault(7)); 577 ASSERT_FALSE(IsPortAllowedByDefault(7));
574 ASSERT_FALSE(IsPortAllowedByOverride(7)); 578 ASSERT_FALSE(IsPortAllowedByOverride(7));
575 579
576 SpdySessionDependencies session_deps( 580 SpdySessionDependencies session_deps(
577 GetParam(), ProxyService::CreateDirect()); 581 GetParam(), ProxyService::CreateDirect());
578 scoped_refptr<HttpNetworkSession> session( 582 scoped_refptr<HttpNetworkSession> session(
579 SpdySessionDependencies::SpdyCreateSession(&session_deps)); 583 SpdySessionDependencies::SpdyCreateSession(&session_deps));
580 HttpNetworkSessionPeer peer(session); 584 HttpNetworkSessionPeer peer(session);
581 CapturePreconnectsTransportSocketPool* transport_conn_pool = 585 CapturePreconnectsTransportSocketPool* transport_conn_pool =
582 new CapturePreconnectsTransportSocketPool( 586 new CapturePreconnectsTransportSocketPool(
583 session_deps.host_resolver.get(), 587 session_deps.host_resolver.get(),
584 session_deps.cert_verifier.get()); 588 session_deps.cert_verifier.get());
585 MockClientSocketPoolManager* mock_pool_manager = 589 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager(
586 new MockClientSocketPoolManager; 590 new MockClientSocketPoolManager);
587 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); 591 mock_pool_manager->SetTransportSocketPool(transport_conn_pool);
588 peer.SetClientSocketPoolManager(mock_pool_manager); 592 peer.SetClientSocketPoolManager(
593 mock_pool_manager.PassAs<ClientSocketPoolManager>());
589 594
590 PreconnectHelperForURL(1, GURL("http://www.google.com:7"), session.get()); 595 PreconnectHelperForURL(1, GURL("http://www.google.com:7"), session.get());
591 596
592 EXPECT_EQ(-1, transport_conn_pool->last_num_streams()); 597 EXPECT_EQ(-1, transport_conn_pool->last_num_streams());
593 } 598 }
594 599
595 TEST_P(HttpStreamFactoryTest, JobNotifiesProxy) { 600 TEST_P(HttpStreamFactoryTest, JobNotifiesProxy) {
596 const char* kProxyString = "PROXY bad:99; PROXY maybe:80; DIRECT"; 601 const char* kProxyString = "PROXY bad:99; PROXY maybe:80; DIRECT";
597 SpdySessionDependencies session_deps( 602 SpdySessionDependencies session_deps(
598 GetParam(), ProxyService::CreateFixedFromPacResult(kProxyString)); 603 GetParam(), ProxyService::CreateFixedFromPacResult(kProxyString));
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
1265 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); 1270 EXPECT_TRUE(waiter.used_proxy_info().is_direct());
1266 1271
1267 // Make sure there is no orphaned job. it is already canceled. 1272 // Make sure there is no orphaned job. it is already canceled.
1268 ASSERT_EQ(0u, static_cast<HttpStreamFactoryImpl*>( 1273 ASSERT_EQ(0u, static_cast<HttpStreamFactoryImpl*>(
1269 session->websocket_handshake_stream_factory())->num_orphaned_jobs()); 1274 session->websocket_handshake_stream_factory())->num_orphaned_jobs());
1270 } 1275 }
1271 1276
1272 } // namespace 1277 } // namespace
1273 1278
1274 } // namespace net 1279 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_transaction_unittest.cc ('k') | net/http/http_transaction.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698