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

Side by Side Diff: components/scheduler/child/worker_scheduler_impl_unittest.cc

Issue 1424053002: Adds a flag to support "Virtual Time" to the blink scheduler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/worker_scheduler_impl.h" 5 #include "components/scheduler/child/worker_scheduler_impl.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "base/test/simple_test_tick_clock.h" 9 #include "base/test/simple_test_tick_clock.h"
10 #include "cc/test/ordered_simple_task_runner.h" 10 #include "cc/test/ordered_simple_task_runner.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::ElementsAreArray; 16 using testing::ElementsAreArray;
17 17
18 namespace scheduler { 18 namespace scheduler {
19 19
20 namespace { 20 namespace {
21 void NopTask() { 21 void NopTask() {
22 } 22 }
(...skipping 23 matching lines...) Expand all
46 base::TimeTicks deadline) { 46 base::TimeTicks deadline) {
47 timeline->push_back(base::StringPrintf("run TimelineIdleTestTask deadline %d", 47 timeline->push_back(base::StringPrintf("run TimelineIdleTestTask deadline %d",
48 TimeTicksToIntMs(deadline))); 48 TimeTicksToIntMs(deadline)));
49 } 49 }
50 50
51 }; // namespace 51 }; // namespace
52 52
53 class WorkerSchedulerImplForTest : public WorkerSchedulerImpl { 53 class WorkerSchedulerImplForTest : public WorkerSchedulerImpl {
54 public: 54 public:
55 WorkerSchedulerImplForTest( 55 WorkerSchedulerImplForTest(
56 scoped_refptr<SchedulerTaskRunnerDelegate> main_task_runner, 56 scoped_refptr<SchedulerTqmDelegate> main_task_runner,
57 base::SimpleTestTickClock* clock_) 57 base::SimpleTestTickClock* clock_)
58 : WorkerSchedulerImpl(main_task_runner), 58 : WorkerSchedulerImpl(main_task_runner),
59 clock_(clock_), 59 clock_(clock_),
60 timeline_(nullptr) {} 60 timeline_(nullptr) {}
61 61
62 void RecordTimelineEvents(std::vector<std::string>* timeline) { 62 void RecordTimelineEvents(std::vector<std::string>* timeline) {
63 timeline_ = timeline; 63 timeline_ = timeline;
64 } 64 }
65 65
66 private: 66 private:
(...skipping 18 matching lines...) Expand all
85 85
86 base::SimpleTestTickClock* clock_; // NOT OWNED 86 base::SimpleTestTickClock* clock_; // NOT OWNED
87 std::vector<std::string>* timeline_; // NOT OWNED 87 std::vector<std::string>* timeline_; // NOT OWNED
88 }; 88 };
89 89
90 class WorkerSchedulerImplTest : public testing::Test { 90 class WorkerSchedulerImplTest : public testing::Test {
91 public: 91 public:
92 WorkerSchedulerImplTest() 92 WorkerSchedulerImplTest()
93 : clock_(new base::SimpleTestTickClock()), 93 : clock_(new base::SimpleTestTickClock()),
94 mock_task_runner_(new cc::OrderedSimpleTaskRunner(clock_.get(), true)), 94 mock_task_runner_(new cc::OrderedSimpleTaskRunner(clock_.get(), true)),
95 main_task_runner_( 95 main_task_runner_(SchedulerTqmDelegateForTest::Create(
96 SchedulerTaskRunnerDelegateForTest::Create(mock_task_runner_)), 96 mock_task_runner_,
97 make_scoped_ptr(new TestTimeSource(clock_.get())))),
97 scheduler_( 98 scheduler_(
98 new WorkerSchedulerImplForTest(main_task_runner_, clock_.get())), 99 new WorkerSchedulerImplForTest(main_task_runner_, clock_.get())),
99 timeline_(nullptr) { 100 timeline_(nullptr) {
100 clock_->Advance(base::TimeDelta::FromMicroseconds(5000)); 101 clock_->Advance(base::TimeDelta::FromMicroseconds(5000));
101 scheduler_->GetSchedulerHelperForTesting()->SetTimeSourceForTesting(
102 make_scoped_ptr(new TestTimeSource(clock_.get())));
103 scheduler_->GetSchedulerHelperForTesting()
104 ->GetTaskQueueManagerForTesting()
105 ->SetTimeSourceForTesting(
106 make_scoped_ptr(new TestTimeSource(clock_.get())));
107 } 102 }
108 103
109 ~WorkerSchedulerImplTest() override {} 104 ~WorkerSchedulerImplTest() override {}
110 105
111 void TearDown() override { 106 void TearDown() override {
112 // Check that all tests stop posting tasks. 107 // Check that all tests stop posting tasks.
113 while (mock_task_runner_->RunUntilIdle()) { 108 while (mock_task_runner_->RunUntilIdle()) {
114 } 109 }
115 } 110 }
116 111
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 static base::TimeDelta maximum_idle_period_duration() { 163 static base::TimeDelta maximum_idle_period_duration() {
169 return base::TimeDelta::FromMilliseconds( 164 return base::TimeDelta::FromMilliseconds(
170 IdleHelper::kMaximumIdlePeriodMillis); 165 IdleHelper::kMaximumIdlePeriodMillis);
171 } 166 }
172 167
173 protected: 168 protected:
174 scoped_ptr<base::SimpleTestTickClock> clock_; 169 scoped_ptr<base::SimpleTestTickClock> clock_;
175 // Only one of mock_task_runner_ or message_loop_ will be set. 170 // Only one of mock_task_runner_ or message_loop_ will be set.
176 scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_; 171 scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_;
177 172
178 scoped_refptr<SchedulerTaskRunnerDelegate> main_task_runner_; 173 scoped_refptr<SchedulerTqmDelegate> main_task_runner_;
179 scoped_ptr<WorkerSchedulerImplForTest> scheduler_; 174 scoped_ptr<WorkerSchedulerImplForTest> scheduler_;
180 scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_; 175 scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_;
181 scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_; 176 scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_;
182 std::vector<std::string>* timeline_; // NOT OWNED 177 std::vector<std::string>* timeline_; // NOT OWNED
183 178
184 DISALLOW_COPY_AND_ASSIGN(WorkerSchedulerImplTest); 179 DISALLOW_COPY_AND_ASSIGN(WorkerSchedulerImplTest);
185 }; 180 };
186 181
187 TEST_F(WorkerSchedulerImplTest, TestPostDefaultTask) { 182 TEST_F(WorkerSchedulerImplTest, TestPostDefaultTask) {
188 Init(); 183 Init();
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 "run RecordTimelineTask @ 55", 374 "run RecordTimelineTask @ 55",
380 "IsNotQuiescent @ 55", // NOTE we have to wait for quiescence. 375 "IsNotQuiescent @ 55", // NOTE we have to wait for quiescence.
381 "CanEnterLongIdlePeriod @ 355", 376 "CanEnterLongIdlePeriod @ 355",
382 "run TimelineIdleTestTask deadline 405", 377 "run TimelineIdleTestTask deadline 405",
383 "RunUntilIdle end @ 355"}; 378 "RunUntilIdle end @ 355"};
384 379
385 EXPECT_THAT(timeline, ElementsAreArray(expected_timeline)); 380 EXPECT_THAT(timeline, ElementsAreArray(expected_timeline));
386 } 381 }
387 382
388 } // namespace scheduler 383 } // namespace scheduler
OLDNEW
« no previous file with comments | « components/scheduler/child/worker_scheduler_impl.cc ('k') | components/scheduler/common/scheduler_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698