Chromium Code Reviews| Index: net/socket/ssl_client_socket_pool_unittest.cc |
| =================================================================== |
| --- net/socket/ssl_client_socket_pool_unittest.cc (revision 172981) |
| +++ net/socket/ssl_client_socket_pool_unittest.cc (working copy) |
| @@ -11,6 +11,7 @@ |
| #include "base/utf_string_conversions.h" |
| #include "net/base/auth.h" |
| #include "net/base/cert_verifier.h" |
| +#include "net/base/load_timing_info.h" |
| #include "net/base/mock_host_resolver.h" |
| #include "net/base/net_errors.h" |
| #include "net/base/ssl_config_service_defaults.h" |
| @@ -39,6 +40,58 @@ |
| const int kMaxSockets = 32; |
| const int kMaxSocketsPerGroup = 6; |
| +// Make sure |handle|'s load times are set correctly. DNS and connect start |
| +// times comes from mock client sockets in these tests, so primarily serves to |
| +// check those times were copied, and ssl times / connect end are set correctly. |
| +void TestLoadTimingInfo(const ClientSocketHandle& handle) { |
| + LoadTimingInfo load_timing_info; |
| + EXPECT_TRUE(handle.GetLoadTimingInfo(false, &load_timing_info)); |
| + |
| + EXPECT_FALSE(load_timing_info.socket_reused); |
| + // None of these tests use a NetLog. |
| + EXPECT_EQ(NetLog::Source::kInvalidId, load_timing_info.socket_log_id); |
| + |
| + EXPECT_FALSE(load_timing_info.dns_start.is_null()); |
| + EXPECT_LE(load_timing_info.dns_start, load_timing_info.dns_end); |
| + EXPECT_LE(load_timing_info.dns_end, load_timing_info.connect_start); |
| + EXPECT_LE(load_timing_info.connect_start, load_timing_info.ssl_start); |
| + EXPECT_LE(load_timing_info.ssl_start, load_timing_info.ssl_end); |
| + EXPECT_LE(load_timing_info.ssl_end, load_timing_info.connect_end); |
| + |
| + // None of these should be set by the socket handle. |
| + EXPECT_TRUE(load_timing_info.proxy_start.is_null()); |
| + EXPECT_TRUE(load_timing_info.proxy_end.is_null()); |
| + EXPECT_TRUE(load_timing_info.send_start.is_null()); |
| + EXPECT_TRUE(load_timing_info.send_end.is_null()); |
| + EXPECT_TRUE(load_timing_info.receive_headers_end.is_null()); |
| +} |
| + |
| +// 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).
|
| +// tests over proxy types that do DNS lookups themselves. |
| +void TestLoadTimingInfoNoDns(const ClientSocketHandle& handle) { |
| + LoadTimingInfo load_timing_info; |
| + EXPECT_TRUE(handle.GetLoadTimingInfo(false, &load_timing_info)); |
| + |
| + // None of these tests use a NetLog. |
| + EXPECT_EQ(NetLog::Source::kInvalidId, load_timing_info.socket_log_id); |
| + |
| + EXPECT_FALSE(load_timing_info.socket_reused); |
| + |
| + EXPECT_TRUE(load_timing_info.dns_start.is_null()); |
| + EXPECT_TRUE(load_timing_info.dns_end.is_null()); |
| + EXPECT_FALSE(load_timing_info.connect_start.is_null()); |
| + EXPECT_LE(load_timing_info.connect_start, load_timing_info.ssl_start); |
| + EXPECT_LE(load_timing_info.ssl_start, load_timing_info.ssl_end); |
| + EXPECT_LE(load_timing_info.ssl_end, load_timing_info.connect_end); |
| + |
| + // None of these should be set by the socket handle. |
| + EXPECT_TRUE(load_timing_info.proxy_start.is_null()); |
| + EXPECT_TRUE(load_timing_info.proxy_end.is_null()); |
| + EXPECT_TRUE(load_timing_info.send_start.is_null()); |
| + EXPECT_TRUE(load_timing_info.send_end.is_null()); |
| + EXPECT_TRUE(load_timing_info.receive_headers_end.is_null()); |
| +} |
| + |
| class SSLClientSocketPoolTest : public testing::Test { |
| protected: |
| SSLClientSocketPoolTest() |
| @@ -236,6 +289,7 @@ |
| EXPECT_EQ(OK, rv); |
| EXPECT_TRUE(handle.is_initialized()); |
| EXPECT_TRUE(handle.socket()); |
| + TestLoadTimingInfo(handle); |
| } |
| TEST_F(SSLClientSocketPoolTest, BasicDirectAsync) { |
| @@ -259,6 +313,7 @@ |
| EXPECT_EQ(OK, callback.WaitForResult()); |
| EXPECT_TRUE(handle.is_initialized()); |
| EXPECT_TRUE(handle.socket()); |
| + TestLoadTimingInfo(handle); |
| } |
| TEST_F(SSLClientSocketPoolTest, DirectCertError) { |
| @@ -282,6 +337,7 @@ |
| EXPECT_EQ(ERR_CERT_COMMON_NAME_INVALID, callback.WaitForResult()); |
| EXPECT_TRUE(handle.is_initialized()); |
| EXPECT_TRUE(handle.socket()); |
| + TestLoadTimingInfo(handle); |
| } |
| TEST_F(SSLClientSocketPoolTest, DirectSSLError) { |
| @@ -330,6 +386,7 @@ |
| EXPECT_EQ(OK, callback.WaitForResult()); |
| EXPECT_TRUE(handle.is_initialized()); |
| EXPECT_TRUE(handle.socket()); |
| + TestLoadTimingInfo(handle); |
| SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); |
| EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); |
| } |
| @@ -381,6 +438,7 @@ |
| EXPECT_EQ(OK, callback.WaitForResult()); |
| EXPECT_TRUE(handle.is_initialized()); |
| EXPECT_TRUE(handle.socket()); |
| + TestLoadTimingInfo(handle); |
| SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); |
| EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); |
| @@ -413,6 +471,7 @@ |
| EXPECT_EQ(OK, callback.WaitForResult()); |
| EXPECT_TRUE(handle.is_initialized()); |
| EXPECT_TRUE(handle.socket()); |
| + TestLoadTimingInfo(handle); |
| SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); |
| EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); |
| @@ -483,6 +542,9 @@ |
| EXPECT_EQ(OK, rv); |
| EXPECT_TRUE(handle.is_initialized()); |
| EXPECT_TRUE(handle.socket()); |
| + // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here |
| + // don't go through the real logic, unlike in the HTTP proxy tests. |
| + TestLoadTimingInfo(handle); |
| } |
| TEST_F(SSLClientSocketPoolTest, SOCKSBasicAsync) { |
| @@ -506,6 +568,9 @@ |
| EXPECT_EQ(OK, callback.WaitForResult()); |
| EXPECT_TRUE(handle.is_initialized()); |
| EXPECT_TRUE(handle.socket()); |
| + // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here |
| + // don't go through the real logic, unlike in the HTTP proxy tests. |
| + TestLoadTimingInfo(handle); |
| } |
| TEST_F(SSLClientSocketPoolTest, HttpProxyFail) { |
| @@ -580,6 +645,7 @@ |
| EXPECT_EQ(OK, rv); |
| EXPECT_TRUE(handle.is_initialized()); |
| EXPECT_TRUE(handle.socket()); |
| + TestLoadTimingInfoNoDns(handle); |
| } |
| TEST_F(SSLClientSocketPoolTest, HttpProxyBasicAsync) { |
| @@ -614,6 +680,7 @@ |
| EXPECT_EQ(OK, callback.WaitForResult()); |
| EXPECT_TRUE(handle.is_initialized()); |
| EXPECT_TRUE(handle.socket()); |
| + TestLoadTimingInfoNoDns(handle); |
| } |
| TEST_F(SSLClientSocketPoolTest, NeedProxyAuth) { |