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

Side by Side Diff: net/socket/ssl_client_socket_pool_unittest.cc

Issue 11428150: LoadTiming implementation in net, part 1. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Fix a header or two Created 7 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 | Annotate | Revision Log
« no previous file with comments | « net/socket/ssl_client_socket_pool.cc ('k') | net/socket/transport_client_socket_pool.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_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"
11 #include "base/utf_string_conversions.h" 11 #include "base/utf_string_conversions.h"
12 #include "net/base/auth.h" 12 #include "net/base/auth.h"
13 #include "net/base/cert_verifier.h" 13 #include "net/base/cert_verifier.h"
14 #include "net/base/load_timing_info.h"
14 #include "net/base/mock_host_resolver.h" 15 #include "net/base/mock_host_resolver.h"
15 #include "net/base/net_errors.h" 16 #include "net/base/net_errors.h"
16 #include "net/base/ssl_config_service_defaults.h" 17 #include "net/base/ssl_config_service_defaults.h"
17 #include "net/base/test_certificate_data.h" 18 #include "net/base/test_certificate_data.h"
18 #include "net/base/test_completion_callback.h" 19 #include "net/base/test_completion_callback.h"
19 #include "net/http/http_auth_handler_factory.h" 20 #include "net/http/http_auth_handler_factory.h"
20 #include "net/http/http_network_session.h" 21 #include "net/http/http_network_session.h"
21 #include "net/http/http_request_headers.h" 22 #include "net/http/http_request_headers.h"
22 #include "net/http/http_response_headers.h" 23 #include "net/http/http_response_headers.h"
23 #include "net/http/http_server_properties_impl.h" 24 #include "net/http/http_server_properties_impl.h"
24 #include "net/proxy/proxy_service.h" 25 #include "net/proxy/proxy_service.h"
25 #include "net/socket/client_socket_handle.h" 26 #include "net/socket/client_socket_handle.h"
26 #include "net/socket/client_socket_pool_histograms.h" 27 #include "net/socket/client_socket_pool_histograms.h"
27 #include "net/socket/socket_test_util.h" 28 #include "net/socket/socket_test_util.h"
28 #include "net/spdy/spdy_session.h" 29 #include "net/spdy/spdy_session.h"
29 #include "net/spdy/spdy_session_pool.h" 30 #include "net/spdy/spdy_session_pool.h"
30 #include "net/spdy/spdy_test_util_spdy2.h" 31 #include "net/spdy/spdy_test_util_spdy2.h"
31 #include "testing/gtest/include/gtest/gtest.h" 32 #include "testing/gtest/include/gtest/gtest.h"
32 33
33 using namespace net::test_spdy2; 34 using namespace net::test_spdy2;
34 35
35 namespace net { 36 namespace net {
36 37
37 namespace { 38 namespace {
38 39
39 const int kMaxSockets = 32; 40 const int kMaxSockets = 32;
40 const int kMaxSocketsPerGroup = 6; 41 const int kMaxSocketsPerGroup = 6;
41 42
43 // Make sure |handle|'s load times are set correctly. DNS and connect start
44 // times comes from mock client sockets in these tests, so primarily serves to
45 // check those times were copied, and ssl times / connect end are set correctly.
46 void TestLoadTimingInfo(const ClientSocketHandle& handle) {
47 LoadTimingInfo load_timing_info;
48 EXPECT_TRUE(handle.GetLoadTimingInfo(false, &load_timing_info));
49
50 EXPECT_FALSE(load_timing_info.socket_reused);
51 // None of these tests use a NetLog.
52 EXPECT_EQ(NetLog::Source::kInvalidId, load_timing_info.socket_log_id);
53
54 EXPECT_FALSE(load_timing_info.connect_timing.dns_start.is_null());
55 EXPECT_LE(load_timing_info.connect_timing.dns_start,
56 load_timing_info.connect_timing.dns_end);
57 EXPECT_LE(load_timing_info.connect_timing.dns_end,
58 load_timing_info.connect_timing.connect_start);
59 EXPECT_LE(load_timing_info.connect_timing.connect_start,
60 load_timing_info.connect_timing.ssl_start);
61 EXPECT_LE(load_timing_info.connect_timing.ssl_start,
62 load_timing_info.connect_timing.ssl_end);
63 EXPECT_LE(load_timing_info.connect_timing.ssl_end,
64 load_timing_info.connect_timing.connect_end);
65
66 // None of these should be set by the socket handle.
67 EXPECT_TRUE(load_timing_info.proxy_resolve_start.is_null());
68 EXPECT_TRUE(load_timing_info.proxy_resolve_end.is_null());
69 EXPECT_TRUE(load_timing_info.send_start.is_null());
70 EXPECT_TRUE(load_timing_info.send_end.is_null());
71 EXPECT_TRUE(load_timing_info.receive_headers_end.is_null());
72 }
73
74 // Just like TestLoadTimingInfo, except DNS times are expected to be null, for
75 // tests over proxies that do DNS lookups themselves.
76 void TestLoadTimingInfoNoDns(const ClientSocketHandle& handle) {
77 LoadTimingInfo load_timing_info;
78 EXPECT_TRUE(handle.GetLoadTimingInfo(false, &load_timing_info));
79
80 // None of these tests use a NetLog.
81 EXPECT_EQ(NetLog::Source::kInvalidId, load_timing_info.socket_log_id);
82
83 EXPECT_FALSE(load_timing_info.socket_reused);
84
85 EXPECT_TRUE(load_timing_info.connect_timing.dns_start.is_null());
86 EXPECT_TRUE(load_timing_info.connect_timing.dns_end.is_null());
87 EXPECT_FALSE(load_timing_info.connect_timing.connect_start.is_null());
88 EXPECT_LE(load_timing_info.connect_timing.connect_start,
89 load_timing_info.connect_timing.ssl_start);
90 EXPECT_LE(load_timing_info.connect_timing.ssl_start,
91 load_timing_info.connect_timing.ssl_end);
92 EXPECT_LE(load_timing_info.connect_timing.ssl_end,
93 load_timing_info.connect_timing.connect_end);
94
95 // None of these should be set by the socket handle.
96 EXPECT_TRUE(load_timing_info.proxy_resolve_start.is_null());
97 EXPECT_TRUE(load_timing_info.proxy_resolve_end.is_null());
98 EXPECT_TRUE(load_timing_info.send_start.is_null());
99 EXPECT_TRUE(load_timing_info.send_end.is_null());
100 EXPECT_TRUE(load_timing_info.receive_headers_end.is_null());
101 }
102
42 class SSLClientSocketPoolTest : public testing::Test { 103 class SSLClientSocketPoolTest : public testing::Test {
43 protected: 104 protected:
44 SSLClientSocketPoolTest() 105 SSLClientSocketPoolTest()
45 : proxy_service_(ProxyService::CreateDirect()), 106 : proxy_service_(ProxyService::CreateDirect()),
46 ssl_config_service_(new SSLConfigServiceDefaults), 107 ssl_config_service_(new SSLConfigServiceDefaults),
47 http_auth_handler_factory_(HttpAuthHandlerFactory::CreateDefault( 108 http_auth_handler_factory_(HttpAuthHandlerFactory::CreateDefault(
48 &host_resolver_)), 109 &host_resolver_)),
49 session_(CreateNetworkSession()), 110 session_(CreateNetworkSession()),
50 direct_transport_socket_params_(new TransportSocketParams( 111 direct_transport_socket_params_(new TransportSocketParams(
51 HostPortPair("host", 443), MEDIUM, false, false, 112 HostPortPair("host", 443), MEDIUM, false, false,
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 290 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
230 false); 291 false);
231 292
232 ClientSocketHandle handle; 293 ClientSocketHandle handle;
233 TestCompletionCallback callback; 294 TestCompletionCallback callback;
234 int rv = handle.Init( 295 int rv = handle.Init(
235 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 296 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
236 EXPECT_EQ(OK, rv); 297 EXPECT_EQ(OK, rv);
237 EXPECT_TRUE(handle.is_initialized()); 298 EXPECT_TRUE(handle.is_initialized());
238 EXPECT_TRUE(handle.socket()); 299 EXPECT_TRUE(handle.socket());
300 TestLoadTimingInfo(handle);
239 } 301 }
240 302
241 TEST_F(SSLClientSocketPoolTest, BasicDirectAsync) { 303 TEST_F(SSLClientSocketPoolTest, BasicDirectAsync) {
242 StaticSocketDataProvider data; 304 StaticSocketDataProvider data;
243 socket_factory_.AddSocketDataProvider(&data); 305 socket_factory_.AddSocketDataProvider(&data);
244 SSLSocketDataProvider ssl(ASYNC, OK); 306 SSLSocketDataProvider ssl(ASYNC, OK);
245 socket_factory_.AddSSLSocketDataProvider(&ssl); 307 socket_factory_.AddSSLSocketDataProvider(&ssl);
246 308
247 CreatePool(true /* tcp pool */, false, false); 309 CreatePool(true /* tcp pool */, false, false);
248 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 310 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
249 false); 311 false);
250 312
251 ClientSocketHandle handle; 313 ClientSocketHandle handle;
252 TestCompletionCallback callback; 314 TestCompletionCallback callback;
253 int rv = handle.Init( 315 int rv = handle.Init(
254 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 316 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
255 EXPECT_EQ(ERR_IO_PENDING, rv); 317 EXPECT_EQ(ERR_IO_PENDING, rv);
256 EXPECT_FALSE(handle.is_initialized()); 318 EXPECT_FALSE(handle.is_initialized());
257 EXPECT_FALSE(handle.socket()); 319 EXPECT_FALSE(handle.socket());
258 320
259 EXPECT_EQ(OK, callback.WaitForResult()); 321 EXPECT_EQ(OK, callback.WaitForResult());
260 EXPECT_TRUE(handle.is_initialized()); 322 EXPECT_TRUE(handle.is_initialized());
261 EXPECT_TRUE(handle.socket()); 323 EXPECT_TRUE(handle.socket());
324 TestLoadTimingInfo(handle);
262 } 325 }
263 326
264 TEST_F(SSLClientSocketPoolTest, DirectCertError) { 327 TEST_F(SSLClientSocketPoolTest, DirectCertError) {
265 StaticSocketDataProvider data; 328 StaticSocketDataProvider data;
266 socket_factory_.AddSocketDataProvider(&data); 329 socket_factory_.AddSocketDataProvider(&data);
267 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID); 330 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID);
268 socket_factory_.AddSSLSocketDataProvider(&ssl); 331 socket_factory_.AddSSLSocketDataProvider(&ssl);
269 332
270 CreatePool(true /* tcp pool */, false, false); 333 CreatePool(true /* tcp pool */, false, false);
271 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 334 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
272 false); 335 false);
273 336
274 ClientSocketHandle handle; 337 ClientSocketHandle handle;
275 TestCompletionCallback callback; 338 TestCompletionCallback callback;
276 int rv = handle.Init( 339 int rv = handle.Init(
277 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 340 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
278 EXPECT_EQ(ERR_IO_PENDING, rv); 341 EXPECT_EQ(ERR_IO_PENDING, rv);
279 EXPECT_FALSE(handle.is_initialized()); 342 EXPECT_FALSE(handle.is_initialized());
280 EXPECT_FALSE(handle.socket()); 343 EXPECT_FALSE(handle.socket());
281 344
282 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, callback.WaitForResult()); 345 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, callback.WaitForResult());
283 EXPECT_TRUE(handle.is_initialized()); 346 EXPECT_TRUE(handle.is_initialized());
284 EXPECT_TRUE(handle.socket()); 347 EXPECT_TRUE(handle.socket());
348 TestLoadTimingInfo(handle);
285 } 349 }
286 350
287 TEST_F(SSLClientSocketPoolTest, DirectSSLError) { 351 TEST_F(SSLClientSocketPoolTest, DirectSSLError) {
288 StaticSocketDataProvider data; 352 StaticSocketDataProvider data;
289 socket_factory_.AddSocketDataProvider(&data); 353 socket_factory_.AddSocketDataProvider(&data);
290 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR); 354 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR);
291 socket_factory_.AddSSLSocketDataProvider(&ssl); 355 socket_factory_.AddSSLSocketDataProvider(&ssl);
292 356
293 CreatePool(true /* tcp pool */, false, false); 357 CreatePool(true /* tcp pool */, false, false);
294 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 358 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
(...skipping 28 matching lines...) Expand all
323 TestCompletionCallback callback; 387 TestCompletionCallback callback;
324 int rv = handle.Init( 388 int rv = handle.Init(
325 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 389 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
326 EXPECT_EQ(ERR_IO_PENDING, rv); 390 EXPECT_EQ(ERR_IO_PENDING, rv);
327 EXPECT_FALSE(handle.is_initialized()); 391 EXPECT_FALSE(handle.is_initialized());
328 EXPECT_FALSE(handle.socket()); 392 EXPECT_FALSE(handle.socket());
329 393
330 EXPECT_EQ(OK, callback.WaitForResult()); 394 EXPECT_EQ(OK, callback.WaitForResult());
331 EXPECT_TRUE(handle.is_initialized()); 395 EXPECT_TRUE(handle.is_initialized());
332 EXPECT_TRUE(handle.socket()); 396 EXPECT_TRUE(handle.socket());
397 TestLoadTimingInfo(handle);
333 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); 398 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket());
334 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); 399 EXPECT_TRUE(ssl_socket->WasNpnNegotiated());
335 } 400 }
336 401
337 TEST_F(SSLClientSocketPoolTest, DirectNoSPDY) { 402 TEST_F(SSLClientSocketPoolTest, DirectNoSPDY) {
338 StaticSocketDataProvider data; 403 StaticSocketDataProvider data;
339 socket_factory_.AddSocketDataProvider(&data); 404 socket_factory_.AddSocketDataProvider(&data);
340 SSLSocketDataProvider ssl(ASYNC, OK); 405 SSLSocketDataProvider ssl(ASYNC, OK);
341 ssl.SetNextProto(kProtoHTTP11); 406 ssl.SetNextProto(kProtoHTTP11);
342 socket_factory_.AddSSLSocketDataProvider(&ssl); 407 socket_factory_.AddSSLSocketDataProvider(&ssl);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 TestCompletionCallback callback; 439 TestCompletionCallback callback;
375 int rv = handle.Init( 440 int rv = handle.Init(
376 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 441 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
377 EXPECT_EQ(ERR_IO_PENDING, rv); 442 EXPECT_EQ(ERR_IO_PENDING, rv);
378 EXPECT_FALSE(handle.is_initialized()); 443 EXPECT_FALSE(handle.is_initialized());
379 EXPECT_FALSE(handle.socket()); 444 EXPECT_FALSE(handle.socket());
380 445
381 EXPECT_EQ(OK, callback.WaitForResult()); 446 EXPECT_EQ(OK, callback.WaitForResult());
382 EXPECT_TRUE(handle.is_initialized()); 447 EXPECT_TRUE(handle.is_initialized());
383 EXPECT_TRUE(handle.socket()); 448 EXPECT_TRUE(handle.socket());
449 TestLoadTimingInfo(handle);
384 450
385 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); 451 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket());
386 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); 452 EXPECT_TRUE(ssl_socket->WasNpnNegotiated());
387 std::string proto; 453 std::string proto;
388 std::string server_protos; 454 std::string server_protos;
389 ssl_socket->GetNextProto(&proto, &server_protos); 455 ssl_socket->GetNextProto(&proto, &server_protos);
390 EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto), 456 EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto),
391 kProtoSPDY2); 457 kProtoSPDY2);
392 } 458 }
393 459
(...skipping 12 matching lines...) Expand all
406 TestCompletionCallback callback; 472 TestCompletionCallback callback;
407 int rv = handle.Init( 473 int rv = handle.Init(
408 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 474 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
409 EXPECT_EQ(ERR_IO_PENDING, rv); 475 EXPECT_EQ(ERR_IO_PENDING, rv);
410 EXPECT_FALSE(handle.is_initialized()); 476 EXPECT_FALSE(handle.is_initialized());
411 EXPECT_FALSE(handle.socket()); 477 EXPECT_FALSE(handle.socket());
412 478
413 EXPECT_EQ(OK, callback.WaitForResult()); 479 EXPECT_EQ(OK, callback.WaitForResult());
414 EXPECT_TRUE(handle.is_initialized()); 480 EXPECT_TRUE(handle.is_initialized());
415 EXPECT_TRUE(handle.socket()); 481 EXPECT_TRUE(handle.socket());
482 TestLoadTimingInfo(handle);
416 483
417 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); 484 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket());
418 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); 485 EXPECT_TRUE(ssl_socket->WasNpnNegotiated());
419 std::string proto; 486 std::string proto;
420 std::string server_protos; 487 std::string server_protos;
421 ssl_socket->GetNextProto(&proto, &server_protos); 488 ssl_socket->GetNextProto(&proto, &server_protos);
422 EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto), 489 EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto),
423 kProtoSPDY2); 490 kProtoSPDY2);
424 } 491 }
425 492
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, 543 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5,
477 false); 544 false);
478 545
479 ClientSocketHandle handle; 546 ClientSocketHandle handle;
480 TestCompletionCallback callback; 547 TestCompletionCallback callback;
481 int rv = handle.Init( 548 int rv = handle.Init(
482 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 549 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
483 EXPECT_EQ(OK, rv); 550 EXPECT_EQ(OK, rv);
484 EXPECT_TRUE(handle.is_initialized()); 551 EXPECT_TRUE(handle.is_initialized());
485 EXPECT_TRUE(handle.socket()); 552 EXPECT_TRUE(handle.socket());
553 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here
554 // don't go through the real logic, unlike in the HTTP proxy tests.
555 TestLoadTimingInfo(handle);
486 } 556 }
487 557
488 TEST_F(SSLClientSocketPoolTest, SOCKSBasicAsync) { 558 TEST_F(SSLClientSocketPoolTest, SOCKSBasicAsync) {
489 StaticSocketDataProvider data; 559 StaticSocketDataProvider data;
490 socket_factory_.AddSocketDataProvider(&data); 560 socket_factory_.AddSocketDataProvider(&data);
491 SSLSocketDataProvider ssl(ASYNC, OK); 561 SSLSocketDataProvider ssl(ASYNC, OK);
492 socket_factory_.AddSSLSocketDataProvider(&ssl); 562 socket_factory_.AddSSLSocketDataProvider(&ssl);
493 563
494 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 564 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
495 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, 565 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5,
496 false); 566 false);
497 567
498 ClientSocketHandle handle; 568 ClientSocketHandle handle;
499 TestCompletionCallback callback; 569 TestCompletionCallback callback;
500 int rv = handle.Init( 570 int rv = handle.Init(
501 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 571 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
502 EXPECT_EQ(ERR_IO_PENDING, rv); 572 EXPECT_EQ(ERR_IO_PENDING, rv);
503 EXPECT_FALSE(handle.is_initialized()); 573 EXPECT_FALSE(handle.is_initialized());
504 EXPECT_FALSE(handle.socket()); 574 EXPECT_FALSE(handle.socket());
505 575
506 EXPECT_EQ(OK, callback.WaitForResult()); 576 EXPECT_EQ(OK, callback.WaitForResult());
507 EXPECT_TRUE(handle.is_initialized()); 577 EXPECT_TRUE(handle.is_initialized());
508 EXPECT_TRUE(handle.socket()); 578 EXPECT_TRUE(handle.socket());
579 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here
580 // don't go through the real logic, unlike in the HTTP proxy tests.
581 TestLoadTimingInfo(handle);
509 } 582 }
510 583
511 TEST_F(SSLClientSocketPoolTest, HttpProxyFail) { 584 TEST_F(SSLClientSocketPoolTest, HttpProxyFail) {
512 StaticSocketDataProvider data; 585 StaticSocketDataProvider data;
513 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); 586 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED));
514 socket_factory_.AddSocketDataProvider(&data); 587 socket_factory_.AddSocketDataProvider(&data);
515 588
516 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 589 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
517 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 590 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
518 false); 591 false);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 646 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
574 false); 647 false);
575 648
576 ClientSocketHandle handle; 649 ClientSocketHandle handle;
577 TestCompletionCallback callback; 650 TestCompletionCallback callback;
578 int rv = handle.Init( 651 int rv = handle.Init(
579 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 652 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
580 EXPECT_EQ(OK, rv); 653 EXPECT_EQ(OK, rv);
581 EXPECT_TRUE(handle.is_initialized()); 654 EXPECT_TRUE(handle.is_initialized());
582 EXPECT_TRUE(handle.socket()); 655 EXPECT_TRUE(handle.socket());
656 TestLoadTimingInfoNoDns(handle);
583 } 657 }
584 658
585 TEST_F(SSLClientSocketPoolTest, HttpProxyBasicAsync) { 659 TEST_F(SSLClientSocketPoolTest, HttpProxyBasicAsync) {
586 MockWrite writes[] = { 660 MockWrite writes[] = {
587 MockWrite("CONNECT host:80 HTTP/1.1\r\n" 661 MockWrite("CONNECT host:80 HTTP/1.1\r\n"
588 "Host: host\r\n" 662 "Host: host\r\n"
589 "Proxy-Connection: keep-alive\r\n" 663 "Proxy-Connection: keep-alive\r\n"
590 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 664 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
591 }; 665 };
592 MockRead reads[] = { 666 MockRead reads[] = {
(...skipping 14 matching lines...) Expand all
607 TestCompletionCallback callback; 681 TestCompletionCallback callback;
608 int rv = handle.Init( 682 int rv = handle.Init(
609 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 683 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
610 EXPECT_EQ(ERR_IO_PENDING, rv); 684 EXPECT_EQ(ERR_IO_PENDING, rv);
611 EXPECT_FALSE(handle.is_initialized()); 685 EXPECT_FALSE(handle.is_initialized());
612 EXPECT_FALSE(handle.socket()); 686 EXPECT_FALSE(handle.socket());
613 687
614 EXPECT_EQ(OK, callback.WaitForResult()); 688 EXPECT_EQ(OK, callback.WaitForResult());
615 EXPECT_TRUE(handle.is_initialized()); 689 EXPECT_TRUE(handle.is_initialized());
616 EXPECT_TRUE(handle.socket()); 690 EXPECT_TRUE(handle.socket());
691 TestLoadTimingInfoNoDns(handle);
617 } 692 }
618 693
619 TEST_F(SSLClientSocketPoolTest, NeedProxyAuth) { 694 TEST_F(SSLClientSocketPoolTest, NeedProxyAuth) {
620 MockWrite writes[] = { 695 MockWrite writes[] = {
621 MockWrite("CONNECT host:80 HTTP/1.1\r\n" 696 MockWrite("CONNECT host:80 HTTP/1.1\r\n"
622 "Host: host\r\n" 697 "Host: host\r\n"
623 "Proxy-Connection: keep-alive\r\n\r\n"), 698 "Proxy-Connection: keep-alive\r\n\r\n"),
624 }; 699 };
625 MockRead reads[] = { 700 MockRead reads[] = {
626 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 701 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 ssl.channel_id_sent = true; 910 ssl.channel_id_sent = true;
836 ssl.SetNextProto(kProtoSPDY2); 911 ssl.SetNextProto(kProtoSPDY2);
837 TestIPPoolingDisabled(&ssl); 912 TestIPPoolingDisabled(&ssl);
838 } 913 }
839 914
840 // It would be nice to also test the timeouts in SSLClientSocketPool. 915 // It would be nice to also test the timeouts in SSLClientSocketPool.
841 916
842 } // namespace 917 } // namespace
843 918
844 } // namespace net 919 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/ssl_client_socket_pool.cc ('k') | net/socket/transport_client_socket_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698