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

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

Issue 1580903002: Convert ignore_limits from a SocketParam to a socket request argument. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: RespectLimits Created 4 years, 11 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/socks_client_socket_pool.cc ('k') | net/socket/ssl_client_socket_pool.h » ('j') | 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/socks_client_socket_pool.h" 5 #include "net/socket/socks_client_socket_pool.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "net/base/load_timing_info.h" 10 #include "net/base/load_timing_info.h"
(...skipping 25 matching lines...) Expand all
36 EXPECT_FALSE(load_timing_info.socket_reused); 36 EXPECT_FALSE(load_timing_info.socket_reused);
37 37
38 ExpectConnectTimingHasTimes(load_timing_info.connect_timing, 38 ExpectConnectTimingHasTimes(load_timing_info.connect_timing,
39 CONNECT_TIMING_HAS_CONNECT_TIMES_ONLY); 39 CONNECT_TIMING_HAS_CONNECT_TIMES_ONLY);
40 ExpectLoadTimingHasOnlyConnectionTimes(load_timing_info); 40 ExpectLoadTimingHasOnlyConnectionTimes(load_timing_info);
41 } 41 }
42 42
43 43
44 scoped_refptr<TransportSocketParams> CreateProxyHostParams() { 44 scoped_refptr<TransportSocketParams> CreateProxyHostParams() {
45 return new TransportSocketParams( 45 return new TransportSocketParams(
46 HostPortPair("proxy", 80), false, false, OnHostResolutionCallback(), 46 HostPortPair("proxy", 80), false, OnHostResolutionCallback(),
47 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT); 47 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT);
48 } 48 }
49 49
50 scoped_refptr<SOCKSSocketParams> CreateSOCKSv4Params() { 50 scoped_refptr<SOCKSSocketParams> CreateSOCKSv4Params() {
51 return new SOCKSSocketParams( 51 return new SOCKSSocketParams(
52 CreateProxyHostParams(), false /* socks_v5 */, 52 CreateProxyHostParams(), false /* socks_v5 */,
53 HostPortPair("host", 80)); 53 HostPortPair("host", 80));
54 } 54 }
55 55
56 scoped_refptr<SOCKSSocketParams> CreateSOCKSv5Params() { 56 scoped_refptr<SOCKSSocketParams> CreateSOCKSv5Params() {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 pool_(kMaxSockets, 95 pool_(kMaxSockets,
96 kMaxSocketsPerGroup, 96 kMaxSocketsPerGroup,
97 &host_resolver_, 97 &host_resolver_,
98 &transport_socket_pool_, 98 &transport_socket_pool_,
99 NULL) {} 99 NULL) {}
100 100
101 ~SOCKSClientSocketPoolTest() override {} 101 ~SOCKSClientSocketPoolTest() override {}
102 102
103 int StartRequestV5(const std::string& group_name, RequestPriority priority) { 103 int StartRequestV5(const std::string& group_name, RequestPriority priority) {
104 return test_base_.StartRequestUsingPool( 104 return test_base_.StartRequestUsingPool(
105 &pool_, group_name, priority, CreateSOCKSv5Params()); 105 &pool_, group_name, priority, ClientSocketPool::RespectLimits::ENABLED,
106 CreateSOCKSv5Params());
106 } 107 }
107 108
108 int GetOrderOfRequest(size_t index) const { 109 int GetOrderOfRequest(size_t index) const {
109 return test_base_.GetOrderOfRequest(index); 110 return test_base_.GetOrderOfRequest(index);
110 } 111 }
111 112
112 std::vector<scoped_ptr<TestSocketRequest>>* requests() { 113 std::vector<scoped_ptr<TestSocketRequest>>* requests() {
113 return test_base_.requests(); 114 return test_base_.requests();
114 } 115 }
115 116
116 MockClientSocketFactory transport_client_socket_factory_; 117 MockClientSocketFactory transport_client_socket_factory_;
117 MockTransportClientSocketPool transport_socket_pool_; 118 MockTransportClientSocketPool transport_socket_pool_;
118 119
119 MockHostResolver host_resolver_; 120 MockHostResolver host_resolver_;
120 SOCKSClientSocketPool pool_; 121 SOCKSClientSocketPool pool_;
121 ClientSocketPoolTest test_base_; 122 ClientSocketPoolTest test_base_;
122 }; 123 };
123 124
124 TEST_F(SOCKSClientSocketPoolTest, Simple) { 125 TEST_F(SOCKSClientSocketPoolTest, Simple) {
125 SOCKS5MockData data(SYNCHRONOUS); 126 SOCKS5MockData data(SYNCHRONOUS);
126 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK)); 127 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK));
127 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider()); 128 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider());
128 129
129 ClientSocketHandle handle; 130 ClientSocketHandle handle;
130 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, CompletionCallback(), 131 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW,
131 &pool_, BoundNetLog()); 132 ClientSocketPool::RespectLimits::ENABLED,
133 CompletionCallback(), &pool_, BoundNetLog());
132 EXPECT_EQ(OK, rv); 134 EXPECT_EQ(OK, rv);
133 EXPECT_TRUE(handle.is_initialized()); 135 EXPECT_TRUE(handle.is_initialized());
134 EXPECT_TRUE(handle.socket()); 136 EXPECT_TRUE(handle.socket());
135 TestLoadTimingInfo(handle); 137 TestLoadTimingInfo(handle);
136 } 138 }
137 139
138 // Make sure that SOCKSConnectJob passes on its priority to its 140 // Make sure that SOCKSConnectJob passes on its priority to its
139 // socket request on Init. 141 // socket request on Init.
140 TEST_F(SOCKSClientSocketPoolTest, SetSocketRequestPriorityOnInit) { 142 TEST_F(SOCKSClientSocketPoolTest, SetSocketRequestPriorityOnInit) {
141 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) { 143 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) {
142 RequestPriority priority = static_cast<RequestPriority>(i); 144 RequestPriority priority = static_cast<RequestPriority>(i);
143 SOCKS5MockData data(SYNCHRONOUS); 145 SOCKS5MockData data(SYNCHRONOUS);
144 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK)); 146 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK));
145 transport_client_socket_factory_.AddSocketDataProvider( 147 transport_client_socket_factory_.AddSocketDataProvider(
146 data.data_provider()); 148 data.data_provider());
147 149
148 ClientSocketHandle handle; 150 ClientSocketHandle handle;
149 EXPECT_EQ(OK, 151 EXPECT_EQ(OK, handle.Init("a", CreateSOCKSv5Params(), priority,
150 handle.Init("a", CreateSOCKSv5Params(), priority, 152 ClientSocketPool::RespectLimits::ENABLED,
151 CompletionCallback(), &pool_, BoundNetLog())); 153 CompletionCallback(), &pool_, BoundNetLog()));
152 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority()); 154 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority());
153 handle.socket()->Disconnect(); 155 handle.socket()->Disconnect();
154 } 156 }
155 } 157 }
156 158
157 // Make sure that SOCKSConnectJob passes on its priority to its 159 // Make sure that SOCKSConnectJob passes on its priority to its
158 // HostResolver request (for non-SOCKS5) on Init. 160 // HostResolver request (for non-SOCKS5) on Init.
159 TEST_F(SOCKSClientSocketPoolTest, SetResolvePriorityOnInit) { 161 TEST_F(SOCKSClientSocketPoolTest, SetResolvePriorityOnInit) {
160 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) { 162 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) {
161 RequestPriority priority = static_cast<RequestPriority>(i); 163 RequestPriority priority = static_cast<RequestPriority>(i);
162 SOCKS5MockData data(SYNCHRONOUS); 164 SOCKS5MockData data(SYNCHRONOUS);
163 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK)); 165 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK));
164 transport_client_socket_factory_.AddSocketDataProvider( 166 transport_client_socket_factory_.AddSocketDataProvider(
165 data.data_provider()); 167 data.data_provider());
166 168
167 ClientSocketHandle handle; 169 ClientSocketHandle handle;
168 EXPECT_EQ(ERR_IO_PENDING, 170 EXPECT_EQ(ERR_IO_PENDING,
169 handle.Init("a", CreateSOCKSv4Params(), priority, 171 handle.Init("a", CreateSOCKSv4Params(), priority,
172 ClientSocketPool::RespectLimits::ENABLED,
170 CompletionCallback(), &pool_, BoundNetLog())); 173 CompletionCallback(), &pool_, BoundNetLog()));
171 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority()); 174 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority());
172 EXPECT_EQ(priority, host_resolver_.last_request_priority()); 175 EXPECT_EQ(priority, host_resolver_.last_request_priority());
173 EXPECT_TRUE(handle.socket() == NULL); 176 EXPECT_TRUE(handle.socket() == NULL);
174 } 177 }
175 } 178 }
176 179
177 TEST_F(SOCKSClientSocketPoolTest, Async) { 180 TEST_F(SOCKSClientSocketPoolTest, Async) {
178 SOCKS5MockData data(ASYNC); 181 SOCKS5MockData data(ASYNC);
179 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider()); 182 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider());
180 183
181 TestCompletionCallback callback; 184 TestCompletionCallback callback;
182 ClientSocketHandle handle; 185 ClientSocketHandle handle;
183 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, callback.callback(), 186 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW,
184 &pool_, BoundNetLog()); 187 ClientSocketPool::RespectLimits::ENABLED,
188 callback.callback(), &pool_, BoundNetLog());
185 EXPECT_EQ(ERR_IO_PENDING, rv); 189 EXPECT_EQ(ERR_IO_PENDING, rv);
186 EXPECT_FALSE(handle.is_initialized()); 190 EXPECT_FALSE(handle.is_initialized());
187 EXPECT_FALSE(handle.socket()); 191 EXPECT_FALSE(handle.socket());
188 192
189 EXPECT_EQ(OK, callback.WaitForResult()); 193 EXPECT_EQ(OK, callback.WaitForResult());
190 EXPECT_TRUE(handle.is_initialized()); 194 EXPECT_TRUE(handle.is_initialized());
191 EXPECT_TRUE(handle.socket()); 195 EXPECT_TRUE(handle.socket());
192 TestLoadTimingInfo(handle); 196 TestLoadTimingInfo(handle);
193 } 197 }
194 198
195 TEST_F(SOCKSClientSocketPoolTest, TransportConnectError) { 199 TEST_F(SOCKSClientSocketPoolTest, TransportConnectError) {
196 StaticSocketDataProvider socket_data; 200 StaticSocketDataProvider socket_data;
197 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, 201 socket_data.set_connect_data(MockConnect(SYNCHRONOUS,
198 ERR_CONNECTION_REFUSED)); 202 ERR_CONNECTION_REFUSED));
199 transport_client_socket_factory_.AddSocketDataProvider(&socket_data); 203 transport_client_socket_factory_.AddSocketDataProvider(&socket_data);
200 204
201 ClientSocketHandle handle; 205 ClientSocketHandle handle;
202 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, CompletionCallback(), 206 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW,
203 &pool_, BoundNetLog()); 207 ClientSocketPool::RespectLimits::ENABLED,
208 CompletionCallback(), &pool_, BoundNetLog());
204 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, rv); 209 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, rv);
205 EXPECT_FALSE(handle.is_initialized()); 210 EXPECT_FALSE(handle.is_initialized());
206 EXPECT_FALSE(handle.socket()); 211 EXPECT_FALSE(handle.socket());
207 } 212 }
208 213
209 TEST_F(SOCKSClientSocketPoolTest, AsyncTransportConnectError) { 214 TEST_F(SOCKSClientSocketPoolTest, AsyncTransportConnectError) {
210 StaticSocketDataProvider socket_data; 215 StaticSocketDataProvider socket_data;
211 socket_data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); 216 socket_data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED));
212 transport_client_socket_factory_.AddSocketDataProvider(&socket_data); 217 transport_client_socket_factory_.AddSocketDataProvider(&socket_data);
213 218
214 TestCompletionCallback callback; 219 TestCompletionCallback callback;
215 ClientSocketHandle handle; 220 ClientSocketHandle handle;
216 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, callback.callback(), 221 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW,
217 &pool_, BoundNetLog()); 222 ClientSocketPool::RespectLimits::ENABLED,
223 callback.callback(), &pool_, BoundNetLog());
218 EXPECT_EQ(ERR_IO_PENDING, rv); 224 EXPECT_EQ(ERR_IO_PENDING, rv);
219 EXPECT_FALSE(handle.is_initialized()); 225 EXPECT_FALSE(handle.is_initialized());
220 EXPECT_FALSE(handle.socket()); 226 EXPECT_FALSE(handle.socket());
221 227
222 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback.WaitForResult()); 228 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback.WaitForResult());
223 EXPECT_FALSE(handle.is_initialized()); 229 EXPECT_FALSE(handle.is_initialized());
224 EXPECT_FALSE(handle.socket()); 230 EXPECT_FALSE(handle.socket());
225 } 231 }
226 232
227 TEST_F(SOCKSClientSocketPoolTest, SOCKSConnectError) { 233 TEST_F(SOCKSClientSocketPoolTest, SOCKSConnectError) {
228 MockRead failed_read[] = { 234 MockRead failed_read[] = {
229 MockRead(SYNCHRONOUS, 0), 235 MockRead(SYNCHRONOUS, 0),
230 }; 236 };
231 StaticSocketDataProvider socket_data( 237 StaticSocketDataProvider socket_data(
232 failed_read, arraysize(failed_read), NULL, 0); 238 failed_read, arraysize(failed_read), NULL, 0);
233 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 239 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
234 transport_client_socket_factory_.AddSocketDataProvider(&socket_data); 240 transport_client_socket_factory_.AddSocketDataProvider(&socket_data);
235 241
236 ClientSocketHandle handle; 242 ClientSocketHandle handle;
237 EXPECT_EQ(0, transport_socket_pool_.release_count()); 243 EXPECT_EQ(0, transport_socket_pool_.release_count());
238 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, CompletionCallback(), 244 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW,
239 &pool_, BoundNetLog()); 245 ClientSocketPool::RespectLimits::ENABLED,
246 CompletionCallback(), &pool_, BoundNetLog());
240 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, rv); 247 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, rv);
241 EXPECT_FALSE(handle.is_initialized()); 248 EXPECT_FALSE(handle.is_initialized());
242 EXPECT_FALSE(handle.socket()); 249 EXPECT_FALSE(handle.socket());
243 EXPECT_EQ(1, transport_socket_pool_.release_count()); 250 EXPECT_EQ(1, transport_socket_pool_.release_count());
244 } 251 }
245 252
246 TEST_F(SOCKSClientSocketPoolTest, AsyncSOCKSConnectError) { 253 TEST_F(SOCKSClientSocketPoolTest, AsyncSOCKSConnectError) {
247 MockRead failed_read[] = { 254 MockRead failed_read[] = {
248 MockRead(ASYNC, 0), 255 MockRead(ASYNC, 0),
249 }; 256 };
250 StaticSocketDataProvider socket_data( 257 StaticSocketDataProvider socket_data(
251 failed_read, arraysize(failed_read), NULL, 0); 258 failed_read, arraysize(failed_read), NULL, 0);
252 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 259 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
253 transport_client_socket_factory_.AddSocketDataProvider(&socket_data); 260 transport_client_socket_factory_.AddSocketDataProvider(&socket_data);
254 261
255 TestCompletionCallback callback; 262 TestCompletionCallback callback;
256 ClientSocketHandle handle; 263 ClientSocketHandle handle;
257 EXPECT_EQ(0, transport_socket_pool_.release_count()); 264 EXPECT_EQ(0, transport_socket_pool_.release_count());
258 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, callback.callback(), 265 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW,
259 &pool_, BoundNetLog()); 266 ClientSocketPool::RespectLimits::ENABLED,
267 callback.callback(), &pool_, BoundNetLog());
260 EXPECT_EQ(ERR_IO_PENDING, rv); 268 EXPECT_EQ(ERR_IO_PENDING, rv);
261 EXPECT_FALSE(handle.is_initialized()); 269 EXPECT_FALSE(handle.is_initialized());
262 EXPECT_FALSE(handle.socket()); 270 EXPECT_FALSE(handle.socket());
263 271
264 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, callback.WaitForResult()); 272 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, callback.WaitForResult());
265 EXPECT_FALSE(handle.is_initialized()); 273 EXPECT_FALSE(handle.is_initialized());
266 EXPECT_FALSE(handle.socket()); 274 EXPECT_FALSE(handle.socket());
267 EXPECT_EQ(1, transport_socket_pool_.release_count()); 275 EXPECT_EQ(1, transport_socket_pool_.release_count());
268 } 276 }
269 277
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 342
335 (*requests())[0]->handle()->Reset(); 343 (*requests())[0]->handle()->Reset();
336 (*requests())[1]->handle()->Reset(); 344 (*requests())[1]->handle()->Reset();
337 } 345 }
338 346
339 // It would be nice to also test the timeouts in SOCKSClientSocketPool. 347 // It would be nice to also test the timeouts in SOCKSClientSocketPool.
340 348
341 } // namespace 349 } // namespace
342 350
343 } // namespace net 351 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/socks_client_socket_pool.cc ('k') | net/socket/ssl_client_socket_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698