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

Side by Side Diff: content/child/scheduler/task_queue_manager_unittest.cc

Issue 1098033002: Remove dependency on cc::TestNowSource from scheduler code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updates Created 5 years, 8 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 unified diff | Download patch
« no previous file with comments | « content/child/scheduler/task_queue_manager.cc ('k') | content/child/scheduler/time_source.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "content/child/scheduler/task_queue_manager.h" 5 #include "content/child/scheduler/task_queue_manager.h"
6 6
7 #include "base/threading/thread.h" 7 #include "base/threading/thread.h"
8 #include "cc/test/ordered_simple_task_runner.h" 8 #include "cc/test/ordered_simple_task_runner.h"
9 #include "cc/test/test_now_source.h" 9 #include "cc/test/test_now_source.h"
10 #include "content/child/scheduler/nestable_task_runner_for_test.h" 10 #include "content/child/scheduler/nestable_task_runner_for_test.h"
11 #include "content/child/scheduler/scheduler_message_loop_delegate.h" 11 #include "content/child/scheduler/scheduler_message_loop_delegate.h"
12 #include "content/child/scheduler/task_queue_selector.h" 12 #include "content/child/scheduler/task_queue_selector.h"
13 #include "content/test/test_time_source.h"
13 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
14 15
15 using testing::ElementsAre; 16 using testing::ElementsAre;
16 using testing::_; 17 using testing::_;
17 18
18 namespace content { 19 namespace content {
19 namespace { 20 namespace {
20 21
21 class SelectorForTest : public TaskQueueSelector { 22 class SelectorForTest : public TaskQueueSelector {
22 public: 23 public:
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 }; 117 };
117 118
118 void Initialize(size_t num_queues, SelectorType type) { 119 void Initialize(size_t num_queues, SelectorType type) {
119 now_src_ = cc::TestNowSource::Create(1000); 120 now_src_ = cc::TestNowSource::Create(1000);
120 test_task_runner_ = 121 test_task_runner_ =
121 make_scoped_refptr(new cc::OrderedSimpleTaskRunner(now_src_, false)); 122 make_scoped_refptr(new cc::OrderedSimpleTaskRunner(now_src_, false));
122 selector_ = make_scoped_ptr(createSelectorForTest(type)); 123 selector_ = make_scoped_ptr(createSelectorForTest(type));
123 manager_ = make_scoped_ptr(new TaskQueueManager( 124 manager_ = make_scoped_ptr(new TaskQueueManager(
124 num_queues, NestableTaskRunnerForTest::Create(test_task_runner_.get()), 125 num_queues, NestableTaskRunnerForTest::Create(test_task_runner_.get()),
125 selector_.get(), "test.scheduler")); 126 selector_.get(), "test.scheduler"));
126 manager_->SetTimeSourceForTesting(now_src_); 127 manager_->SetTimeSourceForTesting(
128 make_scoped_ptr(new TestTimeSource(now_src_)));
127 129
128 EXPECT_EQ(num_queues, selector_->work_queues().size()); 130 EXPECT_EQ(num_queues, selector_->work_queues().size());
129 } 131 }
130 132
131 void InitializeWithRealMessageLoop(size_t num_queues, SelectorType type) { 133 void InitializeWithRealMessageLoop(size_t num_queues, SelectorType type) {
132 message_loop_.reset(new base::MessageLoop()); 134 message_loop_.reset(new base::MessageLoop());
133 selector_ = make_scoped_ptr(createSelectorForTest(type)); 135 selector_ = make_scoped_ptr(createSelectorForTest(type));
134 manager_ = make_scoped_ptr(new TaskQueueManager( 136 manager_ = make_scoped_ptr(new TaskQueueManager(
135 num_queues, SchedulerMessageLoopDelegate::Create(message_loop_.get()), 137 num_queues, SchedulerMessageLoopDelegate::Create(message_loop_.get()),
136 selector_.get(), "test.scheduler")); 138 selector_.get(), "test.scheduler"));
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 EXPECT_THAT(run_order, ElementsAre(1, 3, 5, 2, 4, 6)); 218 EXPECT_THAT(run_order, ElementsAre(1, 3, 5, 2, 4, 6));
217 } 219 }
218 220
219 void NopTask() { 221 void NopTask() {
220 } 222 }
221 223
222 TEST_F(TaskQueueManagerTest, NowNotCalledWhenThereAreNoDelayedTasks) { 224 TEST_F(TaskQueueManagerTest, NowNotCalledWhenThereAreNoDelayedTasks) {
223 Initialize(3u, SelectorType::Explicit); 225 Initialize(3u, SelectorType::Explicit);
224 226
225 scoped_refptr<cc::TestNowSource> now_src = cc::TestNowSource::Create(1000); 227 scoped_refptr<cc::TestNowSource> now_src = cc::TestNowSource::Create(1000);
226 manager_->SetTimeSourceForTesting(now_src); 228 manager_->SetTimeSourceForTesting(
229 make_scoped_ptr(new TestTimeSource(now_src)));
227 230
228 scoped_refptr<base::SingleThreadTaskRunner> runners[3] = { 231 scoped_refptr<base::SingleThreadTaskRunner> runners[3] = {
229 manager_->TaskRunnerForQueue(0), 232 manager_->TaskRunnerForQueue(0),
230 manager_->TaskRunnerForQueue(1), 233 manager_->TaskRunnerForQueue(1),
231 manager_->TaskRunnerForQueue(2)}; 234 manager_->TaskRunnerForQueue(2)};
232 235
233 selector_->AppendQueueToService(0); 236 selector_->AppendQueueToService(0);
234 selector_->AppendQueueToService(1); 237 selector_->AppendQueueToService(1);
235 selector_->AppendQueueToService(2); 238 selector_->AppendQueueToService(2);
236 selector_->AppendQueueToService(0); 239 selector_->AppendQueueToService(0);
(...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after
980 scoped_refptr<base::SingleThreadTaskRunner> runner = 983 scoped_refptr<base::SingleThreadTaskRunner> runner =
981 manager_->TaskRunnerForQueue(0); 984 manager_->TaskRunnerForQueue(0);
982 EXPECT_TRUE(runner->RunsTasksOnCurrentThread()); 985 EXPECT_TRUE(runner->RunsTasksOnCurrentThread());
983 manager_.reset(); 986 manager_.reset();
984 EXPECT_TRUE(runner->RunsTasksOnCurrentThread()); 987 EXPECT_TRUE(runner->RunsTasksOnCurrentThread());
985 } 988 }
986 989
987 TEST_F(TaskQueueManagerTest, NextPendingDelayedTaskRunTime) { 990 TEST_F(TaskQueueManagerTest, NextPendingDelayedTaskRunTime) {
988 scoped_refptr<cc::TestNowSource> clock(cc::TestNowSource::Create()); 991 scoped_refptr<cc::TestNowSource> clock(cc::TestNowSource::Create());
989 Initialize(2u, SelectorType::Explicit); 992 Initialize(2u, SelectorType::Explicit);
990 manager_->SetTimeSourceForTesting(clock); 993 manager_->SetTimeSourceForTesting(make_scoped_ptr(new TestTimeSource(clock)));
991 994
992 scoped_refptr<base::SingleThreadTaskRunner> runners[2] = { 995 scoped_refptr<base::SingleThreadTaskRunner> runners[2] = {
993 manager_->TaskRunnerForQueue(0), manager_->TaskRunnerForQueue(1)}; 996 manager_->TaskRunnerForQueue(0), manager_->TaskRunnerForQueue(1)};
994 997
995 // With no delayed tasks. 998 // With no delayed tasks.
996 EXPECT_TRUE(manager_->NextPendingDelayedTaskRunTime().is_null()); 999 EXPECT_TRUE(manager_->NextPendingDelayedTaskRunTime().is_null());
997 1000
998 // With a non-delayed task. 1001 // With a non-delayed task.
999 runners[0]->PostTask(FROM_HERE, base::Bind(&NopTask)); 1002 runners[0]->PostTask(FROM_HERE, base::Bind(&NopTask));
1000 EXPECT_TRUE(manager_->NextPendingDelayedTaskRunTime().is_null()); 1003 EXPECT_TRUE(manager_->NextPendingDelayedTaskRunTime().is_null());
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1094 TEST_F(TaskQueueManagerTest, GetAndClearTaskWasRunBitmap_ManyQueues) { 1097 TEST_F(TaskQueueManagerTest, GetAndClearTaskWasRunBitmap_ManyQueues) {
1095 Initialize(64u, SelectorType::Automatic); 1098 Initialize(64u, SelectorType::Automatic);
1096 1099
1097 manager_->TaskRunnerForQueue(63)->PostTask(FROM_HERE, base::Bind(&NopTask)); 1100 manager_->TaskRunnerForQueue(63)->PostTask(FROM_HERE, base::Bind(&NopTask));
1098 test_task_runner_->RunUntilIdle(); 1101 test_task_runner_->RunUntilIdle();
1099 EXPECT_EQ(1ull << 63, manager_->GetAndClearTaskWasRunOnQueueBitmap()); 1102 EXPECT_EQ(1ull << 63, manager_->GetAndClearTaskWasRunOnQueueBitmap());
1100 } 1103 }
1101 1104
1102 } // namespace 1105 } // namespace
1103 } // namespace content 1106 } // namespace content
OLDNEW
« no previous file with comments | « content/child/scheduler/task_queue_manager.cc ('k') | content/child/scheduler/time_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698