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

Side by Side Diff: cc/test/task_graph_runner_test_template.h

Issue 1538433002: Revert of TaskGraphRunner Group support (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@refactor
Patch Set: Created 5 years 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 | « cc/raster/tile_task_worker_pool_unittest.cc ('k') | cc/test/task_graph_runner_test_template.cc » ('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 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 #ifndef CC_TEST_TASK_GRAPH_RUNNER_TEST_TEMPLATE_H_ 5 #ifndef CC_TEST_TASK_GRAPH_RUNNER_TEST_TEMPLATE_H_
6 #define CC_TEST_TASK_GRAPH_RUNNER_TEST_TEMPLATE_H_ 6 #define CC_TEST_TASK_GRAPH_RUNNER_TEST_TEMPLATE_H_
7 7
8 #include "cc/raster/task_graph_runner.h" 8 #include "cc/raster/task_graph_runner.h"
9 9
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/synchronization/lock.h" 14 #include "base/synchronization/lock.h"
15 #include "base/threading/simple_thread.h" 15 #include "base/threading/simple_thread.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 namespace cc { 18 namespace cc {
19 19
20 class TaskGraphRunnerTestBase { 20 class TaskGraphRunnerTestBase {
21 public: 21 public:
22 struct TaskInfo { 22 struct TaskInfo {
23 TaskInfo(int namespace_index, 23 TaskInfo(int namespace_index,
24 unsigned id, 24 unsigned id,
25 unsigned dependent_id, 25 unsigned dependent_id,
26 unsigned dependent_count, 26 unsigned dependent_count,
27 unsigned category,
28 unsigned priority) 27 unsigned priority)
29 : namespace_index(namespace_index), 28 : namespace_index(namespace_index),
30 id(id), 29 id(id),
31 dependent_id(dependent_id), 30 dependent_id(dependent_id),
32 dependent_count(dependent_count), 31 dependent_count(dependent_count),
33 category(category),
34 priority(priority) {} 32 priority(priority) {}
35 33
36 int namespace_index; 34 int namespace_index;
37 unsigned id; 35 unsigned id;
38 unsigned dependent_id; 36 unsigned dependent_id;
39 unsigned dependent_count; 37 unsigned dependent_count;
40 unsigned category;
41 unsigned priority; 38 unsigned priority;
42 }; 39 };
43 40
44 TaskGraphRunnerTestBase() {} 41 TaskGraphRunnerTestBase() {}
45 42
46 void SetTaskGraphRunner(TaskGraphRunner* task_graph_runner); 43 void SetTaskGraphRunner(TaskGraphRunner* task_graph_runner);
47 void ResetIds(int namespace_index); 44 void ResetIds(int namespace_index);
48 void RunAllTasks(int namespace_index); 45 void RunAllTasks(int namespace_index);
49 void RunTaskOnWorkerThread(int namespace_index, unsigned id); 46 void RunTaskOnWorkerThread(int namespace_index, unsigned id);
50 void OnTaskCompleted(int namespace_index, unsigned id); 47 void OnTaskCompleted(int namespace_index, unsigned id);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 TYPED_TEST_CASE_P(TaskGraphRunnerTest); 119 TYPED_TEST_CASE_P(TaskGraphRunnerTest);
123 120
124 TYPED_TEST_P(TaskGraphRunnerTest, Basic) { 121 TYPED_TEST_P(TaskGraphRunnerTest, Basic) {
125 const int kNamespaceCount = TaskGraphRunnerTestBase::kNamespaceCount; 122 const int kNamespaceCount = TaskGraphRunnerTestBase::kNamespaceCount;
126 using TaskInfo = TaskGraphRunnerTestBase::TaskInfo; 123 using TaskInfo = TaskGraphRunnerTestBase::TaskInfo;
127 124
128 for (int i = 0; i < kNamespaceCount; ++i) { 125 for (int i = 0; i < kNamespaceCount; ++i) {
129 EXPECT_EQ(0u, this->run_task_ids(i).size()); 126 EXPECT_EQ(0u, this->run_task_ids(i).size());
130 EXPECT_EQ(0u, this->on_task_completed_ids(i).size()); 127 EXPECT_EQ(0u, this->on_task_completed_ids(i).size());
131 128
132 this->ScheduleTasks( 129 this->ScheduleTasks(i,
133 i, std::vector<TaskInfo>(1, TaskInfo(i, 0u, 0u, 0u, 0u, 0u))); 130 std::vector<TaskInfo>(1, TaskInfo(i, 0u, 0u, 0u, 0u)));
134 } 131 }
135 132
136 for (int i = 0; i < kNamespaceCount; ++i) { 133 for (int i = 0; i < kNamespaceCount; ++i) {
137 this->RunAllTasks(i); 134 this->RunAllTasks(i);
138 135
139 EXPECT_EQ(1u, this->run_task_ids(i).size()); 136 EXPECT_EQ(1u, this->run_task_ids(i).size());
140 EXPECT_EQ(1u, this->on_task_completed_ids(i).size()); 137 EXPECT_EQ(1u, this->on_task_completed_ids(i).size());
141 } 138 }
142 139
143 for (int i = 0; i < kNamespaceCount; ++i) 140 for (int i = 0; i < kNamespaceCount; ++i)
144 this->ScheduleTasks( 141 this->ScheduleTasks(i,
145 i, std::vector<TaskInfo>(1, TaskInfo(i, 0u, 0u, 1u, 0u, 0u))); 142 std::vector<TaskInfo>(1, TaskInfo(i, 0u, 0u, 1u, 0u)));
146 143
147 for (int i = 0; i < kNamespaceCount; ++i) { 144 for (int i = 0; i < kNamespaceCount; ++i) {
148 this->RunAllTasks(i); 145 this->RunAllTasks(i);
149 146
150 EXPECT_EQ(3u, this->run_task_ids(i).size()); 147 EXPECT_EQ(3u, this->run_task_ids(i).size());
151 EXPECT_EQ(2u, this->on_task_completed_ids(i).size()); 148 EXPECT_EQ(2u, this->on_task_completed_ids(i).size());
152 } 149 }
153 150
154 for (int i = 0; i < kNamespaceCount; ++i) 151 for (int i = 0; i < kNamespaceCount; ++i)
155 this->ScheduleTasks( 152 this->ScheduleTasks(i,
156 i, std::vector<TaskInfo>(1, TaskInfo(i, 0u, 0u, 2u, 0u, 0u))); 153 std::vector<TaskInfo>(1, TaskInfo(i, 0u, 0u, 2u, 0u)));
157 154
158 for (int i = 0; i < kNamespaceCount; ++i) { 155 for (int i = 0; i < kNamespaceCount; ++i) {
159 this->RunAllTasks(i); 156 this->RunAllTasks(i);
160 157
161 EXPECT_EQ(6u, this->run_task_ids(i).size()); 158 EXPECT_EQ(6u, this->run_task_ids(i).size());
162 EXPECT_EQ(3u, this->on_task_completed_ids(i).size()); 159 EXPECT_EQ(3u, this->on_task_completed_ids(i).size());
163 } 160 }
164 } 161 }
165 162
166 TYPED_TEST_P(TaskGraphRunnerTest, Dependencies) { 163 TYPED_TEST_P(TaskGraphRunnerTest, Dependencies) {
167 const int kNamespaceCount = TaskGraphRunnerTestBase::kNamespaceCount; 164 const int kNamespaceCount = TaskGraphRunnerTestBase::kNamespaceCount;
168 using TaskInfo = TaskGraphRunnerTestBase::TaskInfo; 165 using TaskInfo = TaskGraphRunnerTestBase::TaskInfo;
169 166
170 for (int i = 0; i < kNamespaceCount; ++i) { 167 for (int i = 0; i < kNamespaceCount; ++i) {
171 this->ScheduleTasks(i, std::vector<TaskInfo>(1, TaskInfo(i, 0u, 1u, 168 this->ScheduleTasks(i, std::vector<TaskInfo>(1, TaskInfo(i, 0u, 1u,
172 1u, // 1 dependent 169 1u, // 1 dependent
173 0u, 0u))); 170 0u)));
174 } 171 }
175 172
176 for (int i = 0; i < kNamespaceCount; ++i) { 173 for (int i = 0; i < kNamespaceCount; ++i) {
177 this->RunAllTasks(i); 174 this->RunAllTasks(i);
178 175
179 // Check if task ran before dependent. 176 // Check if task ran before dependent.
180 ASSERT_EQ(2u, this->run_task_ids(i).size()); 177 ASSERT_EQ(2u, this->run_task_ids(i).size());
181 EXPECT_EQ(0u, this->run_task_ids(i)[0]); 178 EXPECT_EQ(0u, this->run_task_ids(i)[0]);
182 EXPECT_EQ(1u, this->run_task_ids(i)[1]); 179 EXPECT_EQ(1u, this->run_task_ids(i)[1]);
183 ASSERT_EQ(1u, this->on_task_completed_ids(i).size()); 180 ASSERT_EQ(1u, this->on_task_completed_ids(i).size());
184 EXPECT_EQ(0u, this->on_task_completed_ids(i)[0]); 181 EXPECT_EQ(0u, this->on_task_completed_ids(i)[0]);
185 } 182 }
186 183
187 for (int i = 0; i < kNamespaceCount; ++i) { 184 for (int i = 0; i < kNamespaceCount; ++i) {
188 this->ScheduleTasks(i, 185 this->ScheduleTasks(i,
189 std::vector<TaskInfo>(1, TaskInfo(i, 2u, 3u, 186 std::vector<TaskInfo>(1, TaskInfo(i, 2u, 3u,
190 2u, // 2 dependents 187 2u, // 2 dependents
191 0u, 0u))); 188 0u)));
192 } 189 }
193 190
194 for (int i = 0; i < kNamespaceCount; ++i) { 191 for (int i = 0; i < kNamespaceCount; ++i) {
195 this->RunAllTasks(i); 192 this->RunAllTasks(i);
196 193
197 // Task should only run once. 194 // Task should only run once.
198 ASSERT_EQ(5u, this->run_task_ids(i).size()); 195 ASSERT_EQ(5u, this->run_task_ids(i).size());
199 EXPECT_EQ(2u, this->run_task_ids(i)[2]); 196 EXPECT_EQ(2u, this->run_task_ids(i)[2]);
200 EXPECT_EQ(3u, this->run_task_ids(i)[3]); 197 EXPECT_EQ(3u, this->run_task_ids(i)[3]);
201 EXPECT_EQ(3u, this->run_task_ids(i)[4]); 198 EXPECT_EQ(3u, this->run_task_ids(i)[4]);
202 ASSERT_EQ(2u, this->on_task_completed_ids(i).size()); 199 ASSERT_EQ(2u, this->on_task_completed_ids(i).size());
203 EXPECT_EQ(2u, this->on_task_completed_ids(i)[1]); 200 EXPECT_EQ(2u, this->on_task_completed_ids(i)[1]);
204 } 201 }
205 } 202 }
206 203
207 TYPED_TEST_P(TaskGraphRunnerTest, Categorys) { 204 REGISTER_TYPED_TEST_CASE_P(TaskGraphRunnerTest, Basic, Dependencies);
208 const int kNamespaceCount = TaskGraphRunnerTestBase::kNamespaceCount;
209 const unsigned kCategoryCount = 3;
210 using TaskInfo = TaskGraphRunnerTestBase::TaskInfo;
211
212 for (int i = 0; i < kNamespaceCount; ++i) {
213 EXPECT_EQ(0u, this->run_task_ids(i).size());
214 EXPECT_EQ(0u, this->on_task_completed_ids(i).size());
215 std::vector<TaskInfo> tasks;
216 for (unsigned j = 0; j < kCategoryCount; ++j) {
217 tasks.emplace_back(i, 0u, 0u, 0u, j, 0u);
218 }
219 this->ScheduleTasks(i, tasks);
220 }
221
222 for (int i = 0; i < kNamespaceCount; ++i) {
223 this->RunAllTasks(i);
224
225 EXPECT_EQ(kCategoryCount, this->run_task_ids(i).size());
226 EXPECT_EQ(kCategoryCount, this->on_task_completed_ids(i).size());
227 }
228
229 for (int i = 0; i < kNamespaceCount; ++i) {
230 std::vector<TaskInfo> tasks;
231 for (unsigned j = 0; j < kCategoryCount; ++j) {
232 tasks.emplace_back(i, 0u, 0u, 1u, j, 0u);
233 }
234 this->ScheduleTasks(i, tasks);
235 }
236
237 for (int i = 0; i < kNamespaceCount; ++i) {
238 this->RunAllTasks(i);
239
240 EXPECT_EQ(kCategoryCount * 3u, this->run_task_ids(i).size());
241 EXPECT_EQ(kCategoryCount * 2u, this->on_task_completed_ids(i).size());
242 }
243
244 for (int i = 0; i < kNamespaceCount; ++i) {
245 std::vector<TaskInfo> tasks;
246 for (unsigned j = 0; j < kCategoryCount; ++j) {
247 tasks.emplace_back(i, 0u, 0u, 2u, j, 0u);
248 }
249 this->ScheduleTasks(i, tasks);
250 }
251
252 for (int i = 0; i < kNamespaceCount; ++i) {
253 this->RunAllTasks(i);
254
255 EXPECT_EQ(kCategoryCount * 6u, this->run_task_ids(i).size());
256 EXPECT_EQ(kCategoryCount * 3u, this->on_task_completed_ids(i).size());
257 }
258 }
259
260 REGISTER_TYPED_TEST_CASE_P(TaskGraphRunnerTest, Basic, Dependencies, Categorys);
261 205
262 template <typename TaskRunnerTestDelegate> 206 template <typename TaskRunnerTestDelegate>
263 using SingleThreadTaskGraphRunnerTest = 207 using SingleThreadTaskGraphRunnerTest =
264 TaskGraphRunnerTest<TaskRunnerTestDelegate>; 208 TaskGraphRunnerTest<TaskRunnerTestDelegate>;
265 209
266 TYPED_TEST_CASE_P(SingleThreadTaskGraphRunnerTest); 210 TYPED_TEST_CASE_P(SingleThreadTaskGraphRunnerTest);
267 211
268 TYPED_TEST_P(SingleThreadTaskGraphRunnerTest, Priority) { 212 TYPED_TEST_P(SingleThreadTaskGraphRunnerTest, Priority) {
269 const int kNamespaceCount = TaskGraphRunnerTestBase::kNamespaceCount; 213 const int kNamespaceCount = TaskGraphRunnerTestBase::kNamespaceCount;
270 using TaskInfo = TaskGraphRunnerTestBase::TaskInfo; 214 using TaskInfo = TaskGraphRunnerTestBase::TaskInfo;
271 215
272 for (int i = 0; i < kNamespaceCount; ++i) { 216 for (int i = 0; i < kNamespaceCount; ++i) {
273 TaskInfo tasks[] = { 217 TaskInfo tasks[] = {
274 TaskInfo(i, 0u, 2u, 1u, 0u, 1u), // Priority 1 218 TaskInfo(i, 0u, 2u, 1u, 1u), // Priority 1
275 TaskInfo(i, 1u, 3u, 1u, 0u, 0u) // Priority 0 219 TaskInfo(i, 1u, 3u, 1u, 0u) // Priority 0
276 }; 220 };
277 this->ScheduleTasks(i, 221 this->ScheduleTasks(i,
278 std::vector<TaskInfo>(tasks, tasks + arraysize(tasks))); 222 std::vector<TaskInfo>(tasks, tasks + arraysize(tasks)));
279 } 223 }
280 224
281 for (int i = 0; i < kNamespaceCount; ++i) { 225 for (int i = 0; i < kNamespaceCount; ++i) {
282 this->RunAllTasks(i); 226 this->RunAllTasks(i);
283 227
284 // Check if tasks ran in order of priority. 228 // Check if tasks ran in order of priority.
285 ASSERT_EQ(4u, this->run_task_ids(i).size()); 229 ASSERT_EQ(4u, this->run_task_ids(i).size());
286 EXPECT_EQ(1u, this->run_task_ids(i)[0]); 230 EXPECT_EQ(1u, this->run_task_ids(i)[0]);
287 EXPECT_EQ(3u, this->run_task_ids(i)[1]); 231 EXPECT_EQ(3u, this->run_task_ids(i)[1]);
288 EXPECT_EQ(0u, this->run_task_ids(i)[2]); 232 EXPECT_EQ(0u, this->run_task_ids(i)[2]);
289 EXPECT_EQ(2u, this->run_task_ids(i)[3]); 233 EXPECT_EQ(2u, this->run_task_ids(i)[3]);
290 ASSERT_EQ(2u, this->on_task_completed_ids(i).size()); 234 ASSERT_EQ(2u, this->on_task_completed_ids(i).size());
291 EXPECT_EQ(1u, this->on_task_completed_ids(i)[0]); 235 EXPECT_EQ(1u, this->on_task_completed_ids(i)[0]);
292 EXPECT_EQ(0u, this->on_task_completed_ids(i)[1]); 236 EXPECT_EQ(0u, this->on_task_completed_ids(i)[1]);
293 } 237 }
294 } 238 }
295 239
296 REGISTER_TYPED_TEST_CASE_P(SingleThreadTaskGraphRunnerTest, Priority); 240 REGISTER_TYPED_TEST_CASE_P(SingleThreadTaskGraphRunnerTest, Priority);
297 241
298 } // namespace cc 242 } // namespace cc
299 243
300 #endif // CC_TEST_TASK_GRAPH_RUNNER_TEST_TEMPLATE_H_ 244 #endif // CC_TEST_TASK_GRAPH_RUNNER_TEST_TEMPLATE_H_
OLDNEW
« no previous file with comments | « cc/raster/tile_task_worker_pool_unittest.cc ('k') | cc/test/task_graph_runner_test_template.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698