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

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: Try upload again Created 8 years 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
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.dns_start.is_null());
55 EXPECT_LE(load_timing_info.dns_start, load_timing_info.dns_end);
56 EXPECT_LE(load_timing_info.dns_end, load_timing_info.connect_start);
57 EXPECT_LE(load_timing_info.connect_start, load_timing_info.ssl_start);
58 EXPECT_LE(load_timing_info.ssl_start, load_timing_info.ssl_end);
59 EXPECT_LE(load_timing_info.ssl_end, load_timing_info.connect_end);
60
61 // None of these should be set by the socket handle.
62 EXPECT_TRUE(load_timing_info.proxy_start.is_null());
63 EXPECT_TRUE(load_timing_info.proxy_end.is_null());
64 EXPECT_TRUE(load_timing_info.send_start.is_null());
65 EXPECT_TRUE(load_timing_info.send_end.is_null());
66 EXPECT_TRUE(load_timing_info.receive_headers_end.is_null());
67 }
68
69 // Just like TestLoadTimingInfo, except DNS times are expected to be NULL, for
eroman 2012/12/14 04:08:35 I don't like calling times "NULL". I think it woul
mmenke 2012/12/14 13:36:12 Done (Modified other comments as well).
70 // tests over proxy types that do DNS lookups themselves.
71 void TestLoadTimingInfoNoDns(const ClientSocketHandle& handle) {
72 LoadTimingInfo load_timing_info;
73 EXPECT_TRUE(handle.GetLoadTimingInfo(false, &load_timing_info));
74
75 // None of these tests use a NetLog.
76 EXPECT_EQ(NetLog::Source::kInvalidId, load_timing_info.socket_log_id);
77
78 EXPECT_FALSE(load_timing_info.socket_reused);
79
80 EXPECT_TRUE(load_timing_info.dns_start.is_null());
81 EXPECT_TRUE(load_timing_info.dns_end.is_null());
82 EXPECT_FALSE(load_timing_info.connect_start.is_null());
83 EXPECT_LE(load_timing_info.connect_start, load_timing_info.ssl_start);
84 EXPECT_LE(load_timing_info.ssl_start, load_timing_info.ssl_end);
85 EXPECT_LE(load_timing_info.ssl_end, load_timing_info.connect_end);
86
87 // None of these should be set by the socket handle.
88 EXPECT_TRUE(load_timing_info.proxy_start.is_null());
89 EXPECT_TRUE(load_timing_info.proxy_end.is_null());
90 EXPECT_TRUE(load_timing_info.send_start.is_null());
91 EXPECT_TRUE(load_timing_info.send_end.is_null());
92 EXPECT_TRUE(load_timing_info.receive_headers_end.is_null());
93 }
94
42 class SSLClientSocketPoolTest : public testing::Test { 95 class SSLClientSocketPoolTest : public testing::Test {
43 protected: 96 protected:
44 SSLClientSocketPoolTest() 97 SSLClientSocketPoolTest()
45 : proxy_service_(ProxyService::CreateDirect()), 98 : proxy_service_(ProxyService::CreateDirect()),
46 ssl_config_service_(new SSLConfigServiceDefaults), 99 ssl_config_service_(new SSLConfigServiceDefaults),
47 http_auth_handler_factory_(HttpAuthHandlerFactory::CreateDefault( 100 http_auth_handler_factory_(HttpAuthHandlerFactory::CreateDefault(
48 &host_resolver_)), 101 &host_resolver_)),
49 session_(CreateNetworkSession()), 102 session_(CreateNetworkSession()),
50 direct_transport_socket_params_(new TransportSocketParams( 103 direct_transport_socket_params_(new TransportSocketParams(
51 HostPortPair("host", 443), MEDIUM, false, false, 104 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, 282 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
230 false); 283 false);
231 284
232 ClientSocketHandle handle; 285 ClientSocketHandle handle;
233 TestCompletionCallback callback; 286 TestCompletionCallback callback;
234 int rv = handle.Init( 287 int rv = handle.Init(
235 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 288 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
236 EXPECT_EQ(OK, rv); 289 EXPECT_EQ(OK, rv);
237 EXPECT_TRUE(handle.is_initialized()); 290 EXPECT_TRUE(handle.is_initialized());
238 EXPECT_TRUE(handle.socket()); 291 EXPECT_TRUE(handle.socket());
292 TestLoadTimingInfo(handle);
239 } 293 }
240 294
241 TEST_F(SSLClientSocketPoolTest, BasicDirectAsync) { 295 TEST_F(SSLClientSocketPoolTest, BasicDirectAsync) {
242 StaticSocketDataProvider data; 296 StaticSocketDataProvider data;
243 socket_factory_.AddSocketDataProvider(&data); 297 socket_factory_.AddSocketDataProvider(&data);
244 SSLSocketDataProvider ssl(ASYNC, OK); 298 SSLSocketDataProvider ssl(ASYNC, OK);
245 socket_factory_.AddSSLSocketDataProvider(&ssl); 299 socket_factory_.AddSSLSocketDataProvider(&ssl);
246 300
247 CreatePool(true /* tcp pool */, false, false); 301 CreatePool(true /* tcp pool */, false, false);
248 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 302 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
249 false); 303 false);
250 304
251 ClientSocketHandle handle; 305 ClientSocketHandle handle;
252 TestCompletionCallback callback; 306 TestCompletionCallback callback;
253 int rv = handle.Init( 307 int rv = handle.Init(
254 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 308 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
255 EXPECT_EQ(ERR_IO_PENDING, rv); 309 EXPECT_EQ(ERR_IO_PENDING, rv);
256 EXPECT_FALSE(handle.is_initialized()); 310 EXPECT_FALSE(handle.is_initialized());
257 EXPECT_FALSE(handle.socket()); 311 EXPECT_FALSE(handle.socket());
258 312
259 EXPECT_EQ(OK, callback.WaitForResult()); 313 EXPECT_EQ(OK, callback.WaitForResult());
260 EXPECT_TRUE(handle.is_initialized()); 314 EXPECT_TRUE(handle.is_initialized());
261 EXPECT_TRUE(handle.socket()); 315 EXPECT_TRUE(handle.socket());
316 TestLoadTimingInfo(handle);
262 } 317 }
263 318
264 TEST_F(SSLClientSocketPoolTest, DirectCertError) { 319 TEST_F(SSLClientSocketPoolTest, DirectCertError) {
265 StaticSocketDataProvider data; 320 StaticSocketDataProvider data;
266 socket_factory_.AddSocketDataProvider(&data); 321 socket_factory_.AddSocketDataProvider(&data);
267 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID); 322 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID);
268 socket_factory_.AddSSLSocketDataProvider(&ssl); 323 socket_factory_.AddSSLSocketDataProvider(&ssl);
269 324
270 CreatePool(true /* tcp pool */, false, false); 325 CreatePool(true /* tcp pool */, false, false);
271 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 326 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
272 false); 327 false);
273 328
274 ClientSocketHandle handle; 329 ClientSocketHandle handle;
275 TestCompletionCallback callback; 330 TestCompletionCallback callback;
276 int rv = handle.Init( 331 int rv = handle.Init(
277 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 332 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
278 EXPECT_EQ(ERR_IO_PENDING, rv); 333 EXPECT_EQ(ERR_IO_PENDING, rv);
279 EXPECT_FALSE(handle.is_initialized()); 334 EXPECT_FALSE(handle.is_initialized());
280 EXPECT_FALSE(handle.socket()); 335 EXPECT_FALSE(handle.socket());
281 336
282 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, callback.WaitForResult()); 337 EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, callback.WaitForResult());
283 EXPECT_TRUE(handle.is_initialized()); 338 EXPECT_TRUE(handle.is_initialized());
284 EXPECT_TRUE(handle.socket()); 339 EXPECT_TRUE(handle.socket());
340 TestLoadTimingInfo(handle);
285 } 341 }
286 342
287 TEST_F(SSLClientSocketPoolTest, DirectSSLError) { 343 TEST_F(SSLClientSocketPoolTest, DirectSSLError) {
288 StaticSocketDataProvider data; 344 StaticSocketDataProvider data;
289 socket_factory_.AddSocketDataProvider(&data); 345 socket_factory_.AddSocketDataProvider(&data);
290 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR); 346 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR);
291 socket_factory_.AddSSLSocketDataProvider(&ssl); 347 socket_factory_.AddSSLSocketDataProvider(&ssl);
292 348
293 CreatePool(true /* tcp pool */, false, false); 349 CreatePool(true /* tcp pool */, false, false);
294 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 350 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
(...skipping 28 matching lines...) Expand all
323 TestCompletionCallback callback; 379 TestCompletionCallback callback;
324 int rv = handle.Init( 380 int rv = handle.Init(
325 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 381 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
326 EXPECT_EQ(ERR_IO_PENDING, rv); 382 EXPECT_EQ(ERR_IO_PENDING, rv);
327 EXPECT_FALSE(handle.is_initialized()); 383 EXPECT_FALSE(handle.is_initialized());
328 EXPECT_FALSE(handle.socket()); 384 EXPECT_FALSE(handle.socket());
329 385
330 EXPECT_EQ(OK, callback.WaitForResult()); 386 EXPECT_EQ(OK, callback.WaitForResult());
331 EXPECT_TRUE(handle.is_initialized()); 387 EXPECT_TRUE(handle.is_initialized());
332 EXPECT_TRUE(handle.socket()); 388 EXPECT_TRUE(handle.socket());
389 TestLoadTimingInfo(handle);
333 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); 390 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket());
334 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); 391 EXPECT_TRUE(ssl_socket->WasNpnNegotiated());
335 } 392 }
336 393
337 TEST_F(SSLClientSocketPoolTest, DirectNoSPDY) { 394 TEST_F(SSLClientSocketPoolTest, DirectNoSPDY) {
338 StaticSocketDataProvider data; 395 StaticSocketDataProvider data;
339 socket_factory_.AddSocketDataProvider(&data); 396 socket_factory_.AddSocketDataProvider(&data);
340 SSLSocketDataProvider ssl(ASYNC, OK); 397 SSLSocketDataProvider ssl(ASYNC, OK);
341 ssl.SetNextProto(kProtoHTTP11); 398 ssl.SetNextProto(kProtoHTTP11);
342 socket_factory_.AddSSLSocketDataProvider(&ssl); 399 socket_factory_.AddSSLSocketDataProvider(&ssl);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 TestCompletionCallback callback; 431 TestCompletionCallback callback;
375 int rv = handle.Init( 432 int rv = handle.Init(
376 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 433 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
377 EXPECT_EQ(ERR_IO_PENDING, rv); 434 EXPECT_EQ(ERR_IO_PENDING, rv);
378 EXPECT_FALSE(handle.is_initialized()); 435 EXPECT_FALSE(handle.is_initialized());
379 EXPECT_FALSE(handle.socket()); 436 EXPECT_FALSE(handle.socket());
380 437
381 EXPECT_EQ(OK, callback.WaitForResult()); 438 EXPECT_EQ(OK, callback.WaitForResult());
382 EXPECT_TRUE(handle.is_initialized()); 439 EXPECT_TRUE(handle.is_initialized());
383 EXPECT_TRUE(handle.socket()); 440 EXPECT_TRUE(handle.socket());
441 TestLoadTimingInfo(handle);
384 442
385 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); 443 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket());
386 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); 444 EXPECT_TRUE(ssl_socket->WasNpnNegotiated());
387 std::string proto; 445 std::string proto;
388 std::string server_protos; 446 std::string server_protos;
389 ssl_socket->GetNextProto(&proto, &server_protos); 447 ssl_socket->GetNextProto(&proto, &server_protos);
390 EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto), 448 EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto),
391 kProtoSPDY2); 449 kProtoSPDY2);
392 } 450 }
393 451
(...skipping 12 matching lines...) Expand all
406 TestCompletionCallback callback; 464 TestCompletionCallback callback;
407 int rv = handle.Init( 465 int rv = handle.Init(
408 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 466 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
409 EXPECT_EQ(ERR_IO_PENDING, rv); 467 EXPECT_EQ(ERR_IO_PENDING, rv);
410 EXPECT_FALSE(handle.is_initialized()); 468 EXPECT_FALSE(handle.is_initialized());
411 EXPECT_FALSE(handle.socket()); 469 EXPECT_FALSE(handle.socket());
412 470
413 EXPECT_EQ(OK, callback.WaitForResult()); 471 EXPECT_EQ(OK, callback.WaitForResult());
414 EXPECT_TRUE(handle.is_initialized()); 472 EXPECT_TRUE(handle.is_initialized());
415 EXPECT_TRUE(handle.socket()); 473 EXPECT_TRUE(handle.socket());
474 TestLoadTimingInfo(handle);
416 475
417 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); 476 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket());
418 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); 477 EXPECT_TRUE(ssl_socket->WasNpnNegotiated());
419 std::string proto; 478 std::string proto;
420 std::string server_protos; 479 std::string server_protos;
421 ssl_socket->GetNextProto(&proto, &server_protos); 480 ssl_socket->GetNextProto(&proto, &server_protos);
422 EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto), 481 EXPECT_EQ(SSLClientSocket::NextProtoFromString(proto),
423 kProtoSPDY2); 482 kProtoSPDY2);
424 } 483 }
425 484
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, 535 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5,
477 false); 536 false);
478 537
479 ClientSocketHandle handle; 538 ClientSocketHandle handle;
480 TestCompletionCallback callback; 539 TestCompletionCallback callback;
481 int rv = handle.Init( 540 int rv = handle.Init(
482 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 541 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
483 EXPECT_EQ(OK, rv); 542 EXPECT_EQ(OK, rv);
484 EXPECT_TRUE(handle.is_initialized()); 543 EXPECT_TRUE(handle.is_initialized());
485 EXPECT_TRUE(handle.socket()); 544 EXPECT_TRUE(handle.socket());
545 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here
546 // don't go through the real logic, unlike in the HTTP proxy tests.
547 TestLoadTimingInfo(handle);
486 } 548 }
487 549
488 TEST_F(SSLClientSocketPoolTest, SOCKSBasicAsync) { 550 TEST_F(SSLClientSocketPoolTest, SOCKSBasicAsync) {
489 StaticSocketDataProvider data; 551 StaticSocketDataProvider data;
490 socket_factory_.AddSocketDataProvider(&data); 552 socket_factory_.AddSocketDataProvider(&data);
491 SSLSocketDataProvider ssl(ASYNC, OK); 553 SSLSocketDataProvider ssl(ASYNC, OK);
492 socket_factory_.AddSSLSocketDataProvider(&ssl); 554 socket_factory_.AddSSLSocketDataProvider(&ssl);
493 555
494 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 556 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
495 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, 557 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5,
496 false); 558 false);
497 559
498 ClientSocketHandle handle; 560 ClientSocketHandle handle;
499 TestCompletionCallback callback; 561 TestCompletionCallback callback;
500 int rv = handle.Init( 562 int rv = handle.Init(
501 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 563 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
502 EXPECT_EQ(ERR_IO_PENDING, rv); 564 EXPECT_EQ(ERR_IO_PENDING, rv);
503 EXPECT_FALSE(handle.is_initialized()); 565 EXPECT_FALSE(handle.is_initialized());
504 EXPECT_FALSE(handle.socket()); 566 EXPECT_FALSE(handle.socket());
505 567
506 EXPECT_EQ(OK, callback.WaitForResult()); 568 EXPECT_EQ(OK, callback.WaitForResult());
507 EXPECT_TRUE(handle.is_initialized()); 569 EXPECT_TRUE(handle.is_initialized());
508 EXPECT_TRUE(handle.socket()); 570 EXPECT_TRUE(handle.socket());
571 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here
572 // don't go through the real logic, unlike in the HTTP proxy tests.
573 TestLoadTimingInfo(handle);
509 } 574 }
510 575
511 TEST_F(SSLClientSocketPoolTest, HttpProxyFail) { 576 TEST_F(SSLClientSocketPoolTest, HttpProxyFail) {
512 StaticSocketDataProvider data; 577 StaticSocketDataProvider data;
513 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); 578 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED));
514 socket_factory_.AddSocketDataProvider(&data); 579 socket_factory_.AddSocketDataProvider(&data);
515 580
516 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 581 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
517 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 582 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
518 false); 583 false);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 638 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
574 false); 639 false);
575 640
576 ClientSocketHandle handle; 641 ClientSocketHandle handle;
577 TestCompletionCallback callback; 642 TestCompletionCallback callback;
578 int rv = handle.Init( 643 int rv = handle.Init(
579 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 644 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
580 EXPECT_EQ(OK, rv); 645 EXPECT_EQ(OK, rv);
581 EXPECT_TRUE(handle.is_initialized()); 646 EXPECT_TRUE(handle.is_initialized());
582 EXPECT_TRUE(handle.socket()); 647 EXPECT_TRUE(handle.socket());
648 TestLoadTimingInfoNoDns(handle);
583 } 649 }
584 650
585 TEST_F(SSLClientSocketPoolTest, HttpProxyBasicAsync) { 651 TEST_F(SSLClientSocketPoolTest, HttpProxyBasicAsync) {
586 MockWrite writes[] = { 652 MockWrite writes[] = {
587 MockWrite("CONNECT host:80 HTTP/1.1\r\n" 653 MockWrite("CONNECT host:80 HTTP/1.1\r\n"
588 "Host: host\r\n" 654 "Host: host\r\n"
589 "Proxy-Connection: keep-alive\r\n" 655 "Proxy-Connection: keep-alive\r\n"
590 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 656 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
591 }; 657 };
592 MockRead reads[] = { 658 MockRead reads[] = {
(...skipping 14 matching lines...) Expand all
607 TestCompletionCallback callback; 673 TestCompletionCallback callback;
608 int rv = handle.Init( 674 int rv = handle.Init(
609 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog()); 675 "a", params, MEDIUM, callback.callback(), pool_.get(), BoundNetLog());
610 EXPECT_EQ(ERR_IO_PENDING, rv); 676 EXPECT_EQ(ERR_IO_PENDING, rv);
611 EXPECT_FALSE(handle.is_initialized()); 677 EXPECT_FALSE(handle.is_initialized());
612 EXPECT_FALSE(handle.socket()); 678 EXPECT_FALSE(handle.socket());
613 679
614 EXPECT_EQ(OK, callback.WaitForResult()); 680 EXPECT_EQ(OK, callback.WaitForResult());
615 EXPECT_TRUE(handle.is_initialized()); 681 EXPECT_TRUE(handle.is_initialized());
616 EXPECT_TRUE(handle.socket()); 682 EXPECT_TRUE(handle.socket());
683 TestLoadTimingInfoNoDns(handle);
617 } 684 }
618 685
619 TEST_F(SSLClientSocketPoolTest, NeedProxyAuth) { 686 TEST_F(SSLClientSocketPoolTest, NeedProxyAuth) {
620 MockWrite writes[] = { 687 MockWrite writes[] = {
621 MockWrite("CONNECT host:80 HTTP/1.1\r\n" 688 MockWrite("CONNECT host:80 HTTP/1.1\r\n"
622 "Host: host\r\n" 689 "Host: host\r\n"
623 "Proxy-Connection: keep-alive\r\n\r\n"), 690 "Proxy-Connection: keep-alive\r\n\r\n"),
624 }; 691 };
625 MockRead reads[] = { 692 MockRead reads[] = {
626 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 693 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; 902 ssl.channel_id_sent = true;
836 ssl.SetNextProto(kProtoSPDY2); 903 ssl.SetNextProto(kProtoSPDY2);
837 TestIPPoolingDisabled(&ssl); 904 TestIPPoolingDisabled(&ssl);
838 } 905 }
839 906
840 // It would be nice to also test the timeouts in SSLClientSocketPool. 907 // It would be nice to also test the timeouts in SSLClientSocketPool.
841 908
842 } // namespace 909 } // namespace
843 910
844 } // namespace net 911 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698