| Index: net/socket/tcp_client_socket_pool_unittest.cc
|
| diff --git a/net/socket/tcp_client_socket_pool_unittest.cc b/net/socket/tcp_client_socket_pool_unittest.cc
|
| index 9fd1c8afc118311a8cb50b83453986cec53067fc..e6d435a05c6d92e47d305b12952ff27f3798943a 100644
|
| --- a/net/socket/tcp_client_socket_pool_unittest.cc
|
| +++ b/net/socket/tcp_client_socket_pool_unittest.cc
|
| @@ -8,6 +8,7 @@
|
| #include "base/compiler_specific.h"
|
| #include "base/message_loop.h"
|
| #include "net/base/mock_host_resolver.h"
|
| +#include "net/base/mock_network_change_notifier.h"
|
| #include "net/base/net_errors.h"
|
| #include "net/base/test_completion_callback.h"
|
| #include "net/socket/client_socket.h"
|
| @@ -268,7 +269,9 @@ class TCPClientSocketPoolTest : public ClientSocketPoolTest {
|
| kMaxSocketsPerGroup,
|
| "TCPUnitTest",
|
| host_resolver_,
|
| - &client_socket_factory_)) {}
|
| + &client_socket_factory_,
|
| + ¬ifier_)) {
|
| + }
|
|
|
| int StartRequest(const std::string& group_name, RequestPriority priority) {
|
| return StartRequestUsingPool(
|
| @@ -278,6 +281,7 @@ class TCPClientSocketPoolTest : public ClientSocketPoolTest {
|
| TCPSocketParams ignored_socket_params_;
|
| scoped_refptr<MockHostResolver> host_resolver_;
|
| MockClientSocketFactory client_socket_factory_;
|
| + MockNetworkChangeNotifier notifier_;
|
| scoped_refptr<TCPClientSocketPool> pool_;
|
| };
|
|
|
| @@ -654,6 +658,32 @@ TEST_F(TCPClientSocketPoolTest, FailingActiveRequestWithPendingRequests) {
|
| EXPECT_EQ(ERR_CONNECTION_FAILED, requests_[i]->WaitForResult());
|
| }
|
|
|
| +TEST_F(TCPClientSocketPoolTest, ResetIdleSocketsOnIPAddressChange) {
|
| + TestCompletionCallback callback;
|
| + ClientSocketHandle handle;
|
| + TCPSocketParams dest("www.google.com", 80, LOW, GURL(), false);
|
| + int rv = handle.Init("a", dest, LOW, &callback, pool_, BoundNetLog());
|
| + EXPECT_EQ(ERR_IO_PENDING, rv);
|
| + EXPECT_FALSE(handle.is_initialized());
|
| + EXPECT_FALSE(handle.socket());
|
| +
|
| + EXPECT_EQ(OK, callback.WaitForResult());
|
| + EXPECT_TRUE(handle.is_initialized());
|
| + EXPECT_TRUE(handle.socket());
|
| +
|
| + handle.Reset();
|
| +
|
| + // Need to run all pending to release the socket back to the pool.
|
| + MessageLoop::current()->RunAllPending();
|
| +
|
| + // Now we should have 1 idle socket.
|
| + EXPECT_EQ(1, pool_->IdleSocketCount());
|
| +
|
| + // After an IP address change, we should have 0 idle sockets.
|
| + notifier_.NotifyIPAddressChange();
|
| + EXPECT_EQ(0, pool_->IdleSocketCount());
|
| +}
|
| +
|
| TEST_F(TCPClientSocketPoolTest, BackupSocketConnect) {
|
| // Case 1 tests the first socket stalling, and the backup connecting.
|
| MockClientSocketFactory::ClientSocketType case1_types[] = {
|
| @@ -712,7 +742,8 @@ TEST_F(TCPClientSocketPoolTest, BackupSocketConnect) {
|
| kMaxSocketsPerGroup,
|
| "TCPUnitTest",
|
| host_resolver_,
|
| - &client_socket_factory_);
|
| + &client_socket_factory_,
|
| + NULL);
|
| }
|
| }
|
|
|
|
|