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

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

Issue 2109503009: Refactor net tests to use GMock matchers for checking net::Error results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert changes to contents.txt files Created 4 years, 5 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/socks5_client_socket_unittest.cc ('k') | net/socket/socks_client_socket_unittest.cc » ('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/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
11 #include "net/base/load_timing_info.h" 11 #include "net/base/load_timing_info.h"
12 #include "net/base/load_timing_info_test_util.h" 12 #include "net/base/load_timing_info_test_util.h"
13 #include "net/base/net_errors.h" 13 #include "net/base/net_errors.h"
14 #include "net/base/test_completion_callback.h" 14 #include "net/base/test_completion_callback.h"
15 #include "net/dns/mock_host_resolver.h" 15 #include "net/dns/mock_host_resolver.h"
16 #include "net/socket/client_socket_factory.h" 16 #include "net/socket/client_socket_factory.h"
17 #include "net/socket/client_socket_handle.h" 17 #include "net/socket/client_socket_handle.h"
18 #include "net/socket/socket_test_util.h" 18 #include "net/socket/socket_test_util.h"
19 #include "net/test/gtest_util.h"
20 #include "testing/gmock/include/gmock/gmock.h"
19 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
20 22
23 using net::test::IsError;
24 using net::test::IsOk;
25
21 namespace net { 26 namespace net {
22 27
23 namespace { 28 namespace {
24 29
25 const int kMaxSockets = 32; 30 const int kMaxSockets = 32;
26 const int kMaxSocketsPerGroup = 6; 31 const int kMaxSocketsPerGroup = 6;
27 32
28 // Make sure |handle|'s load times are set correctly. Only connect times should 33 // Make sure |handle|'s load times are set correctly. Only connect times should
29 // be set. 34 // be set.
30 void TestLoadTimingInfo(const ClientSocketHandle& handle) { 35 void TestLoadTimingInfo(const ClientSocketHandle& handle) {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 131
127 TEST_F(SOCKSClientSocketPoolTest, Simple) { 132 TEST_F(SOCKSClientSocketPoolTest, Simple) {
128 SOCKS5MockData data(SYNCHRONOUS); 133 SOCKS5MockData data(SYNCHRONOUS);
129 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK)); 134 data.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK));
130 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider()); 135 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider());
131 136
132 ClientSocketHandle handle; 137 ClientSocketHandle handle;
133 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, 138 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW,
134 ClientSocketPool::RespectLimits::ENABLED, 139 ClientSocketPool::RespectLimits::ENABLED,
135 CompletionCallback(), &pool_, BoundNetLog()); 140 CompletionCallback(), &pool_, BoundNetLog());
136 EXPECT_EQ(OK, rv); 141 EXPECT_THAT(rv, IsOk());
137 EXPECT_TRUE(handle.is_initialized()); 142 EXPECT_TRUE(handle.is_initialized());
138 EXPECT_TRUE(handle.socket()); 143 EXPECT_TRUE(handle.socket());
139 TestLoadTimingInfo(handle); 144 TestLoadTimingInfo(handle);
140 } 145 }
141 146
142 // Make sure that SOCKSConnectJob passes on its priority to its 147 // Make sure that SOCKSConnectJob passes on its priority to its
143 // socket request on Init. 148 // socket request on Init.
144 TEST_F(SOCKSClientSocketPoolTest, SetSocketRequestPriorityOnInit) { 149 TEST_F(SOCKSClientSocketPoolTest, SetSocketRequestPriorityOnInit) {
145 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) { 150 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) {
146 RequestPriority priority = static_cast<RequestPriority>(i); 151 RequestPriority priority = static_cast<RequestPriority>(i);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 186
182 TEST_F(SOCKSClientSocketPoolTest, Async) { 187 TEST_F(SOCKSClientSocketPoolTest, Async) {
183 SOCKS5MockData data(ASYNC); 188 SOCKS5MockData data(ASYNC);
184 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider()); 189 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider());
185 190
186 TestCompletionCallback callback; 191 TestCompletionCallback callback;
187 ClientSocketHandle handle; 192 ClientSocketHandle handle;
188 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, 193 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW,
189 ClientSocketPool::RespectLimits::ENABLED, 194 ClientSocketPool::RespectLimits::ENABLED,
190 callback.callback(), &pool_, BoundNetLog()); 195 callback.callback(), &pool_, BoundNetLog());
191 EXPECT_EQ(ERR_IO_PENDING, rv); 196 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
192 EXPECT_FALSE(handle.is_initialized()); 197 EXPECT_FALSE(handle.is_initialized());
193 EXPECT_FALSE(handle.socket()); 198 EXPECT_FALSE(handle.socket());
194 199
195 EXPECT_EQ(OK, callback.WaitForResult()); 200 EXPECT_THAT(callback.WaitForResult(), IsOk());
196 EXPECT_TRUE(handle.is_initialized()); 201 EXPECT_TRUE(handle.is_initialized());
197 EXPECT_TRUE(handle.socket()); 202 EXPECT_TRUE(handle.socket());
198 TestLoadTimingInfo(handle); 203 TestLoadTimingInfo(handle);
199 } 204 }
200 205
201 TEST_F(SOCKSClientSocketPoolTest, TransportConnectError) { 206 TEST_F(SOCKSClientSocketPoolTest, TransportConnectError) {
202 StaticSocketDataProvider socket_data; 207 StaticSocketDataProvider socket_data;
203 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, 208 socket_data.set_connect_data(MockConnect(SYNCHRONOUS,
204 ERR_CONNECTION_REFUSED)); 209 ERR_CONNECTION_REFUSED));
205 transport_client_socket_factory_.AddSocketDataProvider(&socket_data); 210 transport_client_socket_factory_.AddSocketDataProvider(&socket_data);
206 211
207 ClientSocketHandle handle; 212 ClientSocketHandle handle;
208 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, 213 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW,
209 ClientSocketPool::RespectLimits::ENABLED, 214 ClientSocketPool::RespectLimits::ENABLED,
210 CompletionCallback(), &pool_, BoundNetLog()); 215 CompletionCallback(), &pool_, BoundNetLog());
211 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, rv); 216 EXPECT_THAT(rv, IsError(ERR_PROXY_CONNECTION_FAILED));
212 EXPECT_FALSE(handle.is_initialized()); 217 EXPECT_FALSE(handle.is_initialized());
213 EXPECT_FALSE(handle.socket()); 218 EXPECT_FALSE(handle.socket());
214 } 219 }
215 220
216 TEST_F(SOCKSClientSocketPoolTest, AsyncTransportConnectError) { 221 TEST_F(SOCKSClientSocketPoolTest, AsyncTransportConnectError) {
217 StaticSocketDataProvider socket_data; 222 StaticSocketDataProvider socket_data;
218 socket_data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); 223 socket_data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED));
219 transport_client_socket_factory_.AddSocketDataProvider(&socket_data); 224 transport_client_socket_factory_.AddSocketDataProvider(&socket_data);
220 225
221 TestCompletionCallback callback; 226 TestCompletionCallback callback;
222 ClientSocketHandle handle; 227 ClientSocketHandle handle;
223 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, 228 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW,
224 ClientSocketPool::RespectLimits::ENABLED, 229 ClientSocketPool::RespectLimits::ENABLED,
225 callback.callback(), &pool_, BoundNetLog()); 230 callback.callback(), &pool_, BoundNetLog());
226 EXPECT_EQ(ERR_IO_PENDING, rv); 231 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
227 EXPECT_FALSE(handle.is_initialized()); 232 EXPECT_FALSE(handle.is_initialized());
228 EXPECT_FALSE(handle.socket()); 233 EXPECT_FALSE(handle.socket());
229 234
230 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, callback.WaitForResult()); 235 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_PROXY_CONNECTION_FAILED));
231 EXPECT_FALSE(handle.is_initialized()); 236 EXPECT_FALSE(handle.is_initialized());
232 EXPECT_FALSE(handle.socket()); 237 EXPECT_FALSE(handle.socket());
233 } 238 }
234 239
235 TEST_F(SOCKSClientSocketPoolTest, SOCKSConnectError) { 240 TEST_F(SOCKSClientSocketPoolTest, SOCKSConnectError) {
236 MockRead failed_read[] = { 241 MockRead failed_read[] = {
237 MockRead(SYNCHRONOUS, 0), 242 MockRead(SYNCHRONOUS, 0),
238 }; 243 };
239 StaticSocketDataProvider socket_data( 244 StaticSocketDataProvider socket_data(
240 failed_read, arraysize(failed_read), NULL, 0); 245 failed_read, arraysize(failed_read), NULL, 0);
241 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 246 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
242 transport_client_socket_factory_.AddSocketDataProvider(&socket_data); 247 transport_client_socket_factory_.AddSocketDataProvider(&socket_data);
243 248
244 ClientSocketHandle handle; 249 ClientSocketHandle handle;
245 EXPECT_EQ(0, transport_socket_pool_.release_count()); 250 EXPECT_EQ(0, transport_socket_pool_.release_count());
246 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, 251 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW,
247 ClientSocketPool::RespectLimits::ENABLED, 252 ClientSocketPool::RespectLimits::ENABLED,
248 CompletionCallback(), &pool_, BoundNetLog()); 253 CompletionCallback(), &pool_, BoundNetLog());
249 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, rv); 254 EXPECT_THAT(rv, IsError(ERR_SOCKS_CONNECTION_FAILED));
250 EXPECT_FALSE(handle.is_initialized()); 255 EXPECT_FALSE(handle.is_initialized());
251 EXPECT_FALSE(handle.socket()); 256 EXPECT_FALSE(handle.socket());
252 EXPECT_EQ(1, transport_socket_pool_.release_count()); 257 EXPECT_EQ(1, transport_socket_pool_.release_count());
253 } 258 }
254 259
255 TEST_F(SOCKSClientSocketPoolTest, AsyncSOCKSConnectError) { 260 TEST_F(SOCKSClientSocketPoolTest, AsyncSOCKSConnectError) {
256 MockRead failed_read[] = { 261 MockRead failed_read[] = {
257 MockRead(ASYNC, 0), 262 MockRead(ASYNC, 0),
258 }; 263 };
259 StaticSocketDataProvider socket_data( 264 StaticSocketDataProvider socket_data(
260 failed_read, arraysize(failed_read), NULL, 0); 265 failed_read, arraysize(failed_read), NULL, 0);
261 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 266 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
262 transport_client_socket_factory_.AddSocketDataProvider(&socket_data); 267 transport_client_socket_factory_.AddSocketDataProvider(&socket_data);
263 268
264 TestCompletionCallback callback; 269 TestCompletionCallback callback;
265 ClientSocketHandle handle; 270 ClientSocketHandle handle;
266 EXPECT_EQ(0, transport_socket_pool_.release_count()); 271 EXPECT_EQ(0, transport_socket_pool_.release_count());
267 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW, 272 int rv = handle.Init("a", CreateSOCKSv5Params(), LOW,
268 ClientSocketPool::RespectLimits::ENABLED, 273 ClientSocketPool::RespectLimits::ENABLED,
269 callback.callback(), &pool_, BoundNetLog()); 274 callback.callback(), &pool_, BoundNetLog());
270 EXPECT_EQ(ERR_IO_PENDING, rv); 275 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
271 EXPECT_FALSE(handle.is_initialized()); 276 EXPECT_FALSE(handle.is_initialized());
272 EXPECT_FALSE(handle.socket()); 277 EXPECT_FALSE(handle.socket());
273 278
274 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, callback.WaitForResult()); 279 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_SOCKS_CONNECTION_FAILED));
275 EXPECT_FALSE(handle.is_initialized()); 280 EXPECT_FALSE(handle.is_initialized());
276 EXPECT_FALSE(handle.socket()); 281 EXPECT_FALSE(handle.socket());
277 EXPECT_EQ(1, transport_socket_pool_.release_count()); 282 EXPECT_EQ(1, transport_socket_pool_.release_count());
278 } 283 }
279 284
280 TEST_F(SOCKSClientSocketPoolTest, CancelDuringTransportConnect) { 285 TEST_F(SOCKSClientSocketPoolTest, CancelDuringTransportConnect) {
281 SOCKS5MockData data(SYNCHRONOUS); 286 SOCKS5MockData data(SYNCHRONOUS);
282 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider()); 287 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider());
283 // We need two connections because the pool base lets one cancelled 288 // We need two connections because the pool base lets one cancelled
284 // connect job proceed for potential future use. 289 // connect job proceed for potential future use.
285 SOCKS5MockData data2(SYNCHRONOUS); 290 SOCKS5MockData data2(SYNCHRONOUS);
286 transport_client_socket_factory_.AddSocketDataProvider(data2.data_provider()); 291 transport_client_socket_factory_.AddSocketDataProvider(data2.data_provider());
287 292
288 EXPECT_EQ(0, transport_socket_pool_.cancel_count()); 293 EXPECT_EQ(0, transport_socket_pool_.cancel_count());
289 int rv = StartRequestV5("a", LOW); 294 int rv = StartRequestV5("a", LOW);
290 EXPECT_EQ(ERR_IO_PENDING, rv); 295 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
291 296
292 rv = StartRequestV5("a", LOW); 297 rv = StartRequestV5("a", LOW);
293 EXPECT_EQ(ERR_IO_PENDING, rv); 298 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
294 299
295 pool_.CancelRequest("a", (*requests())[0]->handle()); 300 pool_.CancelRequest("a", (*requests())[0]->handle());
296 pool_.CancelRequest("a", (*requests())[1]->handle()); 301 pool_.CancelRequest("a", (*requests())[1]->handle());
297 // Requests in the connect phase don't actually get cancelled. 302 // Requests in the connect phase don't actually get cancelled.
298 EXPECT_EQ(0, transport_socket_pool_.cancel_count()); 303 EXPECT_EQ(0, transport_socket_pool_.cancel_count());
299 304
300 // Now wait for the TCP sockets to connect. 305 // Now wait for the TCP sockets to connect.
301 base::RunLoop().RunUntilIdle(); 306 base::RunLoop().RunUntilIdle();
302 307
303 EXPECT_EQ(ClientSocketPoolTest::kRequestNotFound, GetOrderOfRequest(1)); 308 EXPECT_EQ(ClientSocketPoolTest::kRequestNotFound, GetOrderOfRequest(1));
(...skipping 11 matching lines...) Expand all
315 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider()); 320 transport_client_socket_factory_.AddSocketDataProvider(data.data_provider());
316 // We need two connections because the pool base lets one cancelled 321 // We need two connections because the pool base lets one cancelled
317 // connect job proceed for potential future use. 322 // connect job proceed for potential future use.
318 SOCKS5MockData data2(ASYNC); 323 SOCKS5MockData data2(ASYNC);
319 data2.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK)); 324 data2.data_provider()->set_connect_data(MockConnect(SYNCHRONOUS, OK));
320 transport_client_socket_factory_.AddSocketDataProvider(data2.data_provider()); 325 transport_client_socket_factory_.AddSocketDataProvider(data2.data_provider());
321 326
322 EXPECT_EQ(0, transport_socket_pool_.cancel_count()); 327 EXPECT_EQ(0, transport_socket_pool_.cancel_count());
323 EXPECT_EQ(0, transport_socket_pool_.release_count()); 328 EXPECT_EQ(0, transport_socket_pool_.release_count());
324 int rv = StartRequestV5("a", LOW); 329 int rv = StartRequestV5("a", LOW);
325 EXPECT_EQ(ERR_IO_PENDING, rv); 330 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
326 331
327 rv = StartRequestV5("a", LOW); 332 rv = StartRequestV5("a", LOW);
328 EXPECT_EQ(ERR_IO_PENDING, rv); 333 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
329 334
330 pool_.CancelRequest("a", (*requests())[0]->handle()); 335 pool_.CancelRequest("a", (*requests())[0]->handle());
331 pool_.CancelRequest("a", (*requests())[1]->handle()); 336 pool_.CancelRequest("a", (*requests())[1]->handle());
332 EXPECT_EQ(0, transport_socket_pool_.cancel_count()); 337 EXPECT_EQ(0, transport_socket_pool_.cancel_count());
333 // Requests in the connect phase don't actually get cancelled. 338 // Requests in the connect phase don't actually get cancelled.
334 EXPECT_EQ(0, transport_socket_pool_.release_count()); 339 EXPECT_EQ(0, transport_socket_pool_.release_count());
335 340
336 // Now wait for the async data to reach the SOCKS connect jobs. 341 // Now wait for the async data to reach the SOCKS connect jobs.
337 base::RunLoop().RunUntilIdle(); 342 base::RunLoop().RunUntilIdle();
338 343
339 EXPECT_EQ(ClientSocketPoolTest::kRequestNotFound, GetOrderOfRequest(1)); 344 EXPECT_EQ(ClientSocketPoolTest::kRequestNotFound, GetOrderOfRequest(1));
340 EXPECT_EQ(ClientSocketPoolTest::kRequestNotFound, GetOrderOfRequest(2)); 345 EXPECT_EQ(ClientSocketPoolTest::kRequestNotFound, GetOrderOfRequest(2));
341 EXPECT_EQ(0, transport_socket_pool_.cancel_count()); 346 EXPECT_EQ(0, transport_socket_pool_.cancel_count());
342 EXPECT_EQ(0, transport_socket_pool_.release_count()); 347 EXPECT_EQ(0, transport_socket_pool_.release_count());
343 EXPECT_EQ(2, pool_.IdleSocketCount()); 348 EXPECT_EQ(2, pool_.IdleSocketCount());
344 349
345 (*requests())[0]->handle()->Reset(); 350 (*requests())[0]->handle()->Reset();
346 (*requests())[1]->handle()->Reset(); 351 (*requests())[1]->handle()->Reset();
347 } 352 }
348 353
349 // It would be nice to also test the timeouts in SOCKSClientSocketPool. 354 // It would be nice to also test the timeouts in SOCKSClientSocketPool.
350 355
351 } // namespace 356 } // namespace
352 357
353 } // namespace net 358 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/socks5_client_socket_unittest.cc ('k') | net/socket/socks_client_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698