| Index: net/socket/client_socket_pool_base_unittest.cc
|
| ===================================================================
|
| --- net/socket/client_socket_pool_base_unittest.cc (revision 26941)
|
| +++ net/socket/client_socket_pool_base_unittest.cc (working copy)
|
| @@ -143,31 +143,34 @@
|
| return DoConnect(false /* error */, false /* sync */);
|
| case kMockPendingJob:
|
| set_load_state(LOAD_STATE_CONNECTING);
|
| - MessageLoop::current()->PostTask(
|
| + MessageLoop::current()->PostDelayedTask(
|
| FROM_HERE,
|
| method_factory_.NewRunnableMethod(
|
| - &TestConnectJob::DoConnect,
|
| - true /* successful */,
|
| - true /* async */));
|
| + &TestConnectJob::DoConnect,
|
| + true /* successful */,
|
| + true /* async */),
|
| + 2);
|
| return ERR_IO_PENDING;
|
| case kMockPendingFailingJob:
|
| set_load_state(LOAD_STATE_CONNECTING);
|
| - MessageLoop::current()->PostTask(
|
| + MessageLoop::current()->PostDelayedTask(
|
| FROM_HERE,
|
| method_factory_.NewRunnableMethod(
|
| - &TestConnectJob::DoConnect,
|
| - false /* error */,
|
| - true /* async */));
|
| + &TestConnectJob::DoConnect,
|
| + false /* error */,
|
| + true /* async */),
|
| + 2);
|
| return ERR_IO_PENDING;
|
| case kMockWaitingJob:
|
| client_socket_factory_->WaitForSignal(this);
|
| waiting_success_ = true;
|
| return ERR_IO_PENDING;
|
| case kMockAdvancingLoadStateJob:
|
| - MessageLoop::current()->PostTask(
|
| + MessageLoop::current()->PostDelayedTask(
|
| FROM_HERE,
|
| method_factory_.NewRunnableMethod(
|
| - &TestConnectJob::AdvanceLoadState, load_state_));
|
| + &TestConnectJob::AdvanceLoadState, load_state_),
|
| + 2);
|
| return ERR_IO_PENDING;
|
| default:
|
| NOTREACHED();
|
| @@ -717,6 +720,8 @@
|
| // Create one asynchronous request.
|
| connect_job_factory_->set_job_type(TestConnectJob::kMockPendingJob);
|
| EXPECT_EQ(ERR_IO_PENDING, StartRequest("d", kDefaultPriority));
|
| + PlatformThread::Sleep(10);
|
| + MessageLoop::current()->RunAllPending();
|
|
|
| // The next synchronous request should wait for its turn.
|
| connect_job_factory_->set_job_type(TestConnectJob::kMockJob);
|
| @@ -953,14 +958,26 @@
|
| test_connect_job_factory_->set_job_type(next_job_type_);
|
| handle_->Reset();
|
| within_callback_ = true;
|
| + TestCompletionCallback next_job_callback;
|
| int rv = InitHandle(
|
| - handle_, "a", kDefaultPriority, this, pool_.get(), NULL);
|
| + handle_, "a", kDefaultPriority, &next_job_callback, pool_.get(),
|
| + NULL);
|
| switch (next_job_type_) {
|
| case TestConnectJob::kMockJob:
|
| EXPECT_EQ(OK, rv);
|
| break;
|
| case TestConnectJob::kMockPendingJob:
|
| EXPECT_EQ(ERR_IO_PENDING, rv);
|
| +
|
| + // For pending jobs, wait for new socket to be created. This makes
|
| + // sure there are no more pending operations nor any unclosed sockets
|
| + // when the test finishes.
|
| + // We need to give it a little bit of time to run, so that all the
|
| + // operations that happen on timers (e.g. cleanup of idle
|
| + // connections) can execute.
|
| + MessageLoop::current()->SetNestableTasksAllowed(true);
|
| + PlatformThread::Sleep(10);
|
| + EXPECT_EQ(OK, next_job_callback.WaitForResult());
|
| break;
|
| default:
|
| FAIL() << "Unexpected job type: " << next_job_type_;
|
|
|