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

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