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

Unified Diff: third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc

Issue 2590593002: Revert of [Reland] Scheduler refactoring to virtually eliminate redundant DoWorks (Closed)
Patch Set: Created 4 years 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: third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc
index 79e17b6869ca2ffc83ad70616b1f966997a82e88..97ef5e9597650c1e1b6d4b50d9ffe272a17922a7 100644
--- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc
+++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc
@@ -116,37 +116,8 @@
manager_->NewTaskQueue(TaskQueue::Spec(TaskQueue::QueueType::TEST)));
}
- void UpdateWorkQueues(
- const std::set<internal::TaskQueueImpl*>* queues_to_reload,
- LazyNow lazy_now) {
- manager_->UpdateWorkQueues(queues_to_reload, &lazy_now);
- }
-
- base::Optional<base::TimeDelta> ComputeDelayTillNextTask(LazyNow* lazy_now) {
- base::AutoLock lock(manager_->any_thread_lock_);
- return manager_->ComputeDelayTillNextTaskLocked(lazy_now);
- }
-
- void PostDoWorkContinuation(base::Optional<base::TimeDelta> next_delay,
- LazyNow* lazy_now) {
- MoveableAutoLock lock(manager_->any_thread_lock_);
- return manager_->PostDoWorkContinuationLocked(next_delay, lazy_now,
- std::move(lock));
- }
-
- int immediate_do_work_posted_count() const {
- base::AutoLock lock(manager_->any_thread_lock_);
- return manager_->any_thread().immediate_do_work_posted_count;
- }
-
- base::TimeTicks next_delayed_do_work() const {
- return manager_->next_delayed_do_work_;
- }
-
- void MaybeScheduleImmediateWorkLocked(
- const tracked_objects::Location& from_here) {
- MoveableAutoLock lock(manager_->any_thread_lock_);
- manager_->MaybeScheduleImmediateWorkLocked(from_here, std::move(lock));
+ void UpdateWorkQueues(LazyNow lazy_now) {
+ manager_->UpdateWorkQueues(lazy_now);
}
// Runs all immediate tasks until there is no more work to do and advances
@@ -518,34 +489,6 @@
EXPECT_THAT(run_order, ElementsAre(1));
}
-TEST_F(TaskQueueManagerTest, RemovingFenceForDisabledQueueDoesNotPostDoWork) {
- Initialize(1u);
-
- std::vector<EnqueueOrder> run_order;
- std::unique_ptr<TaskQueue::QueueEnabledVoter> voter =
- runners_[0]->CreateQueueEnabledVoter();
- voter->SetQueueEnabled(false);
- runners_[0]->InsertFence(TaskQueue::InsertFencePosition::NOW);
- runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
-
- runners_[0]->RemoveFence();
- EXPECT_FALSE(test_task_runner_->HasPendingTasks());
-}
-
-TEST_F(TaskQueueManagerTest, EnablingFencedQueueDoesNotPostDoWork) {
- Initialize(1u);
-
- std::vector<EnqueueOrder> run_order;
- std::unique_ptr<TaskQueue::QueueEnabledVoter> voter =
- runners_[0]->CreateQueueEnabledVoter();
- voter->SetQueueEnabled(false);
- runners_[0]->InsertFence(TaskQueue::InsertFencePosition::NOW);
- runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
-
- voter->SetQueueEnabled(true);
- EXPECT_FALSE(test_task_runner_->HasPendingTasks());
-}
-
TEST_F(TaskQueueManagerTest, DenyRunning_BeforePosting) {
Initialize(1u);
@@ -1094,12 +1037,12 @@
// Move time forwards until just before the delayed task should run.
now_src_->Advance(base::TimeDelta::FromMilliseconds(10));
- UpdateWorkQueues(nullptr, LazyNow(now_src_.get()));
+ UpdateWorkQueues(LazyNow(now_src_.get()));
EXPECT_FALSE(runners_[0]->HasPendingImmediateWork());
// Force the delayed task onto the work queue.
now_src_->Advance(base::TimeDelta::FromMilliseconds(2));
- UpdateWorkQueues(nullptr, LazyNow(now_src_.get()));
+ UpdateWorkQueues(LazyNow(now_src_.get()));
EXPECT_TRUE(runners_[0]->HasPendingImmediateWork());
test_task_runner_->RunUntilIdle();
@@ -2219,199 +2162,5 @@
voter.reset();
}
-TEST_F(TaskQueueManagerTest, ComputeDelayTillNextTask) {
- Initialize(2u);
-
- std::unique_ptr<RealTimeDomain> domain2(new RealTimeDomain("test"));
- manager_->RegisterTimeDomain(domain2.get());
- runners_[1]->SetTimeDomain(domain2.get());
-
- LazyNow lazy_now(now_src_.get());
- EXPECT_FALSE(static_cast<bool>(ComputeDelayTillNextTask(&lazy_now)));
-
- runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask),
- base::TimeDelta::FromSeconds(10));
-
- EXPECT_EQ(base::TimeDelta::FromSeconds(10),
- ComputeDelayTillNextTask(&lazy_now).value());
-
- runners_[1]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask),
- base::TimeDelta::FromSeconds(15));
-
- EXPECT_EQ(base::TimeDelta::FromSeconds(10),
- ComputeDelayTillNextTask(&lazy_now).value());
-
- runners_[1]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask),
- base::TimeDelta::FromSeconds(5));
-
- EXPECT_EQ(base::TimeDelta::FromSeconds(5),
- ComputeDelayTillNextTask(&lazy_now).value());
-
- runners_[0]->PostTask(FROM_HERE, base::Bind(&NopTask));
-
- EXPECT_EQ(base::TimeDelta(), ComputeDelayTillNextTask(&lazy_now).value());
-
- // Tidy up.
- runners_[1]->UnregisterTaskQueue();
- manager_->UnregisterTimeDomain(domain2.get());
-}
-
-TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_NoMoreWork) {
- Initialize(1u);
-
- LazyNow lazy_now(now_src_.get());
- PostDoWorkContinuation(base::Optional<base::TimeDelta>(), &lazy_now);
-
- EXPECT_EQ(0u, test_task_runner_->NumPendingTasks());
- EXPECT_EQ(0, immediate_do_work_posted_count());
- EXPECT_TRUE(next_delayed_do_work().is_null());
-}
-
-TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_ImmediateWork) {
- Initialize(1u);
-
- LazyNow lazy_now(now_src_.get());
- PostDoWorkContinuation(base::TimeDelta(), &lazy_now);
-
- EXPECT_EQ(1u, test_task_runner_->NumPendingTasks());
- EXPECT_EQ(base::TimeDelta(), test_task_runner_->DelayToNextTaskTime());
- EXPECT_EQ(1, immediate_do_work_posted_count());
- EXPECT_TRUE(next_delayed_do_work().is_null());
-}
-
-TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_DelayedWork) {
- Initialize(1u);
-
- LazyNow lazy_now(now_src_.get());
- PostDoWorkContinuation(base::TimeDelta::FromSeconds(1), &lazy_now);
-
- EXPECT_EQ(1u, test_task_runner_->NumPendingTasks());
- EXPECT_EQ(base::TimeDelta::FromSeconds(1),
- test_task_runner_->DelayToNextTaskTime());
- EXPECT_EQ(0, immediate_do_work_posted_count());
- EXPECT_EQ(lazy_now.Now() + base::TimeDelta::FromSeconds(1),
- next_delayed_do_work());
-}
-
-TEST_F(TaskQueueManagerTest,
- PostDoWorkContinuation_DelayedWorkButImmediateDoWorkAlreadyPosted) {
- Initialize(1u);
-
- MaybeScheduleImmediateWorkLocked(FROM_HERE);
- EXPECT_EQ(1u, test_task_runner_->NumPendingTasks());
- EXPECT_EQ(base::TimeDelta(), test_task_runner_->DelayToNextTaskTime());
- EXPECT_EQ(1, immediate_do_work_posted_count());
-
- LazyNow lazy_now(now_src_.get());
- PostDoWorkContinuation(base::TimeDelta::FromSeconds(1), &lazy_now);
-
- // Test that a delayed task didn't get posted.
- EXPECT_EQ(1u, test_task_runner_->NumPendingTasks());
- EXPECT_EQ(base::TimeDelta(), test_task_runner_->DelayToNextTaskTime());
- EXPECT_EQ(1, immediate_do_work_posted_count());
- EXPECT_TRUE(next_delayed_do_work().is_null());
-}
-
-TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_DelayedWorkTimeChanges) {
- Initialize(1u);
-
- LazyNow lazy_now(now_src_.get());
- PostDoWorkContinuation(base::TimeDelta::FromSeconds(1), &lazy_now);
-
- EXPECT_TRUE(test_task_runner_->HasPendingTasks());
- EXPECT_EQ(0, immediate_do_work_posted_count());
- EXPECT_EQ(base::TimeDelta::FromSeconds(1),
- test_task_runner_->DelayToNextTaskTime());
- EXPECT_EQ(lazy_now.Now() + base::TimeDelta::FromSeconds(1),
- next_delayed_do_work());
-
- PostDoWorkContinuation(base::TimeDelta::FromSeconds(10), &lazy_now);
-
- // This should have resulted in the previous task getting canceled and a new
- // one getting posted.
- EXPECT_EQ(2u, test_task_runner_->NumPendingTasks());
- test_task_runner_->RemoveCancelledTasks();
- EXPECT_EQ(1u, test_task_runner_->NumPendingTasks());
- EXPECT_EQ(base::TimeDelta::FromSeconds(10),
- test_task_runner_->DelayToNextTaskTime());
- EXPECT_EQ(0, immediate_do_work_posted_count());
- EXPECT_EQ(lazy_now.Now() + base::TimeDelta::FromSeconds(10),
- next_delayed_do_work());
-}
-
-TEST_F(TaskQueueManagerTest,
- PostDoWorkContinuation_ImmediateWorkButDelayedDoWorkPending) {
- Initialize(1u);
-
- LazyNow lazy_now(now_src_.get());
- PostDoWorkContinuation(base::TimeDelta::FromSeconds(1), &lazy_now);
-
- now_src_->Advance(base::TimeDelta::FromSeconds(1));
- lazy_now = LazyNow(now_src_.get());
- PostDoWorkContinuation(base::TimeDelta(), &lazy_now);
-
- // Because the delayed DoWork was pending we don't expect an immediate DoWork
- // to get posted.
- EXPECT_EQ(1u, test_task_runner_->NumPendingTasks());
- EXPECT_EQ(base::TimeDelta(), test_task_runner_->DelayToNextTaskTime());
- EXPECT_EQ(0, immediate_do_work_posted_count());
- EXPECT_EQ(lazy_now.Now(), next_delayed_do_work());
-}
-
-namespace {
-void MessageLoopTaskWithDelayedQuit(
- base::MessageLoop* message_loop,
- base::SimpleTestTickClock* now_src,
- scoped_refptr<internal::TaskQueueImpl> task_queue) {
- base::MessageLoop::ScopedNestableTaskAllower allow(message_loop);
- base::RunLoop run_loop;
- task_queue->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(),
- base::TimeDelta::FromMilliseconds(100));
- now_src->Advance(base::TimeDelta::FromMilliseconds(200));
- run_loop.Run();
-}
-} // namespace
-
-TEST_F(TaskQueueManagerTest, DelayedTaskRunsInNestedMessageLoop) {
- InitializeWithRealMessageLoop(1u);
- base::RunLoop run_loop;
- runners_[0]->PostTask(
- FROM_HERE,
- base::Bind(&MessageLoopTaskWithDelayedQuit, message_loop_.get(),
- now_src_.get(), base::RetainedRef(runners_[0])));
- run_loop.RunUntilIdle();
-}
-
-namespace {
-void MessageLoopTaskWithImmediateQuit(
- base::MessageLoop* message_loop,
- base::Closure non_nested_quit_closure,
- scoped_refptr<internal::TaskQueueImpl> task_queue) {
- base::MessageLoop::ScopedNestableTaskAllower allow(message_loop);
-
- base::RunLoop run_loop;
- // Needed because entering the nested message loop causes a DoWork to get
- // posted.
- task_queue->PostTask(FROM_HERE, base::Bind(&NopTask));
- task_queue->PostTask(FROM_HERE, run_loop.QuitClosure());
- run_loop.Run();
- non_nested_quit_closure.Run();
-}
-} // namespace
-
-TEST_F(TaskQueueManagerTest,
- DelayedNestedMessageLoopDoesntPreventTasksRunning) {
- InitializeWithRealMessageLoop(1u);
- base::RunLoop run_loop;
- runners_[0]->PostDelayedTask(
- FROM_HERE,
- base::Bind(&MessageLoopTaskWithImmediateQuit, message_loop_.get(),
- run_loop.QuitClosure(), base::RetainedRef(runners_[0])),
- base::TimeDelta::FromMilliseconds(100));
-
- now_src_->Advance(base::TimeDelta::FromMilliseconds(200));
- run_loop.Run();
-}
-
} // namespace scheduler
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698