| Index: net/socket/ssl_client_socket_pool_unittest.cc
|
| ===================================================================
|
| --- net/socket/ssl_client_socket_pool_unittest.cc (revision 174803)
|
| +++ 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_resolve_start.is_null());
|
| + EXPECT_TRUE(load_timing_info.proxy_resolve_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
|
| +// tests over proxies 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_resolve_start.is_null());
|
| + EXPECT_TRUE(load_timing_info.proxy_resolve_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) {
|
|
|