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: content/renderer/scheduler/task_queue_manager_unittest.cc

Issue 962633002: scheduler: Convert enums to enum classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Did the rest too. Created 5 years, 10 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 | « content/renderer/scheduler/task_queue_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/renderer/scheduler/task_queue_manager.h" 5 #include "content/renderer/scheduler/task_queue_manager.h"
6 6
7 #include "base/test/test_simple_task_runner.h" 7 #include "base/test/test_simple_task_runner.h"
8 #include "base/threading/thread.h" 8 #include "base/threading/thread.h"
9 #include "cc/test/test_now_source.h" 9 #include "cc/test/test_now_source.h"
10 #include "content/renderer/scheduler/task_queue_selector.h" 10 #include "content/renderer/scheduler/task_queue_selector.h"
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 EXPECT_TRUE(selector_->work_queues()[0]->front().delayed_run_time.is_null()); 278 EXPECT_TRUE(selector_->work_queues()[0]->front().delayed_run_time.is_null());
279 279
280 // Let the task run normally. 280 // Let the task run normally.
281 selector_->AppendQueueToService(0); 281 selector_->AppendQueueToService(0);
282 test_task_runner_->RunUntilIdle(); 282 test_task_runner_->RunUntilIdle();
283 EXPECT_THAT(run_order, ElementsAre(1)); 283 EXPECT_THAT(run_order, ElementsAre(1));
284 } 284 }
285 285
286 TEST_F(TaskQueueManagerTest, ManualPumping) { 286 TEST_F(TaskQueueManagerTest, ManualPumping) {
287 Initialize(1u); 287 Initialize(1u);
288 manager_->SetPumpPolicy(0, TaskQueueManager::MANUAL_PUMP_POLICY); 288 manager_->SetPumpPolicy(0, TaskQueueManager::PumpPolicy::MANUAL);
289 289
290 std::vector<int> run_order; 290 std::vector<int> run_order;
291 scoped_refptr<base::SingleThreadTaskRunner> runner = 291 scoped_refptr<base::SingleThreadTaskRunner> runner =
292 manager_->TaskRunnerForQueue(0); 292 manager_->TaskRunnerForQueue(0);
293 293
294 // Posting a task when pumping is disabled doesn't result in work getting 294 // Posting a task when pumping is disabled doesn't result in work getting
295 // posted. 295 // posted.
296 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); 296 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
297 EXPECT_FALSE(test_task_runner_->HasPendingTask()); 297 EXPECT_FALSE(test_task_runner_->HasPendingTask());
298 298
299 // However polling still works. 299 // However polling still works.
300 EXPECT_FALSE(manager_->IsQueueEmpty(0)); 300 EXPECT_FALSE(manager_->IsQueueEmpty(0));
301 301
302 // After pumping the task runs normally. 302 // After pumping the task runs normally.
303 manager_->PumpQueue(0); 303 manager_->PumpQueue(0);
304 EXPECT_TRUE(test_task_runner_->HasPendingTask()); 304 EXPECT_TRUE(test_task_runner_->HasPendingTask());
305 selector_->AppendQueueToService(0); 305 selector_->AppendQueueToService(0);
306 test_task_runner_->RunUntilIdle(); 306 test_task_runner_->RunUntilIdle();
307 EXPECT_THAT(run_order, ElementsAre(1)); 307 EXPECT_THAT(run_order, ElementsAre(1));
308 } 308 }
309 309
310 TEST_F(TaskQueueManagerTest, ManualPumpingToggle) { 310 TEST_F(TaskQueueManagerTest, ManualPumpingToggle) {
311 Initialize(1u); 311 Initialize(1u);
312 manager_->SetPumpPolicy(0, TaskQueueManager::MANUAL_PUMP_POLICY); 312 manager_->SetPumpPolicy(0, TaskQueueManager::PumpPolicy::MANUAL);
313 313
314 std::vector<int> run_order; 314 std::vector<int> run_order;
315 scoped_refptr<base::SingleThreadTaskRunner> runner = 315 scoped_refptr<base::SingleThreadTaskRunner> runner =
316 manager_->TaskRunnerForQueue(0); 316 manager_->TaskRunnerForQueue(0);
317 317
318 // Posting a task when pumping is disabled doesn't result in work getting 318 // Posting a task when pumping is disabled doesn't result in work getting
319 // posted. 319 // posted.
320 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); 320 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
321 EXPECT_FALSE(test_task_runner_->HasPendingTask()); 321 EXPECT_FALSE(test_task_runner_->HasPendingTask());
322 322
323 // When pumping is enabled the task runs normally. 323 // When pumping is enabled the task runs normally.
324 manager_->SetPumpPolicy(0, TaskQueueManager::AUTO_PUMP_POLICY); 324 manager_->SetPumpPolicy(0, TaskQueueManager::PumpPolicy::AUTO);
325 EXPECT_TRUE(test_task_runner_->HasPendingTask()); 325 EXPECT_TRUE(test_task_runner_->HasPendingTask());
326 selector_->AppendQueueToService(0); 326 selector_->AppendQueueToService(0);
327 test_task_runner_->RunUntilIdle(); 327 test_task_runner_->RunUntilIdle();
328 EXPECT_THAT(run_order, ElementsAre(1)); 328 EXPECT_THAT(run_order, ElementsAre(1));
329 } 329 }
330 330
331 TEST_F(TaskQueueManagerTest, DenyRunning) { 331 TEST_F(TaskQueueManagerTest, DenyRunning) {
332 Initialize(1u); 332 Initialize(1u);
333 333
334 std::vector<int> run_order; 334 std::vector<int> run_order;
335 scoped_refptr<base::SingleThreadTaskRunner> runner = 335 scoped_refptr<base::SingleThreadTaskRunner> runner =
336 manager_->TaskRunnerForQueue(0); 336 manager_->TaskRunnerForQueue(0);
337 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); 337 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
338 338
339 // Since we haven't appended a work queue to be selected, the task doesn't 339 // Since we haven't appended a work queue to be selected, the task doesn't
340 // run. 340 // run.
341 test_task_runner_->RunUntilIdle(); 341 test_task_runner_->RunUntilIdle();
342 EXPECT_TRUE(run_order.empty()); 342 EXPECT_TRUE(run_order.empty());
343 343
344 // Pumping the queue again with a selected work queue runs the task. 344 // Pumping the queue again with a selected work queue runs the task.
345 manager_->PumpQueue(0); 345 manager_->PumpQueue(0);
346 selector_->AppendQueueToService(0); 346 selector_->AppendQueueToService(0);
347 test_task_runner_->RunUntilIdle(); 347 test_task_runner_->RunUntilIdle();
348 EXPECT_THAT(run_order, ElementsAre(1)); 348 EXPECT_THAT(run_order, ElementsAre(1));
349 } 349 }
350 350
351 TEST_F(TaskQueueManagerTest, ManualPumpingWithDelayedTask) { 351 TEST_F(TaskQueueManagerTest, ManualPumpingWithDelayedTask) {
352 Initialize(1u); 352 Initialize(1u);
353 manager_->SetPumpPolicy(0, TaskQueueManager::MANUAL_PUMP_POLICY); 353 manager_->SetPumpPolicy(0, TaskQueueManager::PumpPolicy::MANUAL);
354 354
355 std::vector<int> run_order; 355 std::vector<int> run_order;
356 scoped_refptr<base::SingleThreadTaskRunner> runner = 356 scoped_refptr<base::SingleThreadTaskRunner> runner =
357 manager_->TaskRunnerForQueue(0); 357 manager_->TaskRunnerForQueue(0);
358 358
359 // Posting a delayed task when pumping will apply the delay, but won't cause 359 // Posting a delayed task when pumping will apply the delay, but won't cause
360 // work to executed afterwards. 360 // work to executed afterwards.
361 base::TimeDelta delay(base::TimeDelta::FromMilliseconds(10)); 361 base::TimeDelta delay(base::TimeDelta::FromMilliseconds(10));
362 runner->PostDelayedTask( 362 runner->PostDelayedTask(
363 FROM_HERE, base::Bind(&TestTask, 1, &run_order), delay); 363 FROM_HERE, base::Bind(&TestTask, 1, &run_order), delay);
364 test_task_runner_->RunUntilIdle(); 364 test_task_runner_->RunUntilIdle();
365 EXPECT_TRUE(run_order.empty()); 365 EXPECT_TRUE(run_order.empty());
366 366
367 // After pumping the task runs normally. 367 // After pumping the task runs normally.
368 manager_->PumpQueue(0); 368 manager_->PumpQueue(0);
369 EXPECT_TRUE(test_task_runner_->HasPendingTask()); 369 EXPECT_TRUE(test_task_runner_->HasPendingTask());
370 selector_->AppendQueueToService(0); 370 selector_->AppendQueueToService(0);
371 test_task_runner_->RunUntilIdle(); 371 test_task_runner_->RunUntilIdle();
372 EXPECT_THAT(run_order, ElementsAre(1)); 372 EXPECT_THAT(run_order, ElementsAre(1));
373 } 373 }
374 374
375 TEST_F(TaskQueueManagerTest, ManualPumpingWithNonEmptyWorkQueue) { 375 TEST_F(TaskQueueManagerTest, ManualPumpingWithNonEmptyWorkQueue) {
376 Initialize(1u); 376 Initialize(1u);
377 manager_->SetPumpPolicy(0, TaskQueueManager::MANUAL_PUMP_POLICY); 377 manager_->SetPumpPolicy(0, TaskQueueManager::PumpPolicy::MANUAL);
378 378
379 std::vector<int> run_order; 379 std::vector<int> run_order;
380 scoped_refptr<base::SingleThreadTaskRunner> runner = 380 scoped_refptr<base::SingleThreadTaskRunner> runner =
381 manager_->TaskRunnerForQueue(0); 381 manager_->TaskRunnerForQueue(0);
382 382
383 // Posting two tasks and pumping twice should result in two tasks in the work 383 // Posting two tasks and pumping twice should result in two tasks in the work
384 // queue. 384 // queue.
385 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); 385 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
386 manager_->PumpQueue(0); 386 manager_->PumpQueue(0);
387 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order)); 387 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 EXPECT_THAT(run_order, ElementsAre(2)); 579 EXPECT_THAT(run_order, ElementsAre(2));
580 580
581 // Running all remaining tasks should execute both pending tasks. 581 // Running all remaining tasks should execute both pending tasks.
582 test_task_runner_->RunUntilIdle(); 582 test_task_runner_->RunUntilIdle();
583 EXPECT_THAT(run_order, ElementsAre(2, 3, 1)); 583 EXPECT_THAT(run_order, ElementsAre(2, 3, 1));
584 } 584 }
585 585
586 TEST_F(TaskQueueManagerTest, AutoPumpOnWakeup) { 586 TEST_F(TaskQueueManagerTest, AutoPumpOnWakeup) {
587 Initialize(2u); 587 Initialize(2u);
588 EXPECT_EQ(2u, selector_->work_queues().size()); 588 EXPECT_EQ(2u, selector_->work_queues().size());
589 manager_->SetPumpPolicy(0, TaskQueueManager::AUTO_PUMP_AFTER_WAKEUP_POLICY); 589 manager_->SetPumpPolicy(0, TaskQueueManager::PumpPolicy::AFTER_WAKEUP);
590 590
591 std::vector<int> run_order; 591 std::vector<int> run_order;
592 scoped_refptr<base::SingleThreadTaskRunner> runners[2] = { 592 scoped_refptr<base::SingleThreadTaskRunner> runners[2] = {
593 manager_->TaskRunnerForQueue(0), manager_->TaskRunnerForQueue(1)}; 593 manager_->TaskRunnerForQueue(0), manager_->TaskRunnerForQueue(1)};
594 594
595 selector_->AppendQueueToService(1); 595 selector_->AppendQueueToService(1);
596 selector_->AppendQueueToService(0); 596 selector_->AppendQueueToService(0);
597 selector_->AppendQueueToService(0); 597 selector_->AppendQueueToService(0);
598 598
599 runners[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); 599 runners[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
600 test_task_runner_->RunUntilIdle(); 600 test_task_runner_->RunUntilIdle();
601 EXPECT_TRUE(run_order.empty()); // Shouldn't run - no other task to wake TQM. 601 EXPECT_TRUE(run_order.empty()); // Shouldn't run - no other task to wake TQM.
602 602
603 runners[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order)); 603 runners[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
604 test_task_runner_->RunUntilIdle(); 604 test_task_runner_->RunUntilIdle();
605 EXPECT_TRUE(run_order.empty()); // Still shouldn't wake TQM. 605 EXPECT_TRUE(run_order.empty()); // Still shouldn't wake TQM.
606 606
607 runners[1]->PostTask(FROM_HERE, base::Bind(&TestTask, 3, &run_order)); 607 runners[1]->PostTask(FROM_HERE, base::Bind(&TestTask, 3, &run_order));
608 test_task_runner_->RunUntilIdle(); 608 test_task_runner_->RunUntilIdle();
609 // Executing a task on an auto pumped queue should wake the TQM. 609 // Executing a task on an auto pumped queue should wake the TQM.
610 EXPECT_THAT(run_order, ElementsAre(3, 1, 2)); 610 EXPECT_THAT(run_order, ElementsAre(3, 1, 2));
611 } 611 }
612 612
613 TEST_F(TaskQueueManagerTest, AutoPumpOnWakeupWhenAlreadyAwake) { 613 TEST_F(TaskQueueManagerTest, AutoPumpOnWakeupWhenAlreadyAwake) {
614 Initialize(2u); 614 Initialize(2u);
615 EXPECT_EQ(2u, selector_->work_queues().size()); 615 EXPECT_EQ(2u, selector_->work_queues().size());
616 manager_->SetPumpPolicy(0, TaskQueueManager::AUTO_PUMP_AFTER_WAKEUP_POLICY); 616 manager_->SetPumpPolicy(0, TaskQueueManager::PumpPolicy::AFTER_WAKEUP);
617 617
618 std::vector<int> run_order; 618 std::vector<int> run_order;
619 scoped_refptr<base::SingleThreadTaskRunner> runners[2] = { 619 scoped_refptr<base::SingleThreadTaskRunner> runners[2] = {
620 manager_->TaskRunnerForQueue(0), manager_->TaskRunnerForQueue(1)}; 620 manager_->TaskRunnerForQueue(0), manager_->TaskRunnerForQueue(1)};
621 621
622 selector_->AppendQueueToService(1); 622 selector_->AppendQueueToService(1);
623 selector_->AppendQueueToService(0); 623 selector_->AppendQueueToService(0);
624 624
625 runners[1]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); 625 runners[1]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
626 runners[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order)); 626 runners[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
627 test_task_runner_->RunUntilIdle(); 627 test_task_runner_->RunUntilIdle();
628 EXPECT_THAT(run_order, ElementsAre(1, 2)); // TQM was already awake. 628 EXPECT_THAT(run_order, ElementsAre(1, 2)); // TQM was already awake.
629 } 629 }
630 630
631 TEST_F(TaskQueueManagerTest, AutoPumpOnWakeupTriggeredByManuallyPumpedQueue) { 631 TEST_F(TaskQueueManagerTest, AutoPumpOnWakeupTriggeredByManuallyPumpedQueue) {
632 Initialize(2u); 632 Initialize(2u);
633 EXPECT_EQ(2u, selector_->work_queues().size()); 633 EXPECT_EQ(2u, selector_->work_queues().size());
634 manager_->SetPumpPolicy(0, TaskQueueManager::AUTO_PUMP_AFTER_WAKEUP_POLICY); 634 manager_->SetPumpPolicy(0, TaskQueueManager::PumpPolicy::AFTER_WAKEUP);
635 manager_->SetPumpPolicy(1, TaskQueueManager::MANUAL_PUMP_POLICY); 635 manager_->SetPumpPolicy(1, TaskQueueManager::PumpPolicy::MANUAL);
636 636
637 std::vector<int> run_order; 637 std::vector<int> run_order;
638 scoped_refptr<base::SingleThreadTaskRunner> runners[2] = { 638 scoped_refptr<base::SingleThreadTaskRunner> runners[2] = {
639 manager_->TaskRunnerForQueue(0), manager_->TaskRunnerForQueue(1)}; 639 manager_->TaskRunnerForQueue(0), manager_->TaskRunnerForQueue(1)};
640 640
641 selector_->AppendQueueToService(1); 641 selector_->AppendQueueToService(1);
642 selector_->AppendQueueToService(0); 642 selector_->AppendQueueToService(0);
643 643
644 runners[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); 644 runners[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
645 test_task_runner_->RunUntilIdle(); 645 test_task_runner_->RunUntilIdle();
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 selector_->AppendQueueToService(0); 725 selector_->AppendQueueToService(0);
726 726
727 EXPECT_CALL(observer, WillProcessTask(_)).Times(1); 727 EXPECT_CALL(observer, WillProcessTask(_)).Times(1);
728 EXPECT_CALL(observer, DidProcessTask(_)).Times(0); 728 EXPECT_CALL(observer, DidProcessTask(_)).Times(0);
729 message_loop_->RunUntilIdle(); 729 message_loop_->RunUntilIdle();
730 } 730 }
731 731
732 } // namespace 732 } // namespace
733 } // namespace content 733 } // namespace content
734 734
OLDNEW
« no previous file with comments | « content/renderer/scheduler/task_queue_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698