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

Side by Side Diff: cc/resources/worker_pool_unittest.cc

Issue 73923003: Shared Raster Worker Threads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Unit Test nits Created 6 years, 11 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 | « cc/resources/worker_pool_perftest.cc ('k') | cc/test/fake_tile_manager.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "cc/resources/worker_pool.h" 5 #include "cc/resources/worker_pool.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/memory/linked_ptr.h"
9 #include "cc/base/completion_event.h" 10 #include "cc/base/completion_event.h"
10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
11 12
12 namespace cc { 13 namespace cc {
13 14
14 namespace { 15 namespace {
15 16
17 const int kWorkerPoolCount = 3;
18
16 class FakeWorkerPoolTaskImpl : public internal::WorkerPoolTask { 19 class FakeWorkerPoolTaskImpl : public internal::WorkerPoolTask {
17 public: 20 public:
18 FakeWorkerPoolTaskImpl(const base::Closure& callback, 21 FakeWorkerPoolTaskImpl(const base::Closure& callback,
19 const base::Closure& reply) 22 const base::Closure& reply)
20 : callback_(callback), 23 : callback_(callback),
21 reply_(reply) { 24 reply_(reply) {
22 } 25 }
23 26
24 // Overridden from internal::WorkerPoolTask: 27 // Overridden from internal::WorkerPoolTask:
25 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE { 28 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE {
(...skipping 27 matching lines...) Expand all
53 dependent_count(dependent_count), 56 dependent_count(dependent_count),
54 priority(priority) { 57 priority(priority) {
55 } 58 }
56 59
57 base::Closure callback; 60 base::Closure callback;
58 base::Closure reply; 61 base::Closure reply;
59 base::Closure dependent; 62 base::Closure dependent;
60 unsigned dependent_count; 63 unsigned dependent_count;
61 unsigned priority; 64 unsigned priority;
62 }; 65 };
63 FakeWorkerPool() : WorkerPool(1, "test") {} 66 FakeWorkerPool() : WorkerPool() {}
64 virtual ~FakeWorkerPool() {} 67 virtual ~FakeWorkerPool() {}
65 68
66 static scoped_ptr<FakeWorkerPool> Create() { 69 static linked_ptr<FakeWorkerPool> Create() {
67 return make_scoped_ptr(new FakeWorkerPool); 70 return make_linked_ptr(new FakeWorkerPool);
68 } 71 }
69 72
70 void ScheduleTasks(const std::vector<Task>& tasks) { 73 void ScheduleTasks(const std::vector<Task>& tasks) {
71 TaskVector new_tasks; 74 TaskVector new_tasks;
72 TaskVector new_dependents; 75 TaskVector new_dependents;
73 TaskGraph new_graph; 76 TaskGraph new_graph;
74 77
75 scoped_refptr<FakeWorkerPoolTaskImpl> new_completion_task( 78 scoped_refptr<FakeWorkerPoolTaskImpl> new_completion_task(
76 new FakeWorkerPoolTaskImpl( 79 new FakeWorkerPoolTaskImpl(
77 base::Bind(&FakeWorkerPool::OnTasksCompleted, 80 base::Bind(&FakeWorkerPool::OnTasksCompleted,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 DISALLOW_COPY_AND_ASSIGN(FakeWorkerPool); 140 DISALLOW_COPY_AND_ASSIGN(FakeWorkerPool);
138 }; 141 };
139 142
140 class WorkerPoolTest : public testing::Test { 143 class WorkerPoolTest : public testing::Test {
141 public: 144 public:
142 WorkerPoolTest() {} 145 WorkerPoolTest() {}
143 virtual ~WorkerPoolTest() {} 146 virtual ~WorkerPoolTest() {}
144 147
145 // Overridden from testing::Test: 148 // Overridden from testing::Test:
146 virtual void SetUp() OVERRIDE { 149 virtual void SetUp() OVERRIDE {
147 worker_pool_ = FakeWorkerPool::Create(); 150 for (int i = 0; i < kWorkerPoolCount; ++i)
151 worker_pools_.push_back(FakeWorkerPool::Create());
148 } 152 }
149 virtual void TearDown() OVERRIDE { 153 virtual void TearDown() OVERRIDE {
150 worker_pool_->Shutdown(); 154 for (int i = 0; i < kWorkerPoolCount; ++i) {
151 worker_pool_->CheckForCompletedTasks(); 155 worker_pools_[i]->Shutdown();
152 } 156 worker_pools_[i]->CheckForCompletedTasks();
153 157 }
154 void ResetIds() { 158 }
155 run_task_ids_.clear(); 159
156 on_task_completed_ids_.clear(); 160 void ResetAllIdsforWorkerPool(int worker_pool_index) {
157 } 161 run_task_ids_[worker_pool_index].clear();
158 162 on_task_completed_ids_[worker_pool_index].clear();
159 void RunAllTasks() { 163 }
160 worker_pool_->WaitForTasksToComplete(); 164
161 worker_pool_->CheckForCompletedTasks(); 165 void RunAllTasksforWorkerPool(int worker_pool_index) {
162 } 166 worker_pools_[worker_pool_index]->WaitForTasksToComplete();
163 167 worker_pools_[worker_pool_index]->CheckForCompletedTasks();
164 FakeWorkerPool* worker_pool() { 168 }
165 return worker_pool_.get(); 169
166 } 170 FakeWorkerPool* worker_pool(int worker_pool_index) {
167 171 return worker_pools_[worker_pool_index].get();
168 void RunTask(unsigned id) { 172 }
169 run_task_ids_.push_back(id); 173
170 } 174 void RunTask(int worker_pool_index, unsigned id) {
171 175 run_task_ids_[worker_pool_index].push_back(id);
172 void OnTaskCompleted(unsigned id) { 176 }
173 on_task_completed_ids_.push_back(id); 177
174 } 178 void OnTaskCompleted(int worker_pool_index, unsigned id) {
175 179 on_task_completed_ids_[worker_pool_index].push_back(id);
176 const std::vector<unsigned>& run_task_ids() { 180 }
177 return run_task_ids_; 181
178 } 182 const std::vector<unsigned>& run_task_ids(int worker_pool_index) {
179 183 return run_task_ids_[worker_pool_index];
180 const std::vector<unsigned>& on_task_completed_ids() { 184 }
181 return on_task_completed_ids_; 185
186 const std::vector<unsigned>& on_task_completed_ids(int worker_pool_index) {
187 return on_task_completed_ids_[worker_pool_index];
182 } 188 }
183 189
184 private: 190 private:
185 scoped_ptr<FakeWorkerPool> worker_pool_; 191 std::vector<linked_ptr<FakeWorkerPool> > worker_pools_;
reveman 2014/01/14 08:44:24 Sorry that I forgot to ask this before but did you
sohanjg 2014/01/14 09:05:59 Done. I tried earlier at each test level, but not
186 std::vector<unsigned> run_task_ids_; 192 std::vector<unsigned> run_task_ids_[kWorkerPoolCount];
187 std::vector<unsigned> on_task_completed_ids_; 193 std::vector<unsigned> on_task_completed_ids_[kWorkerPoolCount];
188 }; 194 };
189 195
190 TEST_F(WorkerPoolTest, Basic) { 196 TEST_F(WorkerPoolTest, Basic) {
191 EXPECT_EQ(0u, run_task_ids().size()); 197 for (int i = 0; i < kWorkerPoolCount; ++i) {
192 EXPECT_EQ(0u, on_task_completed_ids().size()); 198 EXPECT_EQ(0u, run_task_ids(i).size());
193 199 EXPECT_EQ(0u, on_task_completed_ids(i).size());
194 worker_pool()->ScheduleTasks( 200
195 std::vector<FakeWorkerPool::Task>( 201 worker_pool(i)->ScheduleTasks(
196 1, 202 std::vector<FakeWorkerPool::Task>(
197 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 203 1,
198 base::Unretained(this), 204 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
199 0u), 205 base::Unretained(this),
200 base::Bind(&WorkerPoolTest::OnTaskCompleted, 206 i,
201 base::Unretained(this), 207 0u),
202 0u), 208 base::Bind(&WorkerPoolTest::OnTaskCompleted,
203 base::Closure(), 209 base::Unretained(this),
204 1u, 210 i,
205 0u))); 211 0u),
206 RunAllTasks(); 212 base::Closure(),
207 213 1u,
208 EXPECT_EQ(1u, run_task_ids().size()); 214 0u)));
209 EXPECT_EQ(1u, on_task_completed_ids().size()); 215 }
210 216
211 worker_pool()->ScheduleTasks( 217 for (int i = 0; i < kWorkerPoolCount; ++i) {
212 std::vector<FakeWorkerPool::Task>( 218 RunAllTasksforWorkerPool(i);
213 1, 219
214 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 220 EXPECT_EQ(1u, run_task_ids(i).size());
215 base::Unretained(this), 221 EXPECT_EQ(1u, on_task_completed_ids(i).size());
216 0u), 222 }
217 base::Bind(&WorkerPoolTest::OnTaskCompleted, 223
218 base::Unretained(this), 224 for (int i = 0; i < kWorkerPoolCount; ++i) {
219 0u), 225 worker_pool(i)->ScheduleTasks(
220 base::Bind(&WorkerPoolTest::RunTask, 226 std::vector<FakeWorkerPool::Task>(
221 base::Unretained(this), 227 1,
222 0u), 228 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
223 1u, 229 base::Unretained(this),
224 0u))); 230 i,
225 RunAllTasks(); 231 0u),
226 232 base::Bind(&WorkerPoolTest::OnTaskCompleted,
227 EXPECT_EQ(3u, run_task_ids().size()); 233 base::Unretained(this),
228 EXPECT_EQ(2u, on_task_completed_ids().size()); 234 i,
229 235 0u),
230 worker_pool()->ScheduleTasks( 236 base::Bind(&WorkerPoolTest::RunTask,
231 std::vector<FakeWorkerPool::Task>( 237 base::Unretained(this),
232 1, FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 238 i,
233 base::Unretained(this), 239 0u),
234 0u), 240 1u,
235 base::Bind(&WorkerPoolTest::OnTaskCompleted, 241 0u)));
236 base::Unretained(this), 242 }
237 0u), 243
238 base::Bind(&WorkerPoolTest::RunTask, 244 for (int i = 0; i < kWorkerPoolCount; ++i) {
239 base::Unretained(this), 245 RunAllTasksforWorkerPool(i);
240 0u), 246
241 2u, 247 EXPECT_EQ(3u, run_task_ids(i).size());
242 0u))); 248 EXPECT_EQ(2u, on_task_completed_ids(i).size());
243 RunAllTasks(); 249 }
244 250
245 EXPECT_EQ(6u, run_task_ids().size()); 251 for (int i = 0; i < kWorkerPoolCount; ++i) {
246 EXPECT_EQ(3u, on_task_completed_ids().size()); 252 worker_pool(i)->ScheduleTasks(
253 std::vector<FakeWorkerPool::Task>(
254 1, FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
255 base::Unretained(this),
256 i,
257 0u),
258 base::Bind(&WorkerPoolTest::OnTaskCompleted,
259 base::Unretained(this),
260 i,
261 0u),
262 base::Bind(&WorkerPoolTest::RunTask,
263 base::Unretained(this),
264 i,
265 0u),
266 2u,
267 0u)));
268 }
269
270 for (int i = 0; i < kWorkerPoolCount; ++i) {
271 RunAllTasksforWorkerPool(i);
272
273 EXPECT_EQ(6u, run_task_ids(i).size());
274 EXPECT_EQ(3u, on_task_completed_ids(i).size());
275 }
247 } 276 }
248 277
249 TEST_F(WorkerPoolTest, Dependencies) { 278 TEST_F(WorkerPoolTest, Dependencies) {
250 worker_pool()->ScheduleTasks( 279 for (int i = 0; i < kWorkerPoolCount; ++i) {
251 std::vector<FakeWorkerPool::Task>( 280 worker_pool(i)->ScheduleTasks(
252 1, FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 281 std::vector<FakeWorkerPool::Task>(
253 base::Unretained(this), 282 1, FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
254 0u), 283 base::Unretained(this),
255 base::Bind(&WorkerPoolTest::OnTaskCompleted, 284 i,
256 base::Unretained(this), 285 0u),
257 0u), 286 base::Bind(&WorkerPoolTest::OnTaskCompleted,
258 base::Bind(&WorkerPoolTest::RunTask, 287 base::Unretained(this),
259 base::Unretained(this), 288 i,
260 1u), 289 0u),
261 1u, 290 base::Bind(&WorkerPoolTest::RunTask,
262 0u))); 291 base::Unretained(this),
263 RunAllTasks(); 292 i,
264 293 1u),
265 // Check if task ran before dependent. 294 1u,
266 ASSERT_EQ(2u, run_task_ids().size()); 295 0u)));
267 EXPECT_EQ(0u, run_task_ids()[0]); 296 }
268 EXPECT_EQ(1u, run_task_ids()[1]); 297
269 ASSERT_EQ(1u, on_task_completed_ids().size()); 298 for (int i = 0; i < kWorkerPoolCount; ++i) {
270 EXPECT_EQ(0u, on_task_completed_ids()[0]); 299 RunAllTasksforWorkerPool(i);
271 300
272 worker_pool()->ScheduleTasks( 301 // Check if task ran before dependent.
273 std::vector<FakeWorkerPool::Task>( 302 ASSERT_EQ(2u, run_task_ids(i).size());
274 1, FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 303 EXPECT_EQ(0u, run_task_ids(i)[0]);
275 base::Unretained(this), 304 EXPECT_EQ(1u, run_task_ids(i)[1]);
276 2u), 305 ASSERT_EQ(1u, on_task_completed_ids(i).size());
277 base::Bind(&WorkerPoolTest::OnTaskCompleted, 306 EXPECT_EQ(0u, on_task_completed_ids(i)[0]);
278 base::Unretained(this), 307 }
279 2u), 308
280 base::Bind(&WorkerPoolTest::RunTask, 309 for (int i = 0; i < kWorkerPoolCount; ++i) {
281 base::Unretained(this), 310 worker_pool(i)->ScheduleTasks(
282 3u), 311 std::vector<FakeWorkerPool::Task>(
283 2u, 312 1, FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
284 0u))); 313 base::Unretained(this),
285 RunAllTasks(); 314 i,
286 315 2u),
287 // Task should only run once. 316 base::Bind(&WorkerPoolTest::OnTaskCompleted,
288 ASSERT_EQ(5u, run_task_ids().size()); 317 base::Unretained(this),
289 EXPECT_EQ(2u, run_task_ids()[2]); 318 i,
290 EXPECT_EQ(3u, run_task_ids()[3]); 319 2u),
291 EXPECT_EQ(3u, run_task_ids()[4]); 320 base::Bind(&WorkerPoolTest::RunTask,
292 ASSERT_EQ(2u, on_task_completed_ids().size()); 321 base::Unretained(this),
293 EXPECT_EQ(2u, on_task_completed_ids()[1]); 322 i,
323 3u),
324 2u,
325 0u)));
326 }
327
328 for (int i = 0; i < kWorkerPoolCount; ++i) {
329 RunAllTasksforWorkerPool(i);
330
331 // Task should only run once.
332 ASSERT_EQ(5u, run_task_ids(i).size());
333 EXPECT_EQ(2u, run_task_ids(i)[2]);
334 EXPECT_EQ(3u, run_task_ids(i)[3]);
335 EXPECT_EQ(3u, run_task_ids(i)[4]);
336 ASSERT_EQ(2u, on_task_completed_ids(i).size());
337 EXPECT_EQ(2u, on_task_completed_ids(i)[1]);
338 }
294 } 339 }
295 340
296 TEST_F(WorkerPoolTest, Priority) { 341 TEST_F(WorkerPoolTest, Priority) {
297 { 342 for (int i = 0; i < kWorkerPoolCount; ++i) {
298 FakeWorkerPool::Task tasks[] = { 343 FakeWorkerPool::Task tasks[] = {
299 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 344 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
300 base::Unretained(this), 345 base::Unretained(this),
346 i,
301 0u), 347 0u),
302 base::Bind(&WorkerPoolTest::OnTaskCompleted, 348 base::Bind(&WorkerPoolTest::OnTaskCompleted,
303 base::Unretained(this), 349 base::Unretained(this),
350 i,
304 0u), 351 0u),
305 base::Bind(&WorkerPoolTest::RunTask, 352 base::Bind(&WorkerPoolTest::RunTask,
306 base::Unretained(this), 353 base::Unretained(this),
354 i,
307 2u), 355 2u),
308 1u, 356 1u,
309 1u), // Priority 1 357 1u), // Priority 1
310 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 358 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
311 base::Unretained(this), 359 base::Unretained(this),
360 i,
312 1u), 361 1u),
313 base::Bind(&WorkerPoolTest::OnTaskCompleted, 362 base::Bind(&WorkerPoolTest::OnTaskCompleted,
314 base::Unretained(this), 363 base::Unretained(this),
364 i,
315 1u), 365 1u),
316 base::Bind(&WorkerPoolTest::RunTask, 366 base::Bind(&WorkerPoolTest::RunTask,
317 base::Unretained(this), 367 base::Unretained(this),
368 i,
318 3u), 369 3u),
319 1u, 370 1u,
320 0u) // Priority 0 371 0u) // Priority 0
321 }; 372 };
322 worker_pool()->ScheduleTasks( 373 worker_pool(i)->ScheduleTasks(
323 std::vector<FakeWorkerPool::Task>(tasks, tasks + arraysize(tasks))); 374 std::vector<FakeWorkerPool::Task>(tasks, tasks + arraysize(tasks)));
324 } 375 }
325 RunAllTasks(); 376
326 377 for (int i = 0; i < kWorkerPoolCount; ++i) {
327 // Check if tasks ran in order of priority. 378 RunAllTasksforWorkerPool(i);
328 ASSERT_EQ(4u, run_task_ids().size()); 379
329 EXPECT_EQ(1u, run_task_ids()[0]); 380 // Check if tasks ran in order of priority.
330 EXPECT_EQ(3u, run_task_ids()[1]); 381 ASSERT_EQ(4u, run_task_ids(i).size());
331 EXPECT_EQ(0u, run_task_ids()[2]); 382 EXPECT_EQ(1u, run_task_ids(i)[0]);
332 EXPECT_EQ(2u, run_task_ids()[3]); 383 EXPECT_EQ(3u, run_task_ids(i)[1]);
333 ASSERT_EQ(2u, on_task_completed_ids().size()); 384 EXPECT_EQ(0u, run_task_ids(i)[2]);
334 EXPECT_EQ(1u, on_task_completed_ids()[0]); 385 EXPECT_EQ(2u, run_task_ids(i)[3]);
335 EXPECT_EQ(0u, on_task_completed_ids()[1]); 386 ASSERT_EQ(2u, on_task_completed_ids(i).size());
336 387 EXPECT_EQ(1u, on_task_completed_ids(i)[0]);
337 ResetIds(); 388 EXPECT_EQ(0u, on_task_completed_ids(i)[1]);
338 { 389 }
390
391 for (int i = 0; i < kWorkerPoolCount; ++i)
392 ResetAllIdsforWorkerPool(i);
393
394 for (int i = 0; i < kWorkerPoolCount; ++i) {
339 std::vector<FakeWorkerPool::Task> tasks; 395 std::vector<FakeWorkerPool::Task> tasks;
340 tasks.push_back( 396 tasks.push_back(
341 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 397 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
342 base::Unretained(this), 398 base::Unretained(this),
399 i,
343 0u), 400 0u),
344 base::Bind(&WorkerPoolTest::OnTaskCompleted, 401 base::Bind(&WorkerPoolTest::OnTaskCompleted,
345 base::Unretained(this), 402 base::Unretained(this),
403 i,
346 0u), 404 0u),
347 base::Bind(&WorkerPoolTest::RunTask, 405 base::Bind(&WorkerPoolTest::RunTask,
348 base::Unretained(this), 406 base::Unretained(this),
407 i,
349 3u), 408 3u),
350 1u, // 1 dependent 409 1u, // 1 dependent
351 1u)); // Priority 1 410 1u)); // Priority 1
352 tasks.push_back( 411 tasks.push_back(
353 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 412 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
354 base::Unretained(this), 413 base::Unretained(this),
414 i,
355 1u), 415 1u),
356 base::Bind(&WorkerPoolTest::OnTaskCompleted, 416 base::Bind(&WorkerPoolTest::OnTaskCompleted,
357 base::Unretained(this), 417 base::Unretained(this),
418 i,
358 1u), 419 1u),
359 base::Bind(&WorkerPoolTest::RunTask, 420 base::Bind(&WorkerPoolTest::RunTask,
360 base::Unretained(this), 421 base::Unretained(this),
422 i,
361 4u), 423 4u),
362 2u, // 2 dependents 424 2u, // 2 dependents
363 1u)); // Priority 1 425 1u)); // Priority 1
364 tasks.push_back( 426 tasks.push_back(
365 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask, 427 FakeWorkerPool::Task(base::Bind(&WorkerPoolTest::RunTask,
366 base::Unretained(this), 428 base::Unretained(this),
429 i,
367 2u), 430 2u),
368 base::Bind(&WorkerPoolTest::OnTaskCompleted, 431 base::Bind(&WorkerPoolTest::OnTaskCompleted,
369 base::Unretained(this), 432 base::Unretained(this),
433 i,
370 2u), 434 2u),
371 base::Bind(&WorkerPoolTest::RunTask, 435 base::Bind(&WorkerPoolTest::RunTask,
372 base::Unretained(this), 436 base::Unretained(this),
437 i,
373 5u), 438 5u),
374 1u, // 1 dependent 439 1u, // 1 dependent
375 0u)); // Priority 0 440 0u)); // Priority 0
376 worker_pool()->ScheduleTasks(tasks); 441 worker_pool(i)->ScheduleTasks(tasks);
377 } 442 }
378 RunAllTasks(); 443
379 444 for (int i = 0; i < kWorkerPoolCount; ++i) {
380 // Check if tasks ran in order of priority and that task with more 445 RunAllTasksforWorkerPool(i);
381 // dependents ran first when priority is the same. 446
382 ASSERT_LE(3u, run_task_ids().size()); 447 // Check if tasks ran in order of priority and that task with more
383 EXPECT_EQ(2u, run_task_ids()[0]); 448 // dependents ran first when priority is the same.
384 EXPECT_EQ(5u, run_task_ids()[1]); 449 ASSERT_LE(3u, run_task_ids(i).size());
385 EXPECT_EQ(1u, run_task_ids()[2]); 450 EXPECT_EQ(2u, run_task_ids(i)[0]);
386 ASSERT_EQ(3u, on_task_completed_ids().size()); 451 EXPECT_EQ(5u, run_task_ids(i)[1]);
387 EXPECT_EQ(2u, on_task_completed_ids()[0]); 452 EXPECT_EQ(1u, run_task_ids(i)[2]);
388 EXPECT_EQ(1u, on_task_completed_ids()[1]); 453 ASSERT_EQ(3u, on_task_completed_ids(i).size());
389 EXPECT_EQ(0u, on_task_completed_ids()[2]); 454 EXPECT_EQ(2u, on_task_completed_ids(i)[0]);
455 EXPECT_EQ(1u, on_task_completed_ids(i)[1]);
456 EXPECT_EQ(0u, on_task_completed_ids(i)[2]);
457 }
390 } 458 }
391 459
392 } // namespace 460 } // namespace
393 461
394 } // namespace cc 462 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/worker_pool_perftest.cc ('k') | cc/test/fake_tile_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698