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

Unified Diff: base/task_scheduler/scheduler_worker_pool_impl_unittest.cc

Issue 2721553003: Remove SingleThreadTaskRunner Support from SchedulerWorkerPoolImpl (Closed)
Patch Set: Rebase to 08266b3 Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
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 {

Powered by Google App Engine
This is Rietveld 408576698