Index: net/socket/ssl_client_socket_pool_unittest.cc |
diff --git a/net/socket/ssl_client_socket_pool_unittest.cc b/net/socket/ssl_client_socket_pool_unittest.cc |
index 3d5d9d3321831d9d4c480f0c679edee2c53d4286..333a524f9b61494f1acb279dd789cb4d6018f88c 100644 |
--- a/net/socket/ssl_client_socket_pool_unittest.cc |
+++ b/net/socket/ssl_client_socket_pool_unittest.cc |
@@ -6,7 +6,6 @@ |
#include "base/callback.h" |
#include "base/compiler_specific.h" |
-#include "base/run_loop.h" |
#include "base/strings/string_util.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/time/time.h" |
@@ -86,25 +85,23 @@ class SSLClientSocketPoolTest |
http_auth_handler_factory_( |
HttpAuthHandlerFactory::CreateDefault(&host_resolver_)), |
session_(CreateNetworkSession()), |
- direct_transport_socket_params_( |
- new TransportSocketParams( |
- HostPortPair("host", 443), |
- false, |
- false, |
- OnHostResolutionCallback(), |
- TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT)), |
+ direct_transport_socket_params_(new TransportSocketParams( |
+ HostPortPair("host", 443), |
+ false, |
+ false, |
+ OnHostResolutionCallback(), |
+ TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT)), |
transport_histograms_("MockTCP"), |
transport_socket_pool_(kMaxSockets, |
kMaxSocketsPerGroup, |
&transport_histograms_, |
&socket_factory_), |
- proxy_transport_socket_params_( |
- new TransportSocketParams( |
- HostPortPair("proxy", 443), |
- false, |
- false, |
- OnHostResolutionCallback(), |
- TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT)), |
+ proxy_transport_socket_params_(new TransportSocketParams( |
+ HostPortPair("proxy", 443), |
+ false, |
+ false, |
+ OnHostResolutionCallback(), |
+ TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT)), |
socks_socket_params_( |
new SOCKSSocketParams(proxy_transport_socket_params_, |
true, |
@@ -131,8 +128,7 @@ class SSLClientSocketPoolTest |
&http_proxy_histograms_, |
&transport_socket_pool_, |
NULL, |
- NULL), |
- enable_ssl_connect_job_waiting_(false) { |
+ NULL) { |
scoped_refptr<SSLConfigService> ssl_config_service( |
new SSLConfigServiceDefaults); |
ssl_config_service->GetSSLConfig(&ssl_config_); |
@@ -148,8 +144,7 @@ class SSLClientSocketPoolTest |
std::string() /* ssl_session_cache_shard */, &socket_factory_, |
transport_pool ? &transport_socket_pool_ : NULL, |
socks_pool ? &socks_socket_pool_ : NULL, |
- http_proxy_pool ? &http_proxy_socket_pool_ : NULL, NULL, |
- enable_ssl_connect_job_waiting_, NULL)); |
+ http_proxy_pool ? &http_proxy_socket_pool_ : NULL, NULL, NULL)); |
} |
scoped_refptr<SSLSocketParams> SSLParams(ProxyServer::Scheme proxy, |
@@ -223,8 +218,6 @@ class SSLClientSocketPoolTest |
SSLConfig ssl_config_; |
scoped_ptr<ClientSocketPoolHistograms> ssl_histograms_; |
scoped_ptr<SSLClientSocketPool> pool_; |
- |
- bool enable_ssl_connect_job_waiting_; |
}; |
INSTANTIATE_TEST_CASE_P(NextProto, |
@@ -233,462 +226,6 @@ INSTANTIATE_TEST_CASE_P(NextProto, |
kProtoSPDY4_14, |
kProtoSPDY4)); |
-// Tests that the final socket will connect even if all sockets |
-// prior to it fail. |
-// |
-// All sockets should wait for the first socket to attempt to |
-// connect. Once it fails to connect, all other sockets should |
-// attempt to connect. All should fail, except the final socket. |
-TEST_P(SSLClientSocketPoolTest, AllSocketsFailButLast) { |
- // Although we request four sockets, the first three socket connect |
- // failures cause the socket pool to create three more sockets because |
- // there are pending requests. |
- StaticSocketDataProvider data1; |
- StaticSocketDataProvider data2; |
- StaticSocketDataProvider data3; |
- StaticSocketDataProvider data4; |
- StaticSocketDataProvider data5; |
- StaticSocketDataProvider data6; |
- StaticSocketDataProvider data7; |
- socket_factory_.AddSocketDataProvider(&data1); |
- socket_factory_.AddSocketDataProvider(&data2); |
- socket_factory_.AddSocketDataProvider(&data3); |
- socket_factory_.AddSocketDataProvider(&data4); |
- socket_factory_.AddSocketDataProvider(&data5); |
- socket_factory_.AddSocketDataProvider(&data6); |
- socket_factory_.AddSocketDataProvider(&data7); |
- SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR); |
- ssl.is_in_session_cache = false; |
- SSLSocketDataProvider ssl2(ASYNC, ERR_SSL_PROTOCOL_ERROR); |
- ssl2.is_in_session_cache = false; |
- SSLSocketDataProvider ssl3(ASYNC, ERR_SSL_PROTOCOL_ERROR); |
- ssl3.is_in_session_cache = false; |
- SSLSocketDataProvider ssl4(ASYNC, OK); |
- ssl4.is_in_session_cache = false; |
- SSLSocketDataProvider ssl5(ASYNC, OK); |
- ssl5.is_in_session_cache = false; |
- SSLSocketDataProvider ssl6(ASYNC, OK); |
- ssl6.is_in_session_cache = false; |
- SSLSocketDataProvider ssl7(ASYNC, OK); |
- ssl7.is_in_session_cache = false; |
- |
- socket_factory_.AddSSLSocketDataProvider(&ssl); |
- socket_factory_.AddSSLSocketDataProvider(&ssl2); |
- socket_factory_.AddSSLSocketDataProvider(&ssl3); |
- socket_factory_.AddSSLSocketDataProvider(&ssl4); |
- socket_factory_.AddSSLSocketDataProvider(&ssl5); |
- socket_factory_.AddSSLSocketDataProvider(&ssl6); |
- socket_factory_.AddSSLSocketDataProvider(&ssl7); |
- |
- enable_ssl_connect_job_waiting_ = true; |
- CreatePool(true, false, false); |
- |
- scoped_refptr<SSLSocketParams> params1 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params2 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params3 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params4 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- ClientSocketHandle handle1; |
- ClientSocketHandle handle2; |
- ClientSocketHandle handle3; |
- ClientSocketHandle handle4; |
- TestCompletionCallback callback1; |
- TestCompletionCallback callback2; |
- TestCompletionCallback callback3; |
- TestCompletionCallback callback4; |
- |
- handle1.Init( |
- "b", params1, MEDIUM, callback1.callback(), pool_.get(), BoundNetLog()); |
- handle2.Init( |
- "b", params2, MEDIUM, callback2.callback(), pool_.get(), BoundNetLog()); |
- handle3.Init( |
- "b", params3, MEDIUM, callback3.callback(), pool_.get(), BoundNetLog()); |
- handle4.Init( |
- "b", params4, MEDIUM, callback4.callback(), pool_.get(), BoundNetLog()); |
- |
- base::RunLoop().RunUntilIdle(); |
- |
- // Only the last socket should have connected. |
- EXPECT_FALSE(handle1.socket()); |
- EXPECT_FALSE(handle2.socket()); |
- EXPECT_FALSE(handle3.socket()); |
- EXPECT_TRUE(handle4.socket()->IsConnected()); |
-} |
- |
-// Tests that sockets will still connect in parallel if the |
-// EnableSSLConnectJobWaiting flag is not enabled. |
-TEST_P(SSLClientSocketPoolTest, SocketsConnectWithoutFlag) { |
- StaticSocketDataProvider data1; |
- StaticSocketDataProvider data2; |
- StaticSocketDataProvider data3; |
- socket_factory_.AddSocketDataProvider(&data1); |
- socket_factory_.AddSocketDataProvider(&data2); |
- socket_factory_.AddSocketDataProvider(&data3); |
- |
- SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.is_in_session_cache = false; |
- ssl.should_pause_on_connect = true; |
- SSLSocketDataProvider ssl2(ASYNC, OK); |
- ssl2.is_in_session_cache = false; |
- ssl2.should_pause_on_connect = true; |
- SSLSocketDataProvider ssl3(ASYNC, OK); |
- ssl3.is_in_session_cache = false; |
- ssl3.should_pause_on_connect = true; |
- socket_factory_.AddSSLSocketDataProvider(&ssl); |
- socket_factory_.AddSSLSocketDataProvider(&ssl2); |
- socket_factory_.AddSSLSocketDataProvider(&ssl3); |
- |
- CreatePool(true, false, false); |
- |
- scoped_refptr<SSLSocketParams> params1 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params2 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params3 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- ClientSocketHandle handle1; |
- ClientSocketHandle handle2; |
- ClientSocketHandle handle3; |
- TestCompletionCallback callback1; |
- TestCompletionCallback callback2; |
- TestCompletionCallback callback3; |
- |
- handle1.Init( |
- "b", params1, MEDIUM, callback1.callback(), pool_.get(), BoundNetLog()); |
- handle2.Init( |
- "b", params2, MEDIUM, callback2.callback(), pool_.get(), BoundNetLog()); |
- handle3.Init( |
- "b", params3, MEDIUM, callback3.callback(), pool_.get(), BoundNetLog()); |
- |
- base::RunLoop().RunUntilIdle(); |
- |
- std::vector<MockSSLClientSocket*> sockets = |
- socket_factory_.ssl_client_sockets(); |
- |
- // All sockets should have started their connections. |
- for (std::vector<MockSSLClientSocket*>::iterator it = sockets.begin(); |
- it != sockets.end(); |
- ++it) { |
- EXPECT_TRUE((*it)->reached_connect()); |
- } |
- |
- // Resume connecting all of the sockets. |
- for (std::vector<MockSSLClientSocket*>::iterator it = sockets.begin(); |
- it != sockets.end(); |
- ++it) { |
- (*it)->RestartPausedConnect(); |
- } |
- |
- callback1.WaitForResult(); |
- callback2.WaitForResult(); |
- callback3.WaitForResult(); |
- |
- EXPECT_TRUE(handle1.socket()->IsConnected()); |
- EXPECT_TRUE(handle2.socket()->IsConnected()); |
- EXPECT_TRUE(handle3.socket()->IsConnected()); |
-} |
- |
-// Tests that the pool deleting an SSLConnectJob will not cause a crash, |
-// or prevent pending sockets from connecting. |
-TEST_P(SSLClientSocketPoolTest, DeletedSSLConnectJob) { |
- StaticSocketDataProvider data1; |
- StaticSocketDataProvider data2; |
- StaticSocketDataProvider data3; |
- socket_factory_.AddSocketDataProvider(&data1); |
- socket_factory_.AddSocketDataProvider(&data2); |
- socket_factory_.AddSocketDataProvider(&data3); |
- |
- SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.is_in_session_cache = false; |
- ssl.should_pause_on_connect = true; |
- SSLSocketDataProvider ssl2(ASYNC, OK); |
- ssl2.is_in_session_cache = false; |
- SSLSocketDataProvider ssl3(ASYNC, OK); |
- ssl3.is_in_session_cache = false; |
- socket_factory_.AddSSLSocketDataProvider(&ssl); |
- socket_factory_.AddSSLSocketDataProvider(&ssl2); |
- socket_factory_.AddSSLSocketDataProvider(&ssl3); |
- |
- enable_ssl_connect_job_waiting_ = true; |
- CreatePool(true, false, false); |
- |
- scoped_refptr<SSLSocketParams> params1 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params2 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params3 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- ClientSocketHandle handle1; |
- ClientSocketHandle handle2; |
- ClientSocketHandle handle3; |
- TestCompletionCallback callback1; |
- TestCompletionCallback callback2; |
- TestCompletionCallback callback3; |
- |
- handle1.Init( |
- "b", params1, MEDIUM, callback1.callback(), pool_.get(), BoundNetLog()); |
- handle2.Init( |
- "b", params2, MEDIUM, callback2.callback(), pool_.get(), BoundNetLog()); |
- handle3.Init( |
- "b", params3, MEDIUM, callback3.callback(), pool_.get(), BoundNetLog()); |
- |
- // Allow the connections to proceed until the first socket has started |
- // connecting. |
- base::RunLoop().RunUntilIdle(); |
- |
- std::vector<MockSSLClientSocket*> sockets = |
- socket_factory_.ssl_client_sockets(); |
- |
- pool_->CancelRequest("b", &handle2); |
- |
- sockets[0]->RestartPausedConnect(); |
- |
- callback1.WaitForResult(); |
- callback3.WaitForResult(); |
- |
- EXPECT_TRUE(handle1.socket()->IsConnected()); |
- EXPECT_FALSE(handle2.socket()); |
- EXPECT_TRUE(handle3.socket()->IsConnected()); |
-} |
- |
-// Tests that all pending sockets still connect when the pool deletes a pending |
-// SSLConnectJob which immediately followed a failed leading connection. |
-TEST_P(SSLClientSocketPoolTest, DeletedSocketAfterFail) { |
- StaticSocketDataProvider data1; |
- StaticSocketDataProvider data2; |
- StaticSocketDataProvider data3; |
- StaticSocketDataProvider data4; |
- socket_factory_.AddSocketDataProvider(&data1); |
- socket_factory_.AddSocketDataProvider(&data2); |
- socket_factory_.AddSocketDataProvider(&data3); |
- socket_factory_.AddSocketDataProvider(&data4); |
- |
- SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR); |
- ssl.is_in_session_cache = false; |
- ssl.should_pause_on_connect = true; |
- SSLSocketDataProvider ssl2(ASYNC, OK); |
- ssl2.is_in_session_cache = false; |
- SSLSocketDataProvider ssl3(ASYNC, OK); |
- ssl3.is_in_session_cache = false; |
- SSLSocketDataProvider ssl4(ASYNC, OK); |
- ssl4.is_in_session_cache = false; |
- socket_factory_.AddSSLSocketDataProvider(&ssl); |
- socket_factory_.AddSSLSocketDataProvider(&ssl2); |
- socket_factory_.AddSSLSocketDataProvider(&ssl3); |
- socket_factory_.AddSSLSocketDataProvider(&ssl4); |
- |
- enable_ssl_connect_job_waiting_ = true; |
- CreatePool(true, false, false); |
- |
- scoped_refptr<SSLSocketParams> params1 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params2 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params3 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- ClientSocketHandle handle1; |
- ClientSocketHandle handle2; |
- ClientSocketHandle handle3; |
- TestCompletionCallback callback1; |
- TestCompletionCallback callback2; |
- TestCompletionCallback callback3; |
- |
- handle1.Init( |
- "b", params1, MEDIUM, callback1.callback(), pool_.get(), BoundNetLog()); |
- handle2.Init( |
- "b", params2, MEDIUM, callback2.callback(), pool_.get(), BoundNetLog()); |
- handle3.Init( |
- "b", params3, MEDIUM, callback3.callback(), pool_.get(), BoundNetLog()); |
- |
- // Allow the connections to proceed until the first socket has started |
- // connecting. |
- base::RunLoop().RunUntilIdle(); |
- |
- std::vector<MockSSLClientSocket*> sockets = |
- socket_factory_.ssl_client_sockets(); |
- |
- EXPECT_EQ(3u, sockets.size()); |
- EXPECT_TRUE(sockets[0]->reached_connect()); |
- EXPECT_FALSE(handle1.socket()); |
- |
- pool_->CancelRequest("b", &handle2); |
- |
- sockets[0]->RestartPausedConnect(); |
- |
- callback1.WaitForResult(); |
- callback3.WaitForResult(); |
- |
- EXPECT_FALSE(handle1.socket()); |
- EXPECT_FALSE(handle2.socket()); |
- EXPECT_TRUE(handle3.socket()->IsConnected()); |
-} |
- |
-// Make sure that sockets still connect after the leader socket's |
-// connection fails. |
-TEST_P(SSLClientSocketPoolTest, SimultaneousConnectJobsFail) { |
- StaticSocketDataProvider data1; |
- StaticSocketDataProvider data2; |
- StaticSocketDataProvider data3; |
- StaticSocketDataProvider data4; |
- StaticSocketDataProvider data5; |
- socket_factory_.AddSocketDataProvider(&data1); |
- socket_factory_.AddSocketDataProvider(&data2); |
- socket_factory_.AddSocketDataProvider(&data3); |
- socket_factory_.AddSocketDataProvider(&data4); |
- socket_factory_.AddSocketDataProvider(&data5); |
- SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR); |
- ssl.is_in_session_cache = false; |
- ssl.should_pause_on_connect = true; |
- SSLSocketDataProvider ssl2(ASYNC, OK); |
- ssl2.is_in_session_cache = false; |
- ssl2.should_pause_on_connect = true; |
- SSLSocketDataProvider ssl3(ASYNC, OK); |
- ssl3.is_in_session_cache = false; |
- SSLSocketDataProvider ssl4(ASYNC, OK); |
- ssl4.is_in_session_cache = false; |
- SSLSocketDataProvider ssl5(ASYNC, OK); |
- ssl5.is_in_session_cache = false; |
- |
- socket_factory_.AddSSLSocketDataProvider(&ssl); |
- socket_factory_.AddSSLSocketDataProvider(&ssl2); |
- socket_factory_.AddSSLSocketDataProvider(&ssl3); |
- socket_factory_.AddSSLSocketDataProvider(&ssl4); |
- socket_factory_.AddSSLSocketDataProvider(&ssl5); |
- |
- enable_ssl_connect_job_waiting_ = true; |
- CreatePool(true, false, false); |
- scoped_refptr<SSLSocketParams> params1 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params2 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params3 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params4 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- ClientSocketHandle handle1; |
- ClientSocketHandle handle2; |
- ClientSocketHandle handle3; |
- ClientSocketHandle handle4; |
- TestCompletionCallback callback1; |
- TestCompletionCallback callback2; |
- TestCompletionCallback callback3; |
- TestCompletionCallback callback4; |
- handle1.Init( |
- "b", params1, MEDIUM, callback1.callback(), pool_.get(), BoundNetLog()); |
- handle2.Init( |
- "b", params2, MEDIUM, callback2.callback(), pool_.get(), BoundNetLog()); |
- handle3.Init( |
- "b", params3, MEDIUM, callback3.callback(), pool_.get(), BoundNetLog()); |
- handle4.Init( |
- "b", params4, MEDIUM, callback4.callback(), pool_.get(), BoundNetLog()); |
- |
- base::RunLoop().RunUntilIdle(); |
- |
- std::vector<MockSSLClientSocket*> sockets = |
- socket_factory_.ssl_client_sockets(); |
- |
- std::vector<MockSSLClientSocket*>::const_iterator it = sockets.begin(); |
- |
- // The first socket should have had Connect called on it. |
- EXPECT_TRUE((*it)->reached_connect()); |
- ++it; |
- |
- // No other socket should have reached connect yet. |
- for (; it != sockets.end(); ++it) |
- EXPECT_FALSE((*it)->reached_connect()); |
- |
- // Allow the first socket to resume it's connection process. |
- sockets[0]->RestartPausedConnect(); |
- |
- base::RunLoop().RunUntilIdle(); |
- |
- // The second socket should have reached connect. |
- EXPECT_TRUE(sockets[1]->reached_connect()); |
- |
- // Allow the second socket to continue its connection. |
- sockets[1]->RestartPausedConnect(); |
- |
- base::RunLoop().RunUntilIdle(); |
- |
- EXPECT_FALSE(handle1.socket()); |
- EXPECT_TRUE(handle2.socket()->IsConnected()); |
- EXPECT_TRUE(handle3.socket()->IsConnected()); |
- EXPECT_TRUE(handle4.socket()->IsConnected()); |
-} |
- |
-// Make sure that no sockets connect before the "leader" socket, |
-// given that the leader has a successful connection. |
-TEST_P(SSLClientSocketPoolTest, SimultaneousConnectJobsSuccess) { |
- StaticSocketDataProvider data1; |
- StaticSocketDataProvider data2; |
- StaticSocketDataProvider data3; |
- socket_factory_.AddSocketDataProvider(&data1); |
- socket_factory_.AddSocketDataProvider(&data2); |
- socket_factory_.AddSocketDataProvider(&data3); |
- |
- SSLSocketDataProvider ssl(ASYNC, OK); |
- ssl.is_in_session_cache = false; |
- ssl.should_pause_on_connect = true; |
- SSLSocketDataProvider ssl2(ASYNC, OK); |
- ssl2.is_in_session_cache = false; |
- SSLSocketDataProvider ssl3(ASYNC, OK); |
- ssl3.is_in_session_cache = false; |
- socket_factory_.AddSSLSocketDataProvider(&ssl); |
- socket_factory_.AddSSLSocketDataProvider(&ssl2); |
- socket_factory_.AddSSLSocketDataProvider(&ssl3); |
- |
- enable_ssl_connect_job_waiting_ = true; |
- CreatePool(true, false, false); |
- |
- scoped_refptr<SSLSocketParams> params1 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params2 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- scoped_refptr<SSLSocketParams> params3 = |
- SSLParams(ProxyServer::SCHEME_DIRECT, false); |
- ClientSocketHandle handle1; |
- ClientSocketHandle handle2; |
- ClientSocketHandle handle3; |
- TestCompletionCallback callback1; |
- TestCompletionCallback callback2; |
- TestCompletionCallback callback3; |
- |
- handle1.Init( |
- "b", params1, MEDIUM, callback1.callback(), pool_.get(), BoundNetLog()); |
- handle2.Init( |
- "b", params2, MEDIUM, callback2.callback(), pool_.get(), BoundNetLog()); |
- handle3.Init( |
- "b", params3, MEDIUM, callback3.callback(), pool_.get(), BoundNetLog()); |
- |
- // Allow the connections to proceed until the first socket has finished |
- // connecting. |
- base::RunLoop().RunUntilIdle(); |
- |
- std::vector<MockSSLClientSocket*> sockets = |
- socket_factory_.ssl_client_sockets(); |
- |
- std::vector<MockSSLClientSocket*>::const_iterator it = sockets.begin(); |
- // The first socket should have reached connect. |
- EXPECT_TRUE((*it)->reached_connect()); |
- ++it; |
- // No other socket should have reached connect yet. |
- for (; it != sockets.end(); ++it) |
- EXPECT_FALSE((*it)->reached_connect()); |
- |
- sockets[0]->RestartPausedConnect(); |
- |
- callback1.WaitForResult(); |
- callback2.WaitForResult(); |
- callback3.WaitForResult(); |
- |
- EXPECT_TRUE(handle1.socket()->IsConnected()); |
- EXPECT_TRUE(handle2.socket()->IsConnected()); |
- EXPECT_TRUE(handle3.socket()->IsConnected()); |
-} |
- |
TEST_P(SSLClientSocketPoolTest, TCPFail) { |
StaticSocketDataProvider data; |
data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); |