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

Side by Side Diff: content/renderer/scheduler/task_queue_manager_unittest.cc

Issue 845543004: Run task queue manager work in batches (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 5 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
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 "content/renderer/scheduler/task_queue_selector.h" 9 #include "content/renderer/scheduler/task_queue_selector.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 runner->PostTask( 473 runner->PostTask(
474 FROM_HERE, base::Bind(&PostFromNestedRunloop, message_loop_.get(), runner, 474 FROM_HERE, base::Bind(&PostFromNestedRunloop, message_loop_.get(), runner,
475 base::Unretained(&tasks_to_post_from_nested_loop))); 475 base::Unretained(&tasks_to_post_from_nested_loop)));
476 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order)); 476 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
477 477
478 message_loop_->RunUntilIdle(); 478 message_loop_->RunUntilIdle();
479 479
480 EXPECT_THAT(run_order, ElementsAre(0, 2, 1)); 480 EXPECT_THAT(run_order, ElementsAre(0, 2, 1));
481 } 481 }
482 482
483 TEST_F(TaskQueueManagerTest, WorkBatching) {
484 Initialize(1u);
485
486 manager_->SetWorkBatchSize(2);
487
488 std::vector<int> run_order;
489 scoped_refptr<base::SingleThreadTaskRunner> runner =
490 manager_->TaskRunnerForQueue(0);
491
492 selector_->AppendQueueToService(0);
493 selector_->AppendQueueToService(0);
494 selector_->AppendQueueToService(0);
495 selector_->AppendQueueToService(0);
496
497 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
498 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
499 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 3, &run_order));
500 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 4, &run_order));
501
502 // Running one task in the host message loop should cause two posted tasks to
503 // get executed.
504 EXPECT_EQ(test_task_runner_->GetPendingTasks().size(), 1u);
505 test_task_runner_->RunPendingTasks();
506 EXPECT_THAT(run_order, ElementsAre(1, 2));
507
508 // The second task runs the remaining two posted tasks.
509 EXPECT_EQ(test_task_runner_->GetPendingTasks().size(), 1u);
510 test_task_runner_->RunPendingTasks();
511 EXPECT_THAT(run_order, ElementsAre(1, 2, 3, 4));
512 }
513
483 } // namespace 514 } // namespace
484 } // namespace content 515 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698