OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/scheduler/child/scheduler_helper.h" | 5 #include "components/scheduler/child/scheduler_helper.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/test/simple_test_tick_clock.h" | 8 #include "base/test/simple_test_tick_clock.h" |
9 #include "cc/test/ordered_simple_task_runner.h" | 9 #include "cc/test/ordered_simple_task_runner.h" |
10 #include "components/scheduler/base/task_queue.h" | 10 #include "components/scheduler/base/task_queue.h" |
11 #include "components/scheduler/base/test_time_source.h" | 11 #include "components/scheduler/base/test_time_source.h" |
12 #include "components/scheduler/child/scheduler_task_runner_delegate_for_test.h" | 12 #include "components/scheduler/child/scheduler_tqm_delegate_for_test.h" |
13 #include "testing/gmock/include/gmock/gmock.h" | 13 #include "testing/gmock/include/gmock/gmock.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
15 | 15 |
16 using testing::_; | 16 using testing::_; |
17 using testing::AnyNumber; | 17 using testing::AnyNumber; |
18 using testing::Invoke; | 18 using testing::Invoke; |
19 using testing::Return; | 19 using testing::Return; |
20 | 20 |
21 namespace scheduler { | 21 namespace scheduler { |
22 | 22 |
(...skipping 16 matching lines...) Expand all Loading... |
39 } | 39 } |
40 } | 40 } |
41 | 41 |
42 }; // namespace | 42 }; // namespace |
43 | 43 |
44 class SchedulerHelperTest : public testing::Test { | 44 class SchedulerHelperTest : public testing::Test { |
45 public: | 45 public: |
46 SchedulerHelperTest() | 46 SchedulerHelperTest() |
47 : clock_(new base::SimpleTestTickClock()), | 47 : clock_(new base::SimpleTestTickClock()), |
48 mock_task_runner_(new cc::OrderedSimpleTaskRunner(clock_.get(), false)), | 48 mock_task_runner_(new cc::OrderedSimpleTaskRunner(clock_.get(), false)), |
49 main_task_runner_( | 49 main_task_runner_(SchedulerTqmDelegateForTest::Create( |
50 SchedulerTaskRunnerDelegateForTest::Create(mock_task_runner_)), | 50 mock_task_runner_, |
| 51 make_scoped_ptr(new TestTimeSource(clock_.get())))), |
51 scheduler_helper_(new SchedulerHelper( | 52 scheduler_helper_(new SchedulerHelper( |
52 main_task_runner_, | 53 main_task_runner_, |
53 "test.scheduler", | 54 "test.scheduler", |
54 TRACE_DISABLED_BY_DEFAULT("test.scheduler"), | 55 TRACE_DISABLED_BY_DEFAULT("test.scheduler"), |
55 TRACE_DISABLED_BY_DEFAULT("test.scheduler.dbg"))), | 56 TRACE_DISABLED_BY_DEFAULT("test.scheduler.dbg"))), |
56 default_task_runner_(scheduler_helper_->DefaultTaskRunner()) { | 57 default_task_runner_(scheduler_helper_->DefaultTaskRunner()) { |
57 clock_->Advance(base::TimeDelta::FromMicroseconds(5000)); | 58 clock_->Advance(base::TimeDelta::FromMicroseconds(5000)); |
58 scheduler_helper_->SetTimeSourceForTesting( | |
59 make_scoped_ptr(new TestTimeSource(clock_.get()))); | |
60 scheduler_helper_->GetTaskQueueManagerForTesting()->SetTimeSourceForTesting( | |
61 make_scoped_ptr(new TestTimeSource(clock_.get()))); | |
62 } | 59 } |
63 | 60 |
64 ~SchedulerHelperTest() override {} | 61 ~SchedulerHelperTest() override {} |
65 | 62 |
66 void TearDown() override { | 63 void TearDown() override { |
67 // Check that all tests stop posting tasks. | 64 // Check that all tests stop posting tasks. |
68 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); | 65 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); |
69 while (mock_task_runner_->RunUntilIdle()) { | 66 while (mock_task_runner_->RunUntilIdle()) { |
70 } | 67 } |
71 } | 68 } |
72 | 69 |
73 void RunUntilIdle() { mock_task_runner_->RunUntilIdle(); } | 70 void RunUntilIdle() { mock_task_runner_->RunUntilIdle(); } |
74 | 71 |
75 template <typename E> | 72 template <typename E> |
76 static void CallForEachEnumValue(E first, | 73 static void CallForEachEnumValue(E first, |
77 E last, | 74 E last, |
78 const char* (*function)(E)) { | 75 const char* (*function)(E)) { |
79 for (E val = first; val < last; | 76 for (E val = first; val < last; |
80 val = static_cast<E>(static_cast<int>(val) + 1)) { | 77 val = static_cast<E>(static_cast<int>(val) + 1)) { |
81 (*function)(val); | 78 (*function)(val); |
82 } | 79 } |
83 } | 80 } |
84 | 81 |
85 protected: | 82 protected: |
86 scoped_ptr<base::SimpleTestTickClock> clock_; | 83 scoped_ptr<base::SimpleTestTickClock> clock_; |
87 scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_; | 84 scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_; |
88 | 85 |
89 scoped_refptr<SchedulerTaskRunnerDelegateForTest> main_task_runner_; | 86 scoped_refptr<SchedulerTqmDelegateForTest> main_task_runner_; |
90 scoped_ptr<SchedulerHelper> scheduler_helper_; | 87 scoped_ptr<SchedulerHelper> scheduler_helper_; |
91 scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_; | 88 scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_; |
92 | 89 |
93 DISALLOW_COPY_AND_ASSIGN(SchedulerHelperTest); | 90 DISALLOW_COPY_AND_ASSIGN(SchedulerHelperTest); |
94 }; | 91 }; |
95 | 92 |
96 TEST_F(SchedulerHelperTest, TestPostDefaultTask) { | 93 TEST_F(SchedulerHelperTest, TestPostDefaultTask) { |
97 std::vector<std::string> run_order; | 94 std::vector<std::string> run_order; |
98 default_task_runner_->PostTask( | 95 default_task_runner_->PostTask( |
99 FROM_HERE, base::Bind(&AppendToVectorTestTask, &run_order, "D1")); | 96 FROM_HERE, base::Bind(&AppendToVectorTestTask, &run_order, "D1")); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 scoped_refptr<TaskQueue> task_queue = | 197 scoped_refptr<TaskQueue> task_queue = |
201 scheduler_helper_->NewTaskQueue(TaskQueue::Spec("test_queue")); | 198 scheduler_helper_->NewTaskQueue(TaskQueue::Spec("test_queue")); |
202 | 199 |
203 EXPECT_CALL(observer, OnUnregisterTaskQueue(_)).Times(1); | 200 EXPECT_CALL(observer, OnUnregisterTaskQueue(_)).Times(1); |
204 task_queue->UnregisterTaskQueue(); | 201 task_queue->UnregisterTaskQueue(); |
205 | 202 |
206 scheduler_helper_->SetObserver(nullptr); | 203 scheduler_helper_->SetObserver(nullptr); |
207 } | 204 } |
208 | 205 |
209 } // namespace scheduler | 206 } // namespace scheduler |
OLD | NEW |