| 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 1858ac5cdbd972cd80e88adb6bf1de8631c4c3e4..3b9393e19abcd7e5d484da54dd9d7f826cf86f93 100644
|
| --- a/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc
|
| +++ b/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc
|
| @@ -341,7 +341,10 @@ TEST_P(TaskSchedulerWorkerPoolImplTest, PostDelayedTask) {
|
| }
|
|
|
| // Verify that the RunsTasksOnCurrentThread() method of a SEQUENCED TaskRunner
|
| -// returns false when called from a task that isn't part of the sequence.
|
| +// returns false when called from a task that isn't part of the sequence. 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(TaskSchedulerWorkerPoolImplTest, SequencedRunsTasksOnCurrentThread) {
|
| scoped_refptr<TaskRunner> task_runner(
|
| CreateTaskRunnerWithExecutionMode(worker_pool_.get(), GetParam()));
|
| @@ -356,8 +359,6 @@ TEST_P(TaskSchedulerWorkerPoolImplTest, SequencedRunsTasksOnCurrentThread) {
|
| [](scoped_refptr<TaskRunner> sequenced_task_runner,
|
| WaitableEvent* task_ran) {
|
| EXPECT_FALSE(sequenced_task_runner->RunsTasksOnCurrentThread());
|
| - // Tests that use TestTaskFactory already verify that
|
| - // RunsTasksOnCurrentThread() returns true when appropriate.
|
| task_ran->Signal();
|
| },
|
| sequenced_task_runner, Unretained(&task_ran)));
|
| @@ -377,6 +378,65 @@ INSTANTIATE_TEST_CASE_P(
|
|
|
| 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 {
|
| +
|
| void NotReachedReEnqueueSequenceCallback(scoped_refptr<Sequence> sequence) {
|
| ADD_FAILURE()
|
| << "Unexpected invocation of NotReachedReEnqueueSequenceCallback.";
|
|
|