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

Side by Side Diff: components/scheduler/renderer/webthread_impl_for_renderer_scheduler_unittest.cc

Issue 1250613002: scheduler: Remove task observer shenanigans (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed a failing test. Created 5 years, 5 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
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/renderer/webthread_impl_for_renderer_scheduler.h" 5 #include "components/scheduler/renderer/webthread_impl_for_renderer_scheduler.h"
6 6
7 #include "base/location.h" 7 #include "base/location.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "components/scheduler/child/scheduler_task_runner_delegate_impl.h" 10 #include "components/scheduler/child/scheduler_task_runner_delegate_impl.h"
(...skipping 29 matching lines...) Expand all
40 ~WebThreadImplForRendererSchedulerTest() override {} 40 ~WebThreadImplForRendererSchedulerTest() override {}
41 41
42 void SetWorkBatchSizeForTesting(size_t work_batch_size) { 42 void SetWorkBatchSizeForTesting(size_t work_batch_size) {
43 scheduler_.GetSchedulerHelperForTesting()->SetWorkBatchSizeForTesting( 43 scheduler_.GetSchedulerHelperForTesting()->SetWorkBatchSizeForTesting(
44 work_batch_size); 44 work_batch_size);
45 } 45 }
46 46
47 void TearDown() override { scheduler_.Shutdown(); } 47 void TearDown() override { scheduler_.Shutdown(); }
48 48
49 protected: 49 protected:
50 void EatDefaultTask(MockTaskObserver* observer) {
51 // The scheduler posts one extra DoWork() task automatically.
52 EXPECT_CALL(*observer, willProcessTask());
53 EXPECT_CALL(*observer, didProcessTask());
54 }
55
56 base::MessageLoop message_loop_; 50 base::MessageLoop message_loop_;
57 RendererSchedulerImpl scheduler_; 51 RendererSchedulerImpl scheduler_;
58 scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_; 52 scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_;
59 WebThreadImplForRendererScheduler thread_; 53 WebThreadImplForRendererScheduler thread_;
60 54
61 DISALLOW_COPY_AND_ASSIGN(WebThreadImplForRendererSchedulerTest); 55 DISALLOW_COPY_AND_ASSIGN(WebThreadImplForRendererSchedulerTest);
62 }; 56 };
63 57
64 TEST_F(WebThreadImplForRendererSchedulerTest, TestTaskObserver) { 58 TEST_F(WebThreadImplForRendererSchedulerTest, TestTaskObserver) {
65 MockTaskObserver observer; 59 MockTaskObserver observer;
66 thread_.addTaskObserver(&observer); 60 thread_.addTaskObserver(&observer);
67 scoped_ptr<MockTask> task(new MockTask()); 61 scoped_ptr<MockTask> task(new MockTask());
68 62
69 { 63 {
70 testing::InSequence sequence; 64 testing::InSequence sequence;
71 EXPECT_CALL(observer, willProcessTask()); 65 EXPECT_CALL(observer, willProcessTask());
72 EXPECT_CALL(*task, run()); 66 EXPECT_CALL(*task, run());
73 EXPECT_CALL(observer, didProcessTask()); 67 EXPECT_CALL(observer, didProcessTask());
74
75 EatDefaultTask(&observer);
76 } 68 }
77 69
78 thread_.postTask(blink::WebTraceLocation(), task.release()); 70 thread_.postTask(blink::WebTraceLocation(), task.release());
79 message_loop_.RunUntilIdle(); 71 message_loop_.RunUntilIdle();
80 thread_.removeTaskObserver(&observer); 72 thread_.removeTaskObserver(&observer);
81 } 73 }
82 74
83 TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithOneTask) { 75 TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithOneTask) {
84 MockTaskObserver observer; 76 MockTaskObserver observer;
85 thread_.addTaskObserver(&observer); 77 thread_.addTaskObserver(&observer);
86 scoped_ptr<MockTask> task(new MockTask()); 78 scoped_ptr<MockTask> task(new MockTask());
87 79
88 SetWorkBatchSizeForTesting(kWorkBatchSize); 80 SetWorkBatchSizeForTesting(kWorkBatchSize);
89 { 81 {
90 testing::InSequence sequence; 82 testing::InSequence sequence;
91 EXPECT_CALL(observer, willProcessTask()); 83 EXPECT_CALL(observer, willProcessTask());
92 EXPECT_CALL(*task, run()); 84 EXPECT_CALL(*task, run());
93 EXPECT_CALL(observer, didProcessTask()); 85 EXPECT_CALL(observer, didProcessTask());
94
95 EatDefaultTask(&observer);
96 } 86 }
97 87
98 thread_.postTask(blink::WebTraceLocation(), task.release()); 88 thread_.postTask(blink::WebTraceLocation(), task.release());
99 message_loop_.RunUntilIdle(); 89 message_loop_.RunUntilIdle();
100 thread_.removeTaskObserver(&observer); 90 thread_.removeTaskObserver(&observer);
101 } 91 }
102 92
103 TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithTwoTasks) { 93 TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithTwoTasks) {
104 MockTaskObserver observer; 94 MockTaskObserver observer;
105 thread_.addTaskObserver(&observer); 95 thread_.addTaskObserver(&observer);
106 scoped_ptr<MockTask> task1(new MockTask()); 96 scoped_ptr<MockTask> task1(new MockTask());
107 scoped_ptr<MockTask> task2(new MockTask()); 97 scoped_ptr<MockTask> task2(new MockTask());
108 98
109 SetWorkBatchSizeForTesting(kWorkBatchSize); 99 SetWorkBatchSizeForTesting(kWorkBatchSize);
110 { 100 {
111 testing::InSequence sequence; 101 testing::InSequence sequence;
112 EXPECT_CALL(observer, willProcessTask()); 102 EXPECT_CALL(observer, willProcessTask());
113 EXPECT_CALL(*task1, run()); 103 EXPECT_CALL(*task1, run());
114 EXPECT_CALL(observer, didProcessTask()); 104 EXPECT_CALL(observer, didProcessTask());
115 105
116 EXPECT_CALL(observer, willProcessTask()); 106 EXPECT_CALL(observer, willProcessTask());
117 EXPECT_CALL(*task2, run()); 107 EXPECT_CALL(*task2, run());
118 EXPECT_CALL(observer, didProcessTask()); 108 EXPECT_CALL(observer, didProcessTask());
119
120 EatDefaultTask(&observer);
121 } 109 }
122 110
123 thread_.postTask(blink::WebTraceLocation(), task1.release()); 111 thread_.postTask(blink::WebTraceLocation(), task1.release());
124 thread_.postTask(blink::WebTraceLocation(), task2.release()); 112 thread_.postTask(blink::WebTraceLocation(), task2.release());
125 message_loop_.RunUntilIdle(); 113 message_loop_.RunUntilIdle();
126 thread_.removeTaskObserver(&observer); 114 thread_.removeTaskObserver(&observer);
127 } 115 }
128 116
129 TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithThreeTasks) { 117 TEST_F(WebThreadImplForRendererSchedulerTest, TestWorkBatchWithThreeTasks) {
130 MockTaskObserver observer; 118 MockTaskObserver observer;
131 thread_.addTaskObserver(&observer); 119 thread_.addTaskObserver(&observer);
132 scoped_ptr<MockTask> task1(new MockTask()); 120 scoped_ptr<MockTask> task1(new MockTask());
133 scoped_ptr<MockTask> task2(new MockTask()); 121 scoped_ptr<MockTask> task2(new MockTask());
134 scoped_ptr<MockTask> task3(new MockTask()); 122 scoped_ptr<MockTask> task3(new MockTask());
135 123
136 SetWorkBatchSizeForTesting(kWorkBatchSize); 124 SetWorkBatchSizeForTesting(kWorkBatchSize);
137 { 125 {
138 testing::InSequence sequence; 126 testing::InSequence sequence;
139 EXPECT_CALL(observer, willProcessTask()); 127 EXPECT_CALL(observer, willProcessTask());
140 EXPECT_CALL(*task1, run()); 128 EXPECT_CALL(*task1, run());
141 EXPECT_CALL(observer, didProcessTask()); 129 EXPECT_CALL(observer, didProcessTask());
142 130
143 EXPECT_CALL(observer, willProcessTask()); 131 EXPECT_CALL(observer, willProcessTask());
144 EXPECT_CALL(*task2, run()); 132 EXPECT_CALL(*task2, run());
145 EXPECT_CALL(observer, didProcessTask()); 133 EXPECT_CALL(observer, didProcessTask());
146 134
147 EXPECT_CALL(observer, willProcessTask()); 135 EXPECT_CALL(observer, willProcessTask());
148 EXPECT_CALL(*task3, run()); 136 EXPECT_CALL(*task3, run());
149 EXPECT_CALL(observer, didProcessTask()); 137 EXPECT_CALL(observer, didProcessTask());
150
151 EatDefaultTask(&observer);
152 } 138 }
153 139
154 thread_.postTask(blink::WebTraceLocation(), task1.release()); 140 thread_.postTask(blink::WebTraceLocation(), task1.release());
155 thread_.postTask(blink::WebTraceLocation(), task2.release()); 141 thread_.postTask(blink::WebTraceLocation(), task2.release());
156 thread_.postTask(blink::WebTraceLocation(), task3.release()); 142 thread_.postTask(blink::WebTraceLocation(), task3.release());
157 message_loop_.RunUntilIdle(); 143 message_loop_.RunUntilIdle();
158 thread_.removeTaskObserver(&observer); 144 thread_.removeTaskObserver(&observer);
159 } 145 }
160 146
161 class ExitRunLoopTask : public blink::WebThread::Task { 147 class ExitRunLoopTask : public blink::WebThread::Task {
(...skipping 24 matching lines...) Expand all
186 172
187 // One callback for EnterRunLoop. 173 // One callback for EnterRunLoop.
188 EXPECT_CALL(observer, willProcessTask()); 174 EXPECT_CALL(observer, willProcessTask());
189 175
190 // A pair for ExitRunLoopTask. 176 // A pair for ExitRunLoopTask.
191 EXPECT_CALL(observer, willProcessTask()); 177 EXPECT_CALL(observer, willProcessTask());
192 EXPECT_CALL(observer, didProcessTask()); 178 EXPECT_CALL(observer, didProcessTask());
193 179
194 // A final callback for EnterRunLoop. 180 // A final callback for EnterRunLoop.
195 EXPECT_CALL(observer, didProcessTask()); 181 EXPECT_CALL(observer, didProcessTask());
196
197 EatDefaultTask(&observer);
198 } 182 }
199 183
200 message_loop_.task_runner()->PostTask( 184 message_loop_.task_runner()->PostTask(
201 FROM_HERE, base::Bind(&EnterRunLoop, base::Unretained(&message_loop_), 185 FROM_HERE, base::Bind(&EnterRunLoop, base::Unretained(&message_loop_),
202 base::Unretained(&thread_))); 186 base::Unretained(&thread_)));
203 message_loop_.RunUntilIdle(); 187 message_loop_.RunUntilIdle();
204 thread_.removeTaskObserver(&observer); 188 thread_.removeTaskObserver(&observer);
205 } 189 }
206 190
207 } // namespace scheduler 191 } // namespace scheduler
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698