Index: base/task_scheduler/scheduler_worker_pool_impl_unittest.cc |
diff --git a/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc b/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc |
index 521870589151451211ba129f0d6bc573639b3c2a..f3b1bedf0ef30a3a2b6f168fc86256e816aed69d 100644 |
--- a/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc |
+++ b/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc |
@@ -121,10 +121,11 @@ scoped_refptr<TaskRunner> CreateTaskRunnerWithExecutionMode( |
return worker_pool->CreateTaskRunnerWithTraits(traits); |
case test::ExecutionMode::SEQUENCED: |
return worker_pool->CreateSequencedTaskRunnerWithTraits(traits); |
- case test::ExecutionMode::SINGLE_THREADED: |
- return worker_pool->CreateSingleThreadTaskRunnerWithTraits(traits); |
+ default: |
gab
2017/03/15 20:20:58
Keep SINGLE_THREADED and NOTREACHED() instead of h
robliao
2017/03/15 20:46:44
See https://codereview.chromium.org/2721553003/dif
|
+ // Fall through. |
+ break; |
} |
- ADD_FAILURE() << "Unknown ExecutionMode"; |
+ ADD_FAILURE() << "Unexpected ExecutionMode"; |
return nullptr; |
} |
@@ -373,128 +374,6 @@ INSTANTIATE_TEST_CASE_P(Parallel, |
INSTANTIATE_TEST_CASE_P(Sequenced, |
TaskSchedulerWorkerPoolImplTest, |
::testing::Values(test::ExecutionMode::SEQUENCED)); |
-INSTANTIATE_TEST_CASE_P( |
- SingleThreaded, |
- TaskSchedulerWorkerPoolImplTest, |
- ::testing::Values(test::ExecutionMode::SINGLE_THREADED)); |
- |
-namespace { |
- |
-// Same as TaskSchedulerWorkerPoolImplTest but its SchedulerWorkerPoolImpl |
-// instance uses |max_threads == 1|. |
-class TaskSchedulerWorkerPoolImplSingleWorkerTest |
- : public TaskSchedulerWorkerPoolImplTest { |
- public: |
- TaskSchedulerWorkerPoolImplSingleWorkerTest() = default; |
- |
- protected: |
- void SetUp() override { |
- InitializeWorkerPool(TimeDelta::Max(), 1); |
- } |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(TaskSchedulerWorkerPoolImplSingleWorkerTest); |
-}; |
- |
-} // namespace |
- |
-// Verify that the RunsTasksOnCurrentThread() method of a |
-// SchedulerSingleThreadTaskRunner returns false when called from a task that |
-// isn't part of its sequence even though it's running on that |
-// SchedulerSingleThreadTaskRunner's assigned worker. Note: Tests that use |
-// TestTaskFactory already verify that RunsTasksOnCurrentThread() returns true |
-// when appropriate so this method complements it to get full coverage of that |
-// method. |
-TEST_P(TaskSchedulerWorkerPoolImplSingleWorkerTest, |
- SingleThreadRunsTasksOnCurrentThread) { |
- scoped_refptr<TaskRunner> task_runner( |
- CreateTaskRunnerWithExecutionMode(worker_pool_.get(), GetParam())); |
- scoped_refptr<SingleThreadTaskRunner> single_thread_task_runner( |
- worker_pool_->CreateSingleThreadTaskRunnerWithTraits(TaskTraits())); |
- |
- WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, |
- WaitableEvent::InitialState::NOT_SIGNALED); |
- task_runner->PostTask( |
- FROM_HERE, |
- Bind( |
- [](scoped_refptr<TaskRunner> single_thread_task_runner, |
- WaitableEvent* task_ran) { |
- EXPECT_FALSE(single_thread_task_runner->RunsTasksOnCurrentThread()); |
- task_ran->Signal(); |
- }, |
- single_thread_task_runner, Unretained(&task_ran))); |
- task_ran.Wait(); |
-} |
- |
-INSTANTIATE_TEST_CASE_P(Parallel, |
- TaskSchedulerWorkerPoolImplSingleWorkerTest, |
- ::testing::Values(test::ExecutionMode::PARALLEL)); |
-INSTANTIATE_TEST_CASE_P(Sequenced, |
- TaskSchedulerWorkerPoolImplSingleWorkerTest, |
- ::testing::Values(test::ExecutionMode::SEQUENCED)); |
-INSTANTIATE_TEST_CASE_P( |
- SingleThreaded, |
- TaskSchedulerWorkerPoolImplSingleWorkerTest, |
- ::testing::Values(test::ExecutionMode::SINGLE_THREADED)); |
- |
-namespace { |
- |
-class TaskSchedulerWorkerPoolSingleThreadedTest |
- : public TaskSchedulerWorkerPoolImplTest { |
- public: |
- void InitializeThreadChecker() { |
- thread_checker_.reset(new ThreadCheckerImpl()); |
- } |
- |
- void CheckValidThread() { |
- EXPECT_TRUE(thread_checker_->CalledOnValidThread()); |
- } |
- |
- protected: |
- void SetUp() override { |
- InitializeWorkerPool(kReclaimTimeForDetachTests, kNumWorkersInWorkerPool); |
- } |
- |
- TaskSchedulerWorkerPoolSingleThreadedTest() = default; |
- |
- private: |
- std::unique_ptr<ThreadCheckerImpl> thread_checker_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TaskSchedulerWorkerPoolSingleThreadedTest); |
-}; |
- |
-} // namespace |
- |
-// Verify that thread resources for a single thread remain. |
-TEST_F(TaskSchedulerWorkerPoolSingleThreadedTest, SingleThreadTask) { |
- auto single_thread_task_runner = |
- worker_pool_->CreateSingleThreadTaskRunnerWithTraits( |
- TaskTraits().WithShutdownBehavior( |
- TaskShutdownBehavior::BLOCK_SHUTDOWN)); |
- single_thread_task_runner->PostTask( |
- FROM_HERE, |
- Bind(&TaskSchedulerWorkerPoolSingleThreadedTest::InitializeThreadChecker, |
- Unretained(this))); |
- WaitableEvent task_waiter(WaitableEvent::ResetPolicy::AUTOMATIC, |
- WaitableEvent::InitialState::NOT_SIGNALED); |
- single_thread_task_runner->PostTask( |
- FROM_HERE, Bind(&WaitableEvent::Signal, Unretained(&task_waiter))); |
- task_waiter.Wait(); |
- worker_pool_->WaitForAllWorkersIdleForTesting(); |
- |
- // Give the worker pool a chance to reclaim its threads. |
- PlatformThread::Sleep(kReclaimTimeForDetachTests + kExtraTimeToWaitForDetach); |
- |
- worker_pool_->DisallowWorkerDetachmentForTesting(); |
- |
- single_thread_task_runner->PostTask( |
- FROM_HERE, |
- Bind(&TaskSchedulerWorkerPoolSingleThreadedTest::CheckValidThread, |
- Unretained(this))); |
- single_thread_task_runner->PostTask( |
- FROM_HERE, Bind(&WaitableEvent::Signal, Unretained(&task_waiter))); |
- task_waiter.Wait(); |
-} |
namespace { |