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

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

Issue 1604042: Improve error messages for bad SocketParams. (Closed)
Patch Set: Address davidben's comments and add to gyp file. Created 10 years, 6 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.h ('k') | net/socket/socks_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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "base/callback.h" 7 #include "base/callback.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/platform_thread.h" 10 #include "base/platform_thread.h"
(...skipping 12 matching lines...) Expand all
23 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
24 24
25 namespace net { 25 namespace net {
26 26
27 namespace { 27 namespace {
28 28
29 const int kDefaultMaxSockets = 4; 29 const int kDefaultMaxSockets = 4;
30 const int kDefaultMaxSocketsPerGroup = 2; 30 const int kDefaultMaxSocketsPerGroup = 2;
31 const net::RequestPriority kDefaultPriority = MEDIUM; 31 const net::RequestPriority kDefaultPriority = MEDIUM;
32 32
33 typedef const void* TestSocketParams; 33 struct TestSocketParams {};
34 typedef ClientSocketPoolBase<TestSocketParams> TestClientSocketPoolBase; 34 typedef ClientSocketPoolBase<TestSocketParams> TestClientSocketPoolBase;
35 35
36 class MockClientSocket : public ClientSocket { 36 class MockClientSocket : public ClientSocket {
37 public: 37 public:
38 MockClientSocket() : connected_(false) {} 38 MockClientSocket() : connected_(false) {}
39 39
40 // Socket methods: 40 // Socket methods:
41 virtual int Read( 41 virtual int Read(
42 IOBuffer* /* buf */, int /* len */, CompletionCallback* /* callback */) { 42 IOBuffer* /* buf */, int /* len */, CompletionCallback* /* callback */) {
43 return ERR_UNEXPECTED; 43 return ERR_UNEXPECTED;
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 unused_idle_socket_timeout, used_idle_socket_timeout, 292 unused_idle_socket_timeout, used_idle_socket_timeout,
293 connect_job_factory, NULL) {} 293 connect_job_factory, NULL) {}
294 294
295 virtual int RequestSocket( 295 virtual int RequestSocket(
296 const std::string& group_name, 296 const std::string& group_name,
297 const void* params, 297 const void* params,
298 net::RequestPriority priority, 298 net::RequestPriority priority,
299 ClientSocketHandle* handle, 299 ClientSocketHandle* handle,
300 CompletionCallback* callback, 300 CompletionCallback* callback,
301 const BoundNetLog& net_log) { 301 const BoundNetLog& net_log) {
302 const TestSocketParams* casted_socket_params =
303 static_cast<const TestSocketParams*>(params);
302 return base_.RequestSocket( 304 return base_.RequestSocket(
303 group_name, params, priority, handle, callback, net_log); 305 group_name, *casted_socket_params, priority, handle, callback, net_log);
304 } 306 }
305 307
306 virtual void CancelRequest( 308 virtual void CancelRequest(
307 const std::string& group_name, 309 const std::string& group_name,
308 const ClientSocketHandle* handle) { 310 const ClientSocketHandle* handle) {
309 base_.CancelRequest(group_name, handle); 311 base_.CancelRequest(group_name, handle);
310 } 312 }
311 313
312 virtual void ReleaseSocket( 314 virtual void ReleaseSocket(
313 const std::string& group_name, 315 const std::string& group_name,
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 pool_ = new TestClientSocketPool(max_sockets, 433 pool_ = new TestClientSocketPool(max_sockets,
432 max_sockets_per_group, 434 max_sockets_per_group,
433 histograms_, 435 histograms_,
434 unused_idle_socket_timeout, 436 unused_idle_socket_timeout,
435 used_idle_socket_timeout, 437 used_idle_socket_timeout,
436 connect_job_factory_); 438 connect_job_factory_);
437 } 439 }
438 440
439 int StartRequest(const std::string& group_name, 441 int StartRequest(const std::string& group_name,
440 net::RequestPriority priority) { 442 net::RequestPriority priority) {
443 TestSocketParams params;
441 return StartRequestUsingPool<TestClientSocketPool, TestSocketParams>( 444 return StartRequestUsingPool<TestClientSocketPool, TestSocketParams>(
442 pool_, group_name, priority, NULL); 445 pool_, group_name, priority, params);
443 } 446 }
444 447
445 virtual void TearDown() { 448 virtual void TearDown() {
446 // We post all of our delayed tasks with a 2ms delay. I.e. they don't 449 // We post all of our delayed tasks with a 2ms delay. I.e. they don't
447 // actually become pending until 2ms after they have been created. In order 450 // actually become pending until 2ms after they have been created. In order
448 // to flush all tasks, we need to wait so that we know there are no 451 // to flush all tasks, we need to wait so that we know there are no
449 // soon-to-be-pending tasks waiting. 452 // soon-to-be-pending tasks waiting.
450 PlatformThread::Sleep(10); 453 PlatformThread::Sleep(10);
451 MessageLoop::current()->RunAllPending(); 454 MessageLoop::current()->RunAllPending();
452 455
(...skipping 14 matching lines...) Expand all
467 }; 470 };
468 471
469 // Helper function which explicitly specifies the template parameters, since 472 // Helper function which explicitly specifies the template parameters, since
470 // the compiler will infer (in this case, incorrectly) that NULL is of type int. 473 // the compiler will infer (in this case, incorrectly) that NULL is of type int.
471 int InitHandle(ClientSocketHandle* handle, 474 int InitHandle(ClientSocketHandle* handle,
472 const std::string& group_name, 475 const std::string& group_name,
473 net::RequestPriority priority, 476 net::RequestPriority priority,
474 CompletionCallback* callback, 477 CompletionCallback* callback,
475 const scoped_refptr<TestClientSocketPool>& pool, 478 const scoped_refptr<TestClientSocketPool>& pool,
476 const BoundNetLog& net_log) { 479 const BoundNetLog& net_log) {
480 TestSocketParams params;
477 return handle->Init<TestSocketParams, TestClientSocketPool>( 481 return handle->Init<TestSocketParams, TestClientSocketPool>(
478 group_name, NULL, priority, callback, pool, net_log); 482 group_name, params, priority, callback, pool, net_log);
479 } 483 }
480 484
481 // Even though a timeout is specified, it doesn't time out on a synchronous 485 // Even though a timeout is specified, it doesn't time out on a synchronous
482 // completion. 486 // completion.
483 TEST_F(ClientSocketPoolBaseTest, ConnectJob_NoTimeoutOnSynchronousCompletion) { 487 TEST_F(ClientSocketPoolBaseTest, ConnectJob_NoTimeoutOnSynchronousCompletion) {
484 TestConnectJobDelegate delegate; 488 TestConnectJobDelegate delegate;
485 ClientSocketHandle ignored; 489 ClientSocketHandle ignored;
490 TestSocketParams params;
486 TestClientSocketPoolBase::Request request( 491 TestClientSocketPoolBase::Request request(
487 &ignored, NULL, kDefaultPriority, NULL, BoundNetLog()); 492 &ignored, NULL, kDefaultPriority, params, BoundNetLog());
488 scoped_ptr<TestConnectJob> job( 493 scoped_ptr<TestConnectJob> job(
489 new TestConnectJob(TestConnectJob::kMockJob, 494 new TestConnectJob(TestConnectJob::kMockJob,
490 "a", 495 "a",
491 request, 496 request,
492 base::TimeDelta::FromMicroseconds(1), 497 base::TimeDelta::FromMicroseconds(1),
493 &delegate, 498 &delegate,
494 &client_socket_factory_, 499 &client_socket_factory_,
495 NULL)); 500 NULL));
496 EXPECT_EQ(OK, job->Connect()); 501 EXPECT_EQ(OK, job->Connect());
497 } 502 }
498 503
499 TEST_F(ClientSocketPoolBaseTest, ConnectJob_TimedOut) { 504 TEST_F(ClientSocketPoolBaseTest, ConnectJob_TimedOut) {
500 TestConnectJobDelegate delegate; 505 TestConnectJobDelegate delegate;
501 ClientSocketHandle ignored; 506 ClientSocketHandle ignored;
502 CapturingNetLog log(CapturingNetLog::kUnbounded); 507 CapturingNetLog log(CapturingNetLog::kUnbounded);
503 508
509 TestSocketParams params;
504 TestClientSocketPoolBase::Request request( 510 TestClientSocketPoolBase::Request request(
505 &ignored, NULL, kDefaultPriority, NULL, BoundNetLog()); 511 &ignored, NULL, kDefaultPriority, params, BoundNetLog());
506 // Deleted by TestConnectJobDelegate. 512 // Deleted by TestConnectJobDelegate.
507 TestConnectJob* job = 513 TestConnectJob* job =
508 new TestConnectJob(TestConnectJob::kMockPendingJob, 514 new TestConnectJob(TestConnectJob::kMockPendingJob,
509 "a", 515 "a",
510 request, 516 request,
511 base::TimeDelta::FromMicroseconds(1), 517 base::TimeDelta::FromMicroseconds(1),
512 &delegate, 518 &delegate,
513 &client_socket_factory_, 519 &client_socket_factory_,
514 &log); 520 &log);
515 ASSERT_EQ(ERR_IO_PENDING, job->Connect()); 521 ASSERT_EQ(ERR_IO_PENDING, job->Connect());
(...skipping 1254 matching lines...) Expand 10 before | Expand all | Expand 10 after
1770 EXPECT_EQ(ERR_IO_PENDING, 1776 EXPECT_EQ(ERR_IO_PENDING,
1771 InitHandle(&handle, "a", kDefaultPriority, 1777 InitHandle(&handle, "a", kDefaultPriority,
1772 &callback, pool_, BoundNetLog())); 1778 &callback, pool_, BoundNetLog()));
1773 EXPECT_EQ(OK, callback.WaitForResult()); 1779 EXPECT_EQ(OK, callback.WaitForResult());
1774 EXPECT_EQ(ClientSocketHandle::UNUSED, handle.reuse_type()); 1780 EXPECT_EQ(ClientSocketHandle::UNUSED, handle.reuse_type());
1775 } 1781 }
1776 1782
1777 } // namespace 1783 } // namespace
1778 1784
1779 } // namespace net 1785 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/client_socket_pool.h ('k') | net/socket/socks_client_socket_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698