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

Unified Diff: components/scheduler/base/task_queue_manager_unittest.cc

Issue 1507093004: Adopt a less severe anti-starvation policy for immediate tasks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test flakes 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | components/scheduler/base/task_queue_selector.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/scheduler/base/task_queue_manager_unittest.cc
diff --git a/components/scheduler/base/task_queue_manager_unittest.cc b/components/scheduler/base/task_queue_manager_unittest.cc
index 6396d36238b0ad4580534d4d77c4f6c8076c8189..34ddc13935e0a1fd78c74a15d71cd61d05727602 100644
--- a/components/scheduler/base/task_queue_manager_unittest.cc
+++ b/components/scheduler/base/task_queue_manager_unittest.cc
@@ -22,6 +22,7 @@
#include "testing/gmock/include/gmock/gmock.h"
using testing::ElementsAre;
+using testing::ElementsAreArray;
using testing::_;
namespace scheduler {
@@ -1087,39 +1088,35 @@ void ExpensiveTestTask(int value,
clock->Advance(base::TimeDelta::FromMilliseconds(1));
}
-TEST_F(TaskQueueManagerTest, ImmediateAndDelayedTaskRoundRobbin) {
+TEST_F(TaskQueueManagerTest, ImmediateAndDelayedTaskInterleaving) {
Initialize(1u);
std::vector<int> run_order;
base::TimeDelta delay = base::TimeDelta::FromMilliseconds(10);
- runners_[0]->PostDelayedTask(
- FROM_HERE, base::Bind(&ExpensiveTestTask, 10, now_src_.get(), &run_order),
- delay);
- runners_[0]->PostDelayedTask(
- FROM_HERE, base::Bind(&ExpensiveTestTask, 11, now_src_.get(), &run_order),
- delay);
- runners_[0]->PostDelayedTask(
- FROM_HERE, base::Bind(&ExpensiveTestTask, 12, now_src_.get(), &run_order),
- delay);
- runners_[0]->PostDelayedTask(
- FROM_HERE, base::Bind(&ExpensiveTestTask, 13, now_src_.get(), &run_order),
- delay);
+ for (int i = 10; i < 19; i++) {
+ runners_[0]->PostDelayedTask(
+ FROM_HERE,
+ base::Bind(&ExpensiveTestTask, i, now_src_.get(), &run_order),
+ delay);
+ }
test_task_runner_->RunForPeriod(delay);
- runners_[0]->PostTask(
- FROM_HERE, base::Bind(&ExpensiveTestTask, 0, now_src_.get(), &run_order));
- runners_[0]->PostTask(
- FROM_HERE, base::Bind(&ExpensiveTestTask, 1, now_src_.get(), &run_order));
- runners_[0]->PostTask(
- FROM_HERE, base::Bind(&ExpensiveTestTask, 2, now_src_.get(), &run_order));
- runners_[0]->PostTask(
- FROM_HERE, base::Bind(&ExpensiveTestTask, 3, now_src_.get(), &run_order));
+ for (int i = 0; i < 9; i++) {
+ runners_[0]->PostTask(
+ FROM_HERE,
+ base::Bind(&ExpensiveTestTask, i, now_src_.get(), &run_order));
+ }
test_task_runner_->SetAutoAdvanceNowToPendingTasks(true);
test_task_runner_->RunUntilIdle();
- EXPECT_THAT(run_order, ElementsAre(10, 0, 11, 1, 12, 2, 13, 3));
+ // Delayed tasks are not allowed to starve out immediate work which is why
+ // some of the immediate tasks run out of order.
+ int expected_run_order[] = {
+ 10, 11, 12, 13, 0, 14, 15, 16, 1, 17, 18, 2, 3, 4, 5, 6, 7, 8
+ };
+ EXPECT_THAT(run_order, ElementsAreArray(expected_run_order));
}
TEST_F(TaskQueueManagerTest,
@@ -1593,7 +1590,8 @@ bool ShouldExit(QuadraticTask* quadratic_task, LinearTask* linear_task) {
} // namespace
-TEST_F(TaskQueueManagerTest, DelayedTasksDontStarveNonDelayedWork_SameQueue) {
+TEST_F(TaskQueueManagerTest,
+ DelayedTasksDontBadlyStarveNonDelayedWork_SameQueue) {
Initialize(1u);
QuadraticTask quadratic_delayed_task(
@@ -1614,7 +1612,7 @@ TEST_F(TaskQueueManagerTest, DelayedTasksDontStarveNonDelayedWork_SameQueue) {
double ratio = static_cast<double>(linear_immediate_task.count()) /
static_cast<double>(quadratic_delayed_task.count());
- EXPECT_GT(ratio, 0.9);
+ EXPECT_GT(ratio, 0.333);
EXPECT_LT(ratio, 1.1);
}
@@ -1647,7 +1645,7 @@ TEST_F(TaskQueueManagerTest, ImmediateWorkCanStarveDelayedTasks_SameQueue) {
}
TEST_F(TaskQueueManagerTest,
- DelayedTasksDontStarveNonDelayedWork_DifferentQueue) {
+ DelayedTasksDontBadlyStarveNonDelayedWork_DifferentQueue) {
Initialize(2u);
QuadraticTask quadratic_delayed_task(
@@ -1668,7 +1666,7 @@ TEST_F(TaskQueueManagerTest,
double ratio = static_cast<double>(linear_immediate_task.count()) /
static_cast<double>(quadratic_delayed_task.count());
- EXPECT_GT(ratio, 0.9);
+ EXPECT_GT(ratio, 0.333);
EXPECT_LT(ratio, 1.1);
}
« no previous file with comments | « no previous file | components/scheduler/base/task_queue_selector.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698