| Index: components/scheduler/child/scheduler_helper_unittest.cc
|
| diff --git a/components/scheduler/child/scheduler_helper_unittest.cc b/components/scheduler/child/scheduler_helper_unittest.cc
|
| deleted file mode 100644
|
| index 73cbbdc4649fdcaf0bc6c0a0fafc2db0c7b0715c..0000000000000000000000000000000000000000
|
| --- a/components/scheduler/child/scheduler_helper_unittest.cc
|
| +++ /dev/null
|
| @@ -1,228 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "components/scheduler/child/scheduler_helper.h"
|
| -
|
| -#include "base/callback.h"
|
| -#include "base/macros.h"
|
| -#include "base/memory/ptr_util.h"
|
| -#include "base/test/simple_test_tick_clock.h"
|
| -#include "cc/test/ordered_simple_task_runner.h"
|
| -#include "components/scheduler/base/lazy_now.h"
|
| -#include "components/scheduler/base/task_queue.h"
|
| -#include "components/scheduler/base/test_time_source.h"
|
| -#include "components/scheduler/child/scheduler_tqm_delegate_for_test.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -using testing::_;
|
| -using testing::AnyNumber;
|
| -using testing::Invoke;
|
| -using testing::Return;
|
| -
|
| -namespace scheduler {
|
| -
|
| -namespace {
|
| -void AppendToVectorTestTask(std::vector<std::string>* vector,
|
| - std::string value) {
|
| - vector->push_back(value);
|
| -}
|
| -
|
| -void AppendToVectorReentrantTask(base::SingleThreadTaskRunner* task_runner,
|
| - std::vector<int>* vector,
|
| - int* reentrant_count,
|
| - int max_reentrant_count) {
|
| - vector->push_back((*reentrant_count)++);
|
| - if (*reentrant_count < max_reentrant_count) {
|
| - task_runner->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(AppendToVectorReentrantTask, base::Unretained(task_runner),
|
| - vector, reentrant_count, max_reentrant_count));
|
| - }
|
| -}
|
| -
|
| -}; // namespace
|
| -
|
| -class SchedulerHelperTest : public testing::Test {
|
| - public:
|
| - SchedulerHelperTest()
|
| - : clock_(new base::SimpleTestTickClock()),
|
| - mock_task_runner_(new cc::OrderedSimpleTaskRunner(clock_.get(), false)),
|
| - main_task_runner_(SchedulerTqmDelegateForTest::Create(
|
| - mock_task_runner_,
|
| - base::WrapUnique(new TestTimeSource(clock_.get())))),
|
| - scheduler_helper_(new SchedulerHelper(
|
| - main_task_runner_,
|
| - "test.scheduler",
|
| - TRACE_DISABLED_BY_DEFAULT("test.scheduler"),
|
| - TRACE_DISABLED_BY_DEFAULT("test.scheduler.dbg"))),
|
| - default_task_runner_(scheduler_helper_->DefaultTaskRunner()) {
|
| - clock_->Advance(base::TimeDelta::FromMicroseconds(5000));
|
| - }
|
| -
|
| - ~SchedulerHelperTest() override {}
|
| -
|
| - void TearDown() override {
|
| - // Check that all tests stop posting tasks.
|
| - mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true);
|
| - while (mock_task_runner_->RunUntilIdle()) {
|
| - }
|
| - }
|
| -
|
| - void RunUntilIdle() { mock_task_runner_->RunUntilIdle(); }
|
| -
|
| - template <typename E>
|
| - static void CallForEachEnumValue(E first,
|
| - E last,
|
| - const char* (*function)(E)) {
|
| - for (E val = first; val < last;
|
| - val = static_cast<E>(static_cast<int>(val) + 1)) {
|
| - (*function)(val);
|
| - }
|
| - }
|
| -
|
| - protected:
|
| - std::unique_ptr<base::SimpleTestTickClock> clock_;
|
| - scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_;
|
| -
|
| - scoped_refptr<SchedulerTqmDelegateForTest> main_task_runner_;
|
| - std::unique_ptr<SchedulerHelper> scheduler_helper_;
|
| - scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SchedulerHelperTest);
|
| -};
|
| -
|
| -TEST_F(SchedulerHelperTest, TestPostDefaultTask) {
|
| - std::vector<std::string> run_order;
|
| - default_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(&AppendToVectorTestTask, &run_order, "D1"));
|
| - default_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(&AppendToVectorTestTask, &run_order, "D2"));
|
| - default_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(&AppendToVectorTestTask, &run_order, "D3"));
|
| - default_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(&AppendToVectorTestTask, &run_order, "D4"));
|
| -
|
| - RunUntilIdle();
|
| - EXPECT_THAT(run_order,
|
| - testing::ElementsAre(std::string("D1"), std::string("D2"),
|
| - std::string("D3"), std::string("D4")));
|
| -}
|
| -
|
| -TEST_F(SchedulerHelperTest, TestRentrantTask) {
|
| - int count = 0;
|
| - std::vector<int> run_order;
|
| - default_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(AppendToVectorReentrantTask,
|
| - base::RetainedRef(default_task_runner_), &run_order,
|
| - &count, 5));
|
| - RunUntilIdle();
|
| -
|
| - EXPECT_THAT(run_order, testing::ElementsAre(0, 1, 2, 3, 4));
|
| -}
|
| -
|
| -TEST_F(SchedulerHelperTest, IsShutdown) {
|
| - EXPECT_FALSE(scheduler_helper_->IsShutdown());
|
| -
|
| - scheduler_helper_->Shutdown();
|
| - EXPECT_TRUE(scheduler_helper_->IsShutdown());
|
| -}
|
| -
|
| -TEST_F(SchedulerHelperTest, DefaultTaskRunnerRegistration) {
|
| - EXPECT_EQ(main_task_runner_->default_task_runner(),
|
| - scheduler_helper_->DefaultTaskRunner());
|
| - scheduler_helper_->Shutdown();
|
| - EXPECT_EQ(nullptr, main_task_runner_->default_task_runner());
|
| -}
|
| -
|
| -namespace {
|
| -class MockTaskObserver : public base::MessageLoop::TaskObserver {
|
| - public:
|
| - MOCK_METHOD1(DidProcessTask, void(const base::PendingTask& task));
|
| - MOCK_METHOD1(WillProcessTask, void(const base::PendingTask& task));
|
| -};
|
| -
|
| -void NopTask() {}
|
| -} // namespace
|
| -
|
| -TEST_F(SchedulerHelperTest, ObserversNotifiedFor_DefaultTaskRunner) {
|
| - MockTaskObserver observer;
|
| - scheduler_helper_->AddTaskObserver(&observer);
|
| -
|
| - scheduler_helper_->DefaultTaskRunner()->PostTask(FROM_HERE,
|
| - base::Bind(&NopTask));
|
| -
|
| - EXPECT_CALL(observer, WillProcessTask(_)).Times(1);
|
| - EXPECT_CALL(observer, DidProcessTask(_)).Times(1);
|
| - RunUntilIdle();
|
| -}
|
| -
|
| -TEST_F(SchedulerHelperTest, ObserversNotNotifiedFor_ControlTaskRunner) {
|
| - MockTaskObserver observer;
|
| - scheduler_helper_->AddTaskObserver(&observer);
|
| -
|
| - scheduler_helper_->ControlTaskRunner()->PostTask(FROM_HERE,
|
| - base::Bind(&NopTask));
|
| -
|
| - EXPECT_CALL(observer, WillProcessTask(_)).Times(0);
|
| - EXPECT_CALL(observer, DidProcessTask(_)).Times(0);
|
| - RunUntilIdle();
|
| -}
|
| -
|
| -TEST_F(SchedulerHelperTest,
|
| - ObserversNotNotifiedFor_ControlAfterWakeUpTaskRunner) {
|
| - MockTaskObserver observer;
|
| - scheduler_helper_->AddTaskObserver(&observer);
|
| -
|
| - scheduler_helper_->ControlAfterWakeUpTaskRunner()->PostTask(
|
| - FROM_HERE, base::Bind(&NopTask));
|
| -
|
| - EXPECT_CALL(observer, WillProcessTask(_)).Times(0);
|
| - EXPECT_CALL(observer, DidProcessTask(_)).Times(0);
|
| - LazyNow lazy_now(clock_.get());
|
| - scheduler_helper_->ControlAfterWakeUpTaskRunner()->PumpQueue(&lazy_now, true);
|
| - RunUntilIdle();
|
| -}
|
| -
|
| -namespace {
|
| -
|
| -class MockObserver : public SchedulerHelper::Observer {
|
| - public:
|
| - MOCK_METHOD1(OnUnregisterTaskQueue,
|
| - void(const scoped_refptr<TaskQueue>& queue));
|
| - MOCK_METHOD2(OnTriedToExecuteBlockedTask,
|
| - void(const TaskQueue& queue, const base::PendingTask& task));
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -TEST_F(SchedulerHelperTest, OnUnregisterTaskQueue) {
|
| - MockObserver observer;
|
| - scheduler_helper_->SetObserver(&observer);
|
| -
|
| - scoped_refptr<TaskQueue> task_queue =
|
| - scheduler_helper_->NewTaskQueue(TaskQueue::Spec("test_queue"));
|
| -
|
| - EXPECT_CALL(observer, OnUnregisterTaskQueue(_)).Times(1);
|
| - task_queue->UnregisterTaskQueue();
|
| -
|
| - scheduler_helper_->SetObserver(nullptr);
|
| -}
|
| -
|
| -TEST_F(SchedulerHelperTest, OnTriedToExecuteBlockedTask) {
|
| - MockObserver observer;
|
| - scheduler_helper_->SetObserver(&observer);
|
| -
|
| - scoped_refptr<TaskQueue> task_queue = scheduler_helper_->NewTaskQueue(
|
| - TaskQueue::Spec("test_queue").SetShouldReportWhenExecutionBlocked(true));
|
| - task_queue->SetQueueEnabled(false);
|
| - task_queue->PostTask(FROM_HERE, base::Bind(&NopTask));
|
| -
|
| - EXPECT_CALL(observer, OnTriedToExecuteBlockedTask(_, _)).Times(1);
|
| - RunUntilIdle();
|
| -
|
| - scheduler_helper_->SetObserver(nullptr);
|
| -}
|
| -
|
| -} // namespace scheduler
|
|
|