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

Unified Diff: base/task_scheduler/scheduler_worker_pool_impl_unittest.cc

Issue 2464963002: TaskScheduler: Remove base::ExecutionMode. (Closed)
Patch Set: self-review Created 4 years, 1 month 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 412d75e4544e1193585584fe8e193c93f03fe36c..1858ac5cdbd972cd80e88adb6bf1de8631c4c3e4 100644
--- a/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc
+++ b/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc
@@ -30,6 +30,7 @@
#include "base/task_scheduler/sequence_sort_key.h"
#include "base/task_scheduler/task_tracker.h"
#include "base/task_scheduler/test_task_factory.h"
+#include "base/task_scheduler/test_utils.h"
#include "base/test/gtest_util.h"
#include "base/test/test_simple_task_runner.h"
#include "base/test/test_timeouts.h"
@@ -60,7 +61,7 @@ constexpr TimeDelta kExtraTimeToWaitForDetach =
using IORestriction = SchedulerWorkerPoolParams::IORestriction;
class TaskSchedulerWorkerPoolImplTest
- : public testing::TestWithParam<ExecutionMode> {
+ : public testing::TestWithParam<test::ExecutionMode> {
protected:
TaskSchedulerWorkerPoolImplTest()
: service_thread_("TaskSchedulerServiceThread") {}
@@ -110,6 +111,21 @@ class TaskSchedulerWorkerPoolImplTest
DISALLOW_COPY_AND_ASSIGN(TaskSchedulerWorkerPoolImplTest);
};
+scoped_refptr<TaskRunner> CreateTaskRunnerWithExecutionMode(
+ SchedulerWorkerPoolImpl* worker_pool,
+ test::ExecutionMode execution_mode) {
+ switch (execution_mode) {
+ case test::ExecutionMode::PARALLEL:
+ return worker_pool->CreateTaskRunnerWithTraits(TaskTraits());
+ case test::ExecutionMode::SEQUENCED:
+ return worker_pool->CreateSequencedTaskRunnerWithTraits(TaskTraits());
+ case test::ExecutionMode::SINGLE_THREADED:
+ return worker_pool->CreateSingleThreadTaskRunnerWithTraits(TaskTraits());
+ }
+ ADD_FAILURE() << "Unknown ExecutionMode";
+ return nullptr;
+}
+
using PostNestedTask = test::TestTaskFactory::PostNestedTask;
class ThreadPostingTasks : public SimpleThread {
@@ -125,15 +141,14 @@ class ThreadPostingTasks : public SimpleThread {
// |worker_pool| are idle before posting a new task. If |post_nested_task| is
// YES, each task posted by this thread posts another task when it runs.
ThreadPostingTasks(SchedulerWorkerPoolImpl* worker_pool,
- ExecutionMode execution_mode,
+ test::ExecutionMode execution_mode,
WaitBeforePostTask wait_before_post_task,
PostNestedTask post_nested_task)
: SimpleThread("ThreadPostingTasks"),
worker_pool_(worker_pool),
wait_before_post_task_(wait_before_post_task),
post_nested_task_(post_nested_task),
- factory_(worker_pool_->CreateTaskRunnerWithTraits(TaskTraits(),
- execution_mode),
+ factory_(CreateTaskRunnerWithExecutionMode(worker_pool, execution_mode),
execution_mode) {
DCHECK(worker_pool_);
}
@@ -245,7 +260,7 @@ TEST_P(TaskSchedulerWorkerPoolImplTest, PostTasksWithOneAvailableWorker) {
std::vector<std::unique_ptr<test::TestTaskFactory>> blocked_task_factories;
for (size_t i = 0; i < (kNumWorkersInWorkerPool - 1); ++i) {
blocked_task_factories.push_back(MakeUnique<test::TestTaskFactory>(
- worker_pool_->CreateTaskRunnerWithTraits(TaskTraits(), GetParam()),
+ CreateTaskRunnerWithExecutionMode(worker_pool_.get(), GetParam()),
GetParam()));
EXPECT_TRUE(blocked_task_factories.back()->PostTask(
PostNestedTask::NO, Bind(&WaitableEvent::Wait, Unretained(&event))));
@@ -255,7 +270,7 @@ TEST_P(TaskSchedulerWorkerPoolImplTest, PostTasksWithOneAvailableWorker) {
// Post |kNumTasksPostedPerThread| tasks that should all run despite the fact
// that only one worker in |worker_pool_| isn't busy.
test::TestTaskFactory short_task_factory(
- worker_pool_->CreateTaskRunnerWithTraits(TaskTraits(), GetParam()),
+ CreateTaskRunnerWithExecutionMode(worker_pool_.get(), GetParam()),
GetParam());
for (size_t i = 0; i < kNumTasksPostedPerThread; ++i)
EXPECT_TRUE(short_task_factory.PostTask(PostNestedTask::NO, Closure()));
@@ -279,7 +294,7 @@ TEST_P(TaskSchedulerWorkerPoolImplTest, Saturate) {
std::vector<std::unique_ptr<test::TestTaskFactory>> factories;
for (size_t i = 0; i < kNumWorkersInWorkerPool; ++i) {
factories.push_back(MakeUnique<test::TestTaskFactory>(
- worker_pool_->CreateTaskRunnerWithTraits(TaskTraits(), GetParam()),
+ CreateTaskRunnerWithExecutionMode(worker_pool_.get(), GetParam()),
GetParam()));
EXPECT_TRUE(factories.back()->PostTask(
PostNestedTask::NO, Bind(&WaitableEvent::Wait, Unretained(&event))));
@@ -297,7 +312,7 @@ TEST_P(TaskSchedulerWorkerPoolImplTest, Saturate) {
// Verify that a Task can't be posted after shutdown.
TEST_P(TaskSchedulerWorkerPoolImplTest, PostTaskAfterShutdown) {
auto task_runner =
- worker_pool_->CreateTaskRunnerWithTraits(TaskTraits(), GetParam());
+ CreateTaskRunnerWithExecutionMode(worker_pool_.get(), GetParam());
task_tracker_.Shutdown();
EXPECT_FALSE(task_runner->PostTask(FROM_HERE, Bind(&ShouldNotRunCallback)));
}
@@ -309,7 +324,7 @@ TEST_P(TaskSchedulerWorkerPoolImplTest, PostDelayedTask) {
// Post a task with a short delay.
WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL,
WaitableEvent::InitialState::NOT_SIGNALED);
- EXPECT_TRUE(worker_pool_->CreateTaskRunnerWithTraits(TaskTraits(), GetParam())
+ EXPECT_TRUE(CreateTaskRunnerWithExecutionMode(worker_pool_.get(), GetParam())
->PostDelayedTask(FROM_HERE, Bind(&WaitableEvent::Signal,
Unretained(&task_ran)),
TestTimeouts::tiny_timeout()));
@@ -329,10 +344,9 @@ TEST_P(TaskSchedulerWorkerPoolImplTest, PostDelayedTask) {
// returns false when called from a task that isn't part of the sequence.
TEST_P(TaskSchedulerWorkerPoolImplTest, SequencedRunsTasksOnCurrentThread) {
scoped_refptr<TaskRunner> task_runner(
- worker_pool_->CreateTaskRunnerWithTraits(TaskTraits(), GetParam()));
- scoped_refptr<TaskRunner> sequenced_task_runner(
- worker_pool_->CreateTaskRunnerWithTraits(TaskTraits(),
- ExecutionMode::SEQUENCED));
+ CreateTaskRunnerWithExecutionMode(worker_pool_.get(), GetParam()));
+ scoped_refptr<SequencedTaskRunner> sequenced_task_runner(
+ worker_pool_->CreateSequencedTaskRunnerWithTraits(TaskTraits()));
WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL,
WaitableEvent::InitialState::NOT_SIGNALED);
@@ -352,13 +366,14 @@ TEST_P(TaskSchedulerWorkerPoolImplTest, SequencedRunsTasksOnCurrentThread) {
INSTANTIATE_TEST_CASE_P(Parallel,
TaskSchedulerWorkerPoolImplTest,
- ::testing::Values(ExecutionMode::PARALLEL));
+ ::testing::Values(test::ExecutionMode::PARALLEL));
INSTANTIATE_TEST_CASE_P(Sequenced,
TaskSchedulerWorkerPoolImplTest,
- ::testing::Values(ExecutionMode::SEQUENCED));
-INSTANTIATE_TEST_CASE_P(SingleThreaded,
- TaskSchedulerWorkerPoolImplTest,
- ::testing::Values(ExecutionMode::SINGLE_THREADED));
+ ::testing::Values(test::ExecutionMode::SEQUENCED));
+INSTANTIATE_TEST_CASE_P(
+ SingleThreaded,
+ TaskSchedulerWorkerPoolImplTest,
+ ::testing::Values(test::ExecutionMode::SINGLE_THREADED));
namespace {
@@ -407,7 +422,7 @@ TEST_P(TaskSchedulerWorkerPoolImplIORestrictionTest, IORestriction) {
WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL,
WaitableEvent::InitialState::NOT_SIGNALED);
- worker_pool->CreateTaskRunnerWithTraits(TaskTraits(), ExecutionMode::PARALLEL)
+ worker_pool->CreateTaskRunnerWithTraits(TaskTraits())
->PostTask(FROM_HERE, Bind(&ExpectIORestriction, GetParam(), &task_ran));
task_ran.Wait();
@@ -452,10 +467,9 @@ class TaskSchedulerWorkerPoolSingleThreadedTest
// Verify that thread resources for a single thread remain.
TEST_F(TaskSchedulerWorkerPoolSingleThreadedTest, SingleThreadTask) {
auto single_thread_task_runner =
- worker_pool_->CreateTaskRunnerWithTraits(
- TaskTraits().
- WithShutdownBehavior(TaskShutdownBehavior::BLOCK_SHUTDOWN),
- ExecutionMode::SINGLE_THREADED);
+ worker_pool_->CreateSingleThreadTaskRunnerWithTraits(
+ TaskTraits().WithShutdownBehavior(
+ TaskShutdownBehavior::BLOCK_SHUTDOWN));
single_thread_task_runner->PostTask(
FROM_HERE,
Bind(&TaskSchedulerWorkerPoolSingleThreadedTest::InitializeThreadChecker,
@@ -527,10 +541,9 @@ TEST_F(TaskSchedulerWorkerPoolCheckTlsReuse, CheckDetachedThreads) {
// Saturate the threads and mark each thread with a magic TLS value.
std::vector<std::unique_ptr<test::TestTaskFactory>> factories;
for (size_t i = 0; i < kNumWorkersInWorkerPool; ++i) {
- factories.push_back(WrapUnique(new test::TestTaskFactory(
- worker_pool_->CreateTaskRunnerWithTraits(
- TaskTraits(), ExecutionMode::PARALLEL),
- ExecutionMode::PARALLEL)));
+ factories.push_back(MakeUnique<test::TestTaskFactory>(
+ worker_pool_->CreateTaskRunnerWithTraits(TaskTraits()),
+ test::ExecutionMode::PARALLEL));
ASSERT_TRUE(factories.back()->PostTask(
PostNestedTask::NO,
Bind(&TaskSchedulerWorkerPoolCheckTlsReuse::SetTlsValueAndWait,
@@ -600,8 +613,8 @@ TEST_F(TaskSchedulerWorkerPoolHistogramTest, NumTasksBetweenWaits) {
WaitableEvent event(WaitableEvent::ResetPolicy::MANUAL,
WaitableEvent::InitialState::NOT_SIGNALED);
InitializeWorkerPool(TimeDelta::Max(), kNumWorkersInWorkerPool);
- auto task_runner = worker_pool_->CreateTaskRunnerWithTraits(
- TaskTraits(), ExecutionMode::SEQUENCED);
+ auto task_runner =
+ worker_pool_->CreateSequencedTaskRunnerWithTraits(TaskTraits());
// Post a task.
task_runner->PostTask(FROM_HERE,
@@ -644,8 +657,7 @@ TEST_F(TaskSchedulerWorkerPoolHistogramTest, NumTasksBetweenWaitsWithDetach) {
WaitableEvent tasks_can_exit_event(WaitableEvent::ResetPolicy::MANUAL,
WaitableEvent::InitialState::NOT_SIGNALED);
InitializeWorkerPool(kReclaimTimeForDetachTests, kNumWorkersInWorkerPool);
- auto task_runner = worker_pool_->CreateTaskRunnerWithTraits(
- TaskTraits(), ExecutionMode::PARALLEL);
+ auto task_runner = worker_pool_->CreateTaskRunnerWithTraits(TaskTraits());
// Post tasks to saturate the pool.
std::vector<std::unique_ptr<WaitableEvent>> task_started_events;
@@ -721,10 +733,10 @@ TEST_F(TaskSchedulerWorkerPoolHistogramTest, NumTasksBeforeDetach) {
InitializeWorkerPool(kReclaimTimeForDetachTests, kNumWorkersInWorkerPool);
// This test assumes that the TaskRunners aren't assigned to the same worker.
- auto task_runner = worker_pool_->CreateTaskRunnerWithTraits(
- TaskTraits(), ExecutionMode::SINGLE_THREADED);
- auto other_task_runner = worker_pool_->CreateTaskRunnerWithTraits(
- TaskTraits(), ExecutionMode::SINGLE_THREADED);
+ auto task_runner =
+ worker_pool_->CreateSingleThreadTaskRunnerWithTraits(TaskTraits());
+ auto other_task_runner =
+ worker_pool_->CreateSingleThreadTaskRunnerWithTraits(TaskTraits());
// Post 3 tasks and wait until they run.
PlatformThreadId thread_id;

Powered by Google App Engine
This is Rietveld 408576698