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

Side by Side Diff: net/socket/client_socket_pool_base_unittest.cc

Issue 1091793002: Report the connect status of the oldest connection in the socket pool. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed typo Created 5 years, 8 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 unified diff | Download patch
« no previous file with comments | « net/socket/client_socket_pool_base.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/socket/client_socket_pool_base.h" 5 #include "net/socket/client_socket_pool_base.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 1937 matching lines...) Expand 10 before | Expand all | Expand 10 after
1948 EXPECT_EQ(LOAD_STATE_CONNECTING, handle.GetLoadState()); 1948 EXPECT_EQ(LOAD_STATE_CONNECTING, handle.GetLoadState());
1949 1949
1950 client_socket_factory_.SetJobLoadState(0, LOAD_STATE_SSL_HANDSHAKE); 1950 client_socket_factory_.SetJobLoadState(0, LOAD_STATE_SSL_HANDSHAKE);
1951 EXPECT_EQ(LOAD_STATE_SSL_HANDSHAKE, handle.GetLoadState()); 1951 EXPECT_EQ(LOAD_STATE_SSL_HANDSHAKE, handle.GetLoadState());
1952 1952
1953 // No point in completing the connection, since ClientSocketHandles only 1953 // No point in completing the connection, since ClientSocketHandles only
1954 // expect the LoadState to be checked while connecting. 1954 // expect the LoadState to be checked while connecting.
1955 } 1955 }
1956 1956
1957 // Test GetLoadState in the case there are two socket requests. 1957 // Test GetLoadState in the case there are two socket requests.
1958 // Only the first connection in the pool should affect the pool's load status.
1958 TEST_F(ClientSocketPoolBaseTest, LoadStateTwoRequests) { 1959 TEST_F(ClientSocketPoolBaseTest, LoadStateTwoRequests) {
1959 CreatePool(2, 2); 1960 CreatePool(2, 2);
1960 connect_job_factory_->set_job_type(TestConnectJob::kMockWaitingJob); 1961 connect_job_factory_->set_job_type(TestConnectJob::kMockWaitingJob);
1961 1962
1962 ClientSocketHandle handle; 1963 ClientSocketHandle handle;
1963 TestCompletionCallback callback; 1964 TestCompletionCallback callback;
1964 int rv = handle.Init("a", 1965 int rv = handle.Init("a", params_, DEFAULT_PRIORITY, callback.callback(),
1965 params_, 1966 pool_.get(), BoundNetLog());
1966 DEFAULT_PRIORITY, 1967 EXPECT_EQ(ERR_IO_PENDING, rv);
1967 callback.callback(), 1968 client_socket_factory_.SetJobLoadState(0, LOAD_STATE_RESOLVING_HOST);
1968 pool_.get(), 1969
1969 BoundNetLog()); 1970 ClientSocketHandle handle2;
1971 TestCompletionCallback callback2;
1972 rv = handle2.Init("a", params_, DEFAULT_PRIORITY, callback2.callback(),
1973 pool_.get(), BoundNetLog());
1974 EXPECT_EQ(ERR_IO_PENDING, rv);
1975 client_socket_factory_.SetJobLoadState(1, LOAD_STATE_RESOLVING_HOST);
1976
1977 // Check that both handles report the state of the first job.
1978 EXPECT_EQ(LOAD_STATE_RESOLVING_HOST, handle.GetLoadState());
1979 EXPECT_EQ(LOAD_STATE_RESOLVING_HOST, handle2.GetLoadState());
1980
1981 client_socket_factory_.SetJobLoadState(0, LOAD_STATE_CONNECTING);
1982
1983 // Check that both handles change to LOAD_STATE_CONNECTING.
1984 EXPECT_EQ(LOAD_STATE_CONNECTING, handle.GetLoadState());
1985 EXPECT_EQ(LOAD_STATE_CONNECTING, handle2.GetLoadState());
1986 }
1987
1988 // Test that the second connection request does not affect the pool's load
1989 // status.
1990 TEST_F(ClientSocketPoolBaseTest, LoadStateTwoRequestsChangeSecondRequestState) {
1991 CreatePool(2, 2);
1992 connect_job_factory_->set_job_type(TestConnectJob::kMockWaitingJob);
1993
1994 ClientSocketHandle handle;
1995 TestCompletionCallback callback;
1996 int rv = handle.Init("a", params_, DEFAULT_PRIORITY, callback.callback(),
1997 pool_.get(), BoundNetLog());
1970 EXPECT_EQ(ERR_IO_PENDING, rv); 1998 EXPECT_EQ(ERR_IO_PENDING, rv);
1971 1999
1972 ClientSocketHandle handle2; 2000 ClientSocketHandle handle2;
1973 TestCompletionCallback callback2; 2001 TestCompletionCallback callback2;
1974 rv = handle2.Init("a", 2002 rv = handle2.Init("a", params_, DEFAULT_PRIORITY, callback2.callback(),
1975 params_, 2003 pool_.get(), BoundNetLog());
1976 DEFAULT_PRIORITY,
1977 callback2.callback(),
1978 pool_.get(),
1979 BoundNetLog());
1980 EXPECT_EQ(ERR_IO_PENDING, rv); 2004 EXPECT_EQ(ERR_IO_PENDING, rv);
2005 client_socket_factory_.SetJobLoadState(1, LOAD_STATE_RESOLVING_HOST);
1981 2006
1982 // If the first Job is in an earlier state than the second, the state of
1983 // the second job should be used for both handles.
1984 client_socket_factory_.SetJobLoadState(0, LOAD_STATE_RESOLVING_HOST);
1985 EXPECT_EQ(LOAD_STATE_CONNECTING, handle.GetLoadState()); 2007 EXPECT_EQ(LOAD_STATE_CONNECTING, handle.GetLoadState());
1986 EXPECT_EQ(LOAD_STATE_CONNECTING, handle2.GetLoadState()); 2008 EXPECT_EQ(LOAD_STATE_CONNECTING, handle2.GetLoadState());
1987 2009
1988 // If the second Job is in an earlier state than the second, the state of 2010 // First job connects and the first request gets the socket. The
1989 // the first job should be used for both handles.
1990 client_socket_factory_.SetJobLoadState(0, LOAD_STATE_SSL_HANDSHAKE);
1991 // One request is farther
1992 EXPECT_EQ(LOAD_STATE_SSL_HANDSHAKE, handle.GetLoadState());
1993 EXPECT_EQ(LOAD_STATE_SSL_HANDSHAKE, handle2.GetLoadState());
1994
1995 // Farthest along job connects and the first request gets the socket. The
1996 // second handle switches to the state of the remaining ConnectJob. 2011 // second handle switches to the state of the remaining ConnectJob.
1997 client_socket_factory_.SignalJob(0); 2012 client_socket_factory_.SignalJob(0);
1998 EXPECT_EQ(OK, callback.WaitForResult()); 2013 EXPECT_EQ(OK, callback.WaitForResult());
1999 EXPECT_EQ(LOAD_STATE_CONNECTING, handle2.GetLoadState()); 2014 EXPECT_EQ(LOAD_STATE_RESOLVING_HOST, handle2.GetLoadState());
2000 } 2015 }
2001 2016
2002 // Test GetLoadState in the case the per-group limit is reached. 2017 // Test GetLoadState in the case the per-group limit is reached.
2003 TEST_F(ClientSocketPoolBaseTest, LoadStateGroupLimit) { 2018 TEST_F(ClientSocketPoolBaseTest, LoadStateGroupLimit) {
2004 CreatePool(2, 1); 2019 CreatePool(2, 1);
2005 connect_job_factory_->set_job_type(TestConnectJob::kMockWaitingJob); 2020 connect_job_factory_->set_job_type(TestConnectJob::kMockWaitingJob);
2006 2021
2007 ClientSocketHandle handle; 2022 ClientSocketHandle handle;
2008 TestCompletionCallback callback; 2023 TestCompletionCallback callback;
2009 int rv = handle.Init("a", 2024 int rv = handle.Init("a",
(...skipping 2094 matching lines...) Expand 10 before | Expand all | Expand 10 after
4104 request(1)->handle()->Reset(); 4119 request(1)->handle()->Reset();
4105 ASSERT_EQ(1, pool_->NumConnectJobsInGroup("a")); 4120 ASSERT_EQ(1, pool_->NumConnectJobsInGroup("a"));
4106 4121
4107 EXPECT_EQ(OK, request(2)->WaitForResult()); 4122 EXPECT_EQ(OK, request(2)->WaitForResult());
4108 EXPECT_FALSE(request(1)->have_result()); 4123 EXPECT_FALSE(request(1)->have_result());
4109 } 4124 }
4110 4125
4111 } // namespace 4126 } // namespace
4112 4127
4113 } // namespace net 4128 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/client_socket_pool_base.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698