Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |