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

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: Final nit 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
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 callback.callback(),
1968 pool_.get(),
1969 BoundNetLog());
1970 EXPECT_EQ(ERR_IO_PENDING, rv); 1967 EXPECT_EQ(ERR_IO_PENDING, rv);
1968 client_socket_factory_.SetJobLoadState(0, LOAD_STATE_RESOLVING_HOST);
1971 1969
1972 ClientSocketHandle handle2; 1970 ClientSocketHandle handle2;
1973 TestCompletionCallback callback2; 1971 TestCompletionCallback callback2;
1974 rv = handle2.Init("a", 1972 rv = handle2.Init("a", params_, DEFAULT_PRIORITY, callback2.callback(),
1975 params_, 1973 pool_.get(), BoundNetLog());
1976 DEFAULT_PRIORITY,
1977 callback2.callback(),
1978 pool_.get(),
1979 BoundNetLog());
1980 EXPECT_EQ(ERR_IO_PENDING, rv); 1974 EXPECT_EQ(ERR_IO_PENDING, rv);
1975 client_socket_factory_.SetJobLoadState(1, LOAD_STATE_RESOLVING_HOST);
1981 1976
1982 // If the first Job is in an earlier state than the second, the state of 1977 // Check that both handles report the state of the first job.
1983 // the second job should be used for both handles. 1978 EXPECT_EQ(LOAD_STATE_RESOLVING_HOST, handle.GetLoadState());
1984 client_socket_factory_.SetJobLoadState(0, LOAD_STATE_RESOLVING_HOST); 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 changes to LOAD_STATE_CONNECTING.
1985 EXPECT_EQ(LOAD_STATE_CONNECTING, handle.GetLoadState()); 1984 EXPECT_EQ(LOAD_STATE_CONNECTING, handle.GetLoadState());
1986 EXPECT_EQ(LOAD_STATE_CONNECTING, handle2.GetLoadState()); 1985 EXPECT_EQ(LOAD_STATE_CONNECTING, handle2.GetLoadState());
1986 }
1987 1987
1988 // If the second Job is in an earlier state than the second, the state of 1988 // Test that the second connection request does not affect the pool's load
1989 // the first job should be used for both handles. 1989 // status.
1990 client_socket_factory_.SetJobLoadState(0, LOAD_STATE_SSL_HANDSHAKE); 1990 TEST_F(ClientSocketPoolBaseTest, LoadStateTwoRequestsChangeSecondRequestState) {
1991 // One request is farther 1991 CreatePool(2, 2);
1992 EXPECT_EQ(LOAD_STATE_SSL_HANDSHAKE, handle.GetLoadState()); 1992 connect_job_factory_->set_job_type(TestConnectJob::kMockWaitingJob);
1993 EXPECT_EQ(LOAD_STATE_SSL_HANDSHAKE, handle2.GetLoadState());
1994 1993
1995 // Farthest along job connects and the first request gets the socket. The 1994 ClientSocketHandle handle;
1995 TestCompletionCallback callback;
1996 int rv = handle.Init("a", params_, DEFAULT_PRIORITY, callback.callback(),
1997 pool_.get(), BoundNetLog());
1998 EXPECT_EQ(ERR_IO_PENDING, rv);
1999 client_socket_factory_.SetJobLoadState(0, LOAD_STATE_RESOLVING_HOST);
mmenke 2015/04/21 14:27:33 Suggest just removing this line and making sure th
haavardm 2015/04/21 15:14:08 Fair enough. Done.
2000
2001 ClientSocketHandle handle2;
2002 TestCompletionCallback callback2;
2003 rv = handle2.Init("a", params_, DEFAULT_PRIORITY, callback2.callback(),
2004 pool_.get(), BoundNetLog());
2005 EXPECT_EQ(ERR_IO_PENDING, rv);
2006 client_socket_factory_.SetJobLoadState(1, LOAD_STATE_RESOLVING_HOST);
2007
2008 EXPECT_EQ(LOAD_STATE_RESOLVING_HOST, handle.GetLoadState());
2009 EXPECT_EQ(LOAD_STATE_RESOLVING_HOST, handle2.GetLoadState());
2010
2011 client_socket_factory_.SetJobLoadState(1, LOAD_STATE_CONNECTING);
2012
2013 // Check that both handles still report the status of the first job.
2014 EXPECT_EQ(LOAD_STATE_RESOLVING_HOST, handle.GetLoadState());
2015 EXPECT_EQ(LOAD_STATE_RESOLVING_HOST, handle2.GetLoadState());
2016
2017 // First job connects and the first request gets the socket. The
1996 // second handle switches to the state of the remaining ConnectJob. 2018 // second handle switches to the state of the remaining ConnectJob.
1997 client_socket_factory_.SignalJob(0); 2019 client_socket_factory_.SignalJob(0);
1998 EXPECT_EQ(OK, callback.WaitForResult()); 2020 EXPECT_EQ(OK, callback.WaitForResult());
1999 EXPECT_EQ(LOAD_STATE_CONNECTING, handle2.GetLoadState()); 2021 EXPECT_EQ(LOAD_STATE_CONNECTING, handle2.GetLoadState());
2000 } 2022 }
2001 2023
2002 // Test GetLoadState in the case the per-group limit is reached. 2024 // Test GetLoadState in the case the per-group limit is reached.
2003 TEST_F(ClientSocketPoolBaseTest, LoadStateGroupLimit) { 2025 TEST_F(ClientSocketPoolBaseTest, LoadStateGroupLimit) {
2004 CreatePool(2, 1); 2026 CreatePool(2, 1);
2005 connect_job_factory_->set_job_type(TestConnectJob::kMockWaitingJob); 2027 connect_job_factory_->set_job_type(TestConnectJob::kMockWaitingJob);
(...skipping 2098 matching lines...) Expand 10 before | Expand all | Expand 10 after
4104 request(1)->handle()->Reset(); 4126 request(1)->handle()->Reset();
4105 ASSERT_EQ(1, pool_->NumConnectJobsInGroup("a")); 4127 ASSERT_EQ(1, pool_->NumConnectJobsInGroup("a"));
4106 4128
4107 EXPECT_EQ(OK, request(2)->WaitForResult()); 4129 EXPECT_EQ(OK, request(2)->WaitForResult());
4108 EXPECT_FALSE(request(1)->have_result()); 4130 EXPECT_FALSE(request(1)->have_result());
4109 } 4131 }
4110 4132
4111 } // namespace 4133 } // namespace
4112 4134
4113 } // namespace net 4135 } // namespace net
OLDNEW
« net/socket/client_socket_pool_base.cc ('K') | « 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