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

Unified 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/socket/ssl_client_socket_pool_unittest.cc
===================================================================
--- net/socket/ssl_client_socket_pool_unittest.cc (revision 175289)
+++ 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,66 @@
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.connect_timing.dns_start.is_null());
+ EXPECT_LE(load_timing_info.connect_timing.dns_start,
+ load_timing_info.connect_timing.dns_end);
+ EXPECT_LE(load_timing_info.connect_timing.dns_end,
+ load_timing_info.connect_timing.connect_start);
+ EXPECT_LE(load_timing_info.connect_timing.connect_start,
+ load_timing_info.connect_timing.ssl_start);
+ EXPECT_LE(load_timing_info.connect_timing.ssl_start,
+ load_timing_info.connect_timing.ssl_end);
+ EXPECT_LE(load_timing_info.connect_timing.ssl_end,
+ load_timing_info.connect_timing.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.connect_timing.dns_start.is_null());
+ EXPECT_TRUE(load_timing_info.connect_timing.dns_end.is_null());
+ EXPECT_FALSE(load_timing_info.connect_timing.connect_start.is_null());
+ EXPECT_LE(load_timing_info.connect_timing.connect_start,
+ load_timing_info.connect_timing.ssl_start);
+ EXPECT_LE(load_timing_info.connect_timing.ssl_start,
+ load_timing_info.connect_timing.ssl_end);
+ EXPECT_LE(load_timing_info.connect_timing.ssl_end,
+ load_timing_info.connect_timing.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 +297,7 @@
EXPECT_EQ(OK, rv);
EXPECT_TRUE(handle.is_initialized());
EXPECT_TRUE(handle.socket());
+ TestLoadTimingInfo(handle);
}
TEST_F(SSLClientSocketPoolTest, BasicDirectAsync) {
@@ -259,6 +321,7 @@
EXPECT_EQ(OK, callback.WaitForResult());
EXPECT_TRUE(handle.is_initialized());
EXPECT_TRUE(handle.socket());
+ TestLoadTimingInfo(handle);
}
TEST_F(SSLClientSocketPoolTest, DirectCertError) {
@@ -282,6 +345,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 +394,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 +446,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 +479,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 +550,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 +576,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 +653,7 @@
EXPECT_EQ(OK, rv);
EXPECT_TRUE(handle.is_initialized());
EXPECT_TRUE(handle.socket());
+ TestLoadTimingInfoNoDns(handle);
}
TEST_F(SSLClientSocketPoolTest, HttpProxyBasicAsync) {
@@ -614,6 +688,7 @@
EXPECT_EQ(OK, callback.WaitForResult());
EXPECT_TRUE(handle.is_initialized());
EXPECT_TRUE(handle.socket());
+ TestLoadTimingInfoNoDns(handle);
}
TEST_F(SSLClientSocketPoolTest, NeedProxyAuth) {
« 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