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

Unified Diff: third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler_unittest.cc

Issue 2896603002: [scheduler] Move task alignment into WakeUpBudgetPool. (Closed)
Patch Set: no iostream Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler_unittest.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler_unittest.cc b/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler_unittest.cc
index 66eec630903f7bfa9480d857b43d5ea9cf8384a0..d4aa08f9d5e8697ead6b6dd14050bb9768685ec8 100644
--- a/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler_unittest.cc
+++ b/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler_unittest.cc
@@ -61,7 +61,29 @@ bool IsQueueBlocked(TaskQueue* task_queue) {
static_cast<internal::EnqueueOrder>(
internal::EnqueueOrderValues::BLOCKING_FENCE);
}
-}
+
+// Test clock which simulates passage of time by automatically
+// advancing time with each call to Now().
+class AutoAdvancingTestClock : public base::SimpleTestTickClock {
+ public:
+ AutoAdvancingTestClock(base::TimeDelta interval)
+ : advancing_interval_(interval) {}
+ ~AutoAdvancingTestClock() override {}
+
+ base::TimeTicks NowTicks() override {
+ Advance(advancing_interval_);
+ return SimpleTestTickClock::NowTicks();
+ }
+
+ base::TimeTicks GetNowTicksWithoutAdvancing() {
+ return SimpleTestTickClock::NowTicks();
+ }
+
+ private:
+ base::TimeDelta advancing_interval_;
+};
+
+} // namespace
class TaskQueueThrottlerTest : public testing::Test {
public:
@@ -69,7 +91,7 @@ class TaskQueueThrottlerTest : public testing::Test {
~TaskQueueThrottlerTest() override {}
void SetUp() override {
- clock_.reset(new base::SimpleTestTickClock());
+ clock_ = CreateClock();
clock_->Advance(base::TimeDelta::FromMicroseconds(5000));
mock_task_runner_ =
make_scoped_refptr(new cc::OrderedSimpleTaskRunner(clock_.get(), true));
@@ -109,7 +131,11 @@ class TaskQueueThrottlerTest : public testing::Test {
}
protected:
- std::unique_ptr<base::SimpleTestTickClock> clock_;
+ virtual std::unique_ptr<AutoAdvancingTestClock> CreateClock() {
+ return base::MakeUnique<AutoAdvancingTestClock>(base::TimeDelta());
+ }
+
+ std::unique_ptr<AutoAdvancingTestClock> clock_;
scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_;
scoped_refptr<SchedulerTqmDelegate> delegate_;
std::unique_ptr<RendererSchedulerImpl> scheduler_;
@@ -119,6 +145,46 @@ class TaskQueueThrottlerTest : public testing::Test {
DISALLOW_COPY_AND_ASSIGN(TaskQueueThrottlerTest);
};
+class TaskQueueThrottlerWithAutoAdvancingTimeTest
+ : public TaskQueueThrottlerTest,
+ public ::testing::WithParamInterface<bool> {
+ public:
+ TaskQueueThrottlerWithAutoAdvancingTimeTest()
+ : auto_advance_time_interval_(GetParam()
+ ? base::TimeDelta::FromMicroseconds(1)
+ : base::TimeDelta()) {}
+ ~TaskQueueThrottlerWithAutoAdvancingTimeTest() override {}
+
+ protected:
+ std::unique_ptr<AutoAdvancingTestClock> CreateClock() override {
+ return base::MakeUnique<AutoAdvancingTestClock>(
+ auto_advance_time_interval_);
+ }
+
+ base::TimeDelta auto_advance_time_interval_;
+
+ DISALLOW_COPY_AND_ASSIGN(TaskQueueThrottlerWithAutoAdvancingTimeTest);
+};
+
+INSTANTIATE_TEST_CASE_P(All,
+ TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ ::testing::Bool());
+
+TEST_F(TaskQueueThrottlerTest, ThrottledTasksReportRealTime) {
+ EXPECT_EQ(timer_queue_->GetTimeDomain()->Now(),
+ clock_->GetNowTicksWithoutAdvancing());
+
+ task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get());
+ EXPECT_EQ(timer_queue_->GetTimeDomain()->Now(),
+ clock_->GetNowTicksWithoutAdvancing());
+
+ clock_->Advance(base::TimeDelta::FromMilliseconds(250));
+ // Make sure the throttled time domain's Now() reports the same as the
+ // underlying clock.
+ EXPECT_EQ(timer_queue_->GetTimeDomain()->Now(),
+ clock_->GetNowTicksWithoutAdvancing());
+}
+
TEST_F(TaskQueueThrottlerTest, AlignedThrottledRunTime) {
EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromSecondsD(1.0),
TaskQueueThrottler::AlignedThrottledRunTime(
@@ -162,24 +228,38 @@ TEST_F(TaskQueueThrottlerTest, AlignedThrottledRunTime) {
}
namespace {
+
+// Round up time to milliseconds to deal with autoadvancing time.
+// TODO(altimin): round time only when autoadvancing time is enabled.
+base::TimeDelta RoundTimeToMilliseconds(base::TimeDelta time) {
+ return time - time % base::TimeDelta::FromMilliseconds(1);
+}
+
+base::TimeTicks RoundTimeToMilliseconds(base::TimeTicks time) {
+ return base::TimeTicks() + RoundTimeToMilliseconds(time - base::TimeTicks());
+}
+
void TestTask(std::vector<base::TimeTicks>* run_times,
- base::SimpleTestTickClock* clock) {
- run_times->push_back(clock->NowTicks());
+ AutoAdvancingTestClock* clock) {
+ run_times->push_back(
+ RoundTimeToMilliseconds(clock->GetNowTicksWithoutAdvancing()));
}
void ExpensiveTestTask(std::vector<base::TimeTicks>* run_times,
- base::SimpleTestTickClock* clock) {
- run_times->push_back(clock->NowTicks());
+ AutoAdvancingTestClock* clock) {
+ run_times->push_back(
+ RoundTimeToMilliseconds(clock->GetNowTicksWithoutAdvancing()));
clock->Advance(base::TimeDelta::FromMilliseconds(250));
}
void RecordThrottling(std::vector<base::TimeDelta>* reported_throttling_times,
base::TimeDelta throttling_duration) {
- reported_throttling_times->push_back(throttling_duration);
+ reported_throttling_times->push_back(
+ RoundTimeToMilliseconds(throttling_duration));
}
} // namespace
-TEST_F(TaskQueueThrottlerTest, TimerAlignment) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest, TimerAlignment) {
std::vector<base::TimeTicks> run_times;
timer_queue_->PostDelayedTask(FROM_HERE,
base::Bind(&TestTask, &run_times, clock_.get()),
@@ -211,9 +291,10 @@ TEST_F(TaskQueueThrottlerTest, TimerAlignment) {
base::TimeTicks() + base::TimeDelta::FromMilliseconds(9000.0)));
}
-TEST_F(TaskQueueThrottlerTest, TimerAlignment_Unthrottled) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ TimerAlignment_Unthrottled) {
std::vector<base::TimeTicks> run_times;
- base::TimeTicks start_time = clock_->NowTicks();
+ base::TimeTicks start_time = clock_->GetNowTicksWithoutAdvancing();
timer_queue_->PostDelayedTask(FROM_HERE,
base::Bind(&TestTask, &run_times, clock_.get()),
base::TimeDelta::FromMilliseconds(200.0));
@@ -238,13 +319,17 @@ TEST_F(TaskQueueThrottlerTest, TimerAlignment_Unthrottled) {
// Times are not aligned.
EXPECT_THAT(
run_times,
- ElementsAre(start_time + base::TimeDelta::FromMilliseconds(200.0),
- start_time + base::TimeDelta::FromMilliseconds(800.0),
- start_time + base::TimeDelta::FromMilliseconds(1200.0),
- start_time + base::TimeDelta::FromMilliseconds(8300.0)));
+ ElementsAre(RoundTimeToMilliseconds(
+ start_time + base::TimeDelta::FromMilliseconds(200.0)),
+ RoundTimeToMilliseconds(
+ start_time + base::TimeDelta::FromMilliseconds(800.0)),
+ RoundTimeToMilliseconds(
+ start_time + base::TimeDelta::FromMilliseconds(1200.0)),
+ RoundTimeToMilliseconds(
+ start_time + base::TimeDelta::FromMilliseconds(8300.0))));
}
-TEST_F(TaskQueueThrottlerTest, Refcount) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest, Refcount) {
ExpectUnthrottled(timer_queue_.get());
task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get());
@@ -267,21 +352,23 @@ TEST_F(TaskQueueThrottlerTest, Refcount) {
ExpectThrottled(timer_queue_);
}
-TEST_F(TaskQueueThrottlerTest,
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
ThrotlingAnEmptyQueueDoesNotPostPumpThrottledTasksLocked) {
task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get());
EXPECT_TRUE(task_queue_throttler_->task_queue()->IsEmpty());
}
-TEST_F(TaskQueueThrottlerTest, OnTimeDomainHasImmediateWork_EnabledQueue) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ OnTimeDomainHasImmediateWork_EnabledQueue) {
task_queue_throttler_->OnQueueNextWakeUpChanged(timer_queue_.get(),
base::TimeTicks());
// Check PostPumpThrottledTasksLocked was called.
EXPECT_FALSE(task_queue_throttler_->task_queue()->IsEmpty());
}
-TEST_F(TaskQueueThrottlerTest, OnTimeDomainHasImmediateWork_DisabledQueue) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ OnTimeDomainHasImmediateWork_DisabledQueue) {
std::unique_ptr<TaskQueue::QueueEnabledVoter> voter =
timer_queue_->CreateQueueEnabledVoter();
voter->SetQueueEnabled(false);
@@ -292,7 +379,7 @@ TEST_F(TaskQueueThrottlerTest, OnTimeDomainHasImmediateWork_DisabledQueue) {
EXPECT_TRUE(task_queue_throttler_->task_queue()->IsEmpty());
}
-TEST_F(TaskQueueThrottlerTest,
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
ThrottlingADisabledQueueDoesNotPostPumpThrottledTasks) {
timer_queue_->PostTask(FROM_HERE, base::Bind(&NopTask));
@@ -308,7 +395,7 @@ TEST_F(TaskQueueThrottlerTest,
EXPECT_FALSE(task_queue_throttler_->task_queue()->IsEmpty());
}
-TEST_F(TaskQueueThrottlerTest,
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
ThrottlingADisabledQueueDoesNotPostPumpThrottledTasks_DelayedTask) {
timer_queue_->PostDelayedTask(FROM_HERE, base::Bind(&NopTask),
base::TimeDelta::FromMilliseconds(1));
@@ -325,7 +412,7 @@ TEST_F(TaskQueueThrottlerTest,
EXPECT_FALSE(task_queue_throttler_->task_queue()->IsEmpty());
}
-TEST_F(TaskQueueThrottlerTest, WakeUpForNonDelayedTask) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest, WakeUpForNonDelayedTask) {
std::vector<base::TimeTicks> run_times;
// Nothing is posted on timer_queue_ so PumpThrottledTasks will not tick.
@@ -341,7 +428,7 @@ TEST_F(TaskQueueThrottlerTest, WakeUpForNonDelayedTask) {
base::TimeDelta::FromMilliseconds(1000.0)));
}
-TEST_F(TaskQueueThrottlerTest, WakeUpForDelayedTask) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest, WakeUpForDelayedTask) {
std::vector<base::TimeTicks> run_times;
// Nothing is posted on timer_queue_ so PumpThrottledTasks will not tick.
@@ -358,7 +445,7 @@ TEST_F(TaskQueueThrottlerTest, WakeUpForDelayedTask) {
base::TimeDelta::FromMilliseconds(2000.0)));
}
-TEST_F(TaskQueueThrottlerTest,
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
SingleThrottledTaskPumpedAndRunWithNoExtraneousMessageLoopTasks) {
task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get());
@@ -373,7 +460,7 @@ TEST_F(TaskQueueThrottlerTest,
EXPECT_EQ(1u, task_count);
}
-TEST_F(TaskQueueThrottlerTest,
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
SingleFutureThrottledTaskPumpedAndRunWithNoExtraneousMessageLoopTasks) {
task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get());
@@ -388,7 +475,7 @@ TEST_F(TaskQueueThrottlerTest,
EXPECT_EQ(1u, task_count);
}
-TEST_F(TaskQueueThrottlerTest,
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
TwoFutureThrottledTaskPumpedAndRunWithNoExtraneousMessageLoopTasks) {
task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get());
std::vector<base::TimeTicks> run_times;
@@ -414,7 +501,8 @@ TEST_F(TaskQueueThrottlerTest,
base::TimeTicks() + base::TimeDelta::FromSeconds(16)));
}
-TEST_F(TaskQueueThrottlerTest, TaskDelayIsBasedOnRealTime) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ TaskDelayIsBasedOnRealTime) {
std::vector<base::TimeTicks> run_times;
task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get());
@@ -444,19 +532,7 @@ TEST_F(TaskQueueThrottlerTest, TaskDelayIsBasedOnRealTime) {
base::TimeTicks() + base::TimeDelta::FromMilliseconds(3000.0)));
}
-TEST_F(TaskQueueThrottlerTest, ThrottledTasksReportRealTime) {
- EXPECT_EQ(timer_queue_->GetTimeDomain()->Now(), clock_->NowTicks());
-
- task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get());
- EXPECT_EQ(timer_queue_->GetTimeDomain()->Now(), clock_->NowTicks());
-
- clock_->Advance(base::TimeDelta::FromMilliseconds(250));
- // Make sure the throttled time domain's Now() reports the same as the
- // underlying clock.
- EXPECT_EQ(timer_queue_->GetTimeDomain()->Now(), clock_->NowTicks());
-}
-
-TEST_F(TaskQueueThrottlerTest, TaskQueueDisabledTillPump) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest, TaskQueueDisabledTillPump) {
size_t count = 0;
timer_queue_->PostTask(FROM_HERE, base::Bind(&AddOneTask, &count));
@@ -469,7 +545,8 @@ TEST_F(TaskQueueThrottlerTest, TaskQueueDisabledTillPump) {
EXPECT_FALSE(IsQueueBlocked(timer_queue_.get()));
}
-TEST_F(TaskQueueThrottlerTest, DoubleIncrementDoubleDecrement) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ DoubleIncrementDoubleDecrement) {
timer_queue_->PostTask(FROM_HERE, base::Bind(&NopTask));
EXPECT_FALSE(IsQueueBlocked(timer_queue_.get()));
@@ -481,7 +558,8 @@ TEST_F(TaskQueueThrottlerTest, DoubleIncrementDoubleDecrement) {
EXPECT_FALSE(IsQueueBlocked(timer_queue_.get()));
}
-TEST_F(TaskQueueThrottlerTest, EnableVirtualTimeThenIncrement) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ EnableVirtualTimeThenIncrement) {
timer_queue_->PostTask(FROM_HERE, base::Bind(&NopTask));
scheduler_->EnableVirtualTime();
@@ -493,7 +571,8 @@ TEST_F(TaskQueueThrottlerTest, EnableVirtualTimeThenIncrement) {
EXPECT_EQ(timer_queue_->GetTimeDomain(), scheduler_->GetVirtualTimeDomain());
}
-TEST_F(TaskQueueThrottlerTest, IncrementThenEnableVirtualTime) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ IncrementThenEnableVirtualTime) {
timer_queue_->PostTask(FROM_HERE, base::Bind(&NopTask));
EXPECT_FALSE(IsQueueBlocked(timer_queue_.get()));
@@ -505,7 +584,7 @@ TEST_F(TaskQueueThrottlerTest, IncrementThenEnableVirtualTime) {
EXPECT_EQ(timer_queue_->GetTimeDomain(), scheduler_->GetVirtualTimeDomain());
}
-TEST_F(TaskQueueThrottlerTest, TimeBasedThrottling) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest, TimeBasedThrottling) {
std::vector<base::TimeTicks> run_times;
CPUTimeBudgetPool* pool =
@@ -531,7 +610,7 @@ TEST_F(TaskQueueThrottlerTest, TimeBasedThrottling) {
ElementsAre(base::TimeTicks() + base::TimeDelta::FromSeconds(1),
base::TimeTicks() + base::TimeDelta::FromSeconds(3)));
- pool->RemoveQueue(clock_->NowTicks(), timer_queue_.get());
+ pool->RemoveQueue(clock_->GetNowTicksWithoutAdvancing(), timer_queue_.get());
run_times.clear();
// Queue was removed from CPUTimeBudgetPool, only timer alignment should be
@@ -554,7 +633,8 @@ TEST_F(TaskQueueThrottlerTest, TimeBasedThrottling) {
pool->Close();
}
-TEST_F(TaskQueueThrottlerTest, EnableAndDisableCPUTimeBudgetPool) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ EnableAndDisableCPUTimeBudgetPool) {
std::vector<base::TimeTicks> run_times;
CPUTimeBudgetPool* pool =
@@ -610,11 +690,12 @@ TEST_F(TaskQueueThrottlerTest, EnableAndDisableCPUTimeBudgetPool) {
task_queue_throttler_->DecreaseThrottleRefCount(timer_queue_.get());
- pool->RemoveQueue(clock_->NowTicks(), timer_queue_.get());
+ pool->RemoveQueue(clock_->GetNowTicksWithoutAdvancing(), timer_queue_.get());
pool->Close();
}
-TEST_F(TaskQueueThrottlerTest, ImmediateTasksTimeBudgetThrottling) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ ImmediateTasksTimeBudgetThrottling) {
std::vector<base::TimeTicks> run_times;
CPUTimeBudgetPool* pool =
@@ -638,7 +719,7 @@ TEST_F(TaskQueueThrottlerTest, ImmediateTasksTimeBudgetThrottling) {
ElementsAre(base::TimeTicks() + base::TimeDelta::FromSeconds(1),
base::TimeTicks() + base::TimeDelta::FromSeconds(3)));
- pool->RemoveQueue(clock_->NowTicks(), timer_queue_.get());
+ pool->RemoveQueue(clock_->GetNowTicksWithoutAdvancing(), timer_queue_.get());
run_times.clear();
// Queue was removed from CPUTimeBudgetPool, only timer alignment should be
@@ -659,7 +740,8 @@ TEST_F(TaskQueueThrottlerTest, ImmediateTasksTimeBudgetThrottling) {
pool->Close();
}
-TEST_F(TaskQueueThrottlerTest, TwoQueuesTimeBudgetThrottling) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ TwoQueuesTimeBudgetThrottling) {
std::vector<base::TimeTicks> run_times;
scoped_refptr<TaskQueue> second_queue =
@@ -689,13 +771,14 @@ TEST_F(TaskQueueThrottlerTest, TwoQueuesTimeBudgetThrottling) {
task_queue_throttler_->DecreaseThrottleRefCount(timer_queue_.get());
task_queue_throttler_->DecreaseThrottleRefCount(second_queue.get());
- pool->RemoveQueue(clock_->NowTicks(), timer_queue_.get());
- pool->RemoveQueue(clock_->NowTicks(), second_queue.get());
+ pool->RemoveQueue(clock_->GetNowTicksWithoutAdvancing(), timer_queue_.get());
+ pool->RemoveQueue(clock_->GetNowTicksWithoutAdvancing(), second_queue.get());
pool->Close();
}
-TEST_F(TaskQueueThrottlerTest, DisabledTimeBudgetDoesNotAffectThrottledQueues) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ DisabledTimeBudgetDoesNotAffectThrottledQueues) {
std::vector<base::TimeTicks> run_times;
LazyNow lazy_now(clock_.get());
@@ -723,7 +806,7 @@ TEST_F(TaskQueueThrottlerTest, DisabledTimeBudgetDoesNotAffectThrottledQueues) {
base::TimeTicks() + base::TimeDelta::FromMilliseconds(1250)));
}
-TEST_F(TaskQueueThrottlerTest,
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
TimeBudgetThrottlingDoesNotAffectUnthrottledQueues) {
std::vector<base::TimeTicks> run_times;
@@ -734,7 +817,7 @@ TEST_F(TaskQueueThrottlerTest,
LazyNow lazy_now(clock_.get());
pool->DisableThrottling(&lazy_now);
- pool->AddQueue(clock_->NowTicks(), timer_queue_.get());
+ pool->AddQueue(clock_->GetNowTicksWithoutAdvancing(), timer_queue_.get());
timer_queue_->PostDelayedTask(
FROM_HERE, base::Bind(&ExpensiveTestTask, &run_times, clock_.get()),
@@ -751,7 +834,7 @@ TEST_F(TaskQueueThrottlerTest,
base::TimeTicks() + base::TimeDelta::FromMilliseconds(355)));
}
-TEST_F(TaskQueueThrottlerTest, MaxThrottlingDelay) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest, MaxThrottlingDelay) {
std::vector<base::TimeTicks> run_times;
CPUTimeBudgetPool* pool =
@@ -782,7 +865,8 @@ TEST_F(TaskQueueThrottlerTest, MaxThrottlingDelay) {
base::TimeTicks() + base::TimeDelta::FromSeconds(245)));
}
-TEST_F(TaskQueueThrottlerTest, EnableAndDisableThrottling) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ EnableAndDisableThrottling) {
std::vector<base::TimeTicks> run_times;
task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get());
@@ -844,7 +928,7 @@ TEST_F(TaskQueueThrottlerTest, EnableAndDisableThrottling) {
base::TimeDelta::FromMilliseconds(2000)));
}
-TEST_F(TaskQueueThrottlerTest, ReportThrottling) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest, ReportThrottling) {
std::vector<base::TimeTicks> run_times;
std::vector<base::TimeDelta> reported_throttling_times;
@@ -880,12 +964,12 @@ TEST_F(TaskQueueThrottlerTest, ReportThrottling) {
ElementsAre(base::TimeDelta::FromMilliseconds(1255),
base::TimeDelta::FromMilliseconds(1755)));
- pool->RemoveQueue(clock_->NowTicks(), timer_queue_.get());
+ pool->RemoveQueue(clock_->GetNowTicksWithoutAdvancing(), timer_queue_.get());
task_queue_throttler_->DecreaseThrottleRefCount(timer_queue_.get());
pool->Close();
}
-TEST_F(TaskQueueThrottlerTest, GrantAdditionalBudget) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest, GrantAdditionalBudget) {
std::vector<base::TimeTicks> run_times;
CPUTimeBudgetPool* pool =
@@ -916,12 +1000,13 @@ TEST_F(TaskQueueThrottlerTest, GrantAdditionalBudget) {
base::TimeTicks() + base::TimeDelta::FromSeconds(3),
base::TimeTicks() + base::TimeDelta::FromSeconds(6)));
- pool->RemoveQueue(clock_->NowTicks(), timer_queue_.get());
+ pool->RemoveQueue(clock_->GetNowTicksWithoutAdvancing(), timer_queue_.get());
task_queue_throttler_->DecreaseThrottleRefCount(timer_queue_.get());
pool->Close();
}
-TEST_F(TaskQueueThrottlerTest, EnableAndDisableThrottlingAndTimeBudgets) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ EnableAndDisableThrottlingAndTimeBudgets) {
// This test checks that if time budget pool is enabled when throttling
// is disabled, it does not throttle the queue.
std::vector<base::TimeTicks> run_times;
@@ -953,7 +1038,8 @@ TEST_F(TaskQueueThrottlerTest, EnableAndDisableThrottlingAndTimeBudgets) {
base::TimeDelta::FromMilliseconds(300)));
}
-TEST_F(TaskQueueThrottlerTest, AddQueueToBudgetPoolWhenThrottlingDisabled) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ AddQueueToBudgetPoolWhenThrottlingDisabled) {
// This test checks that a task queue is added to time budget pool
// when throttling is disabled, is does not throttle queue.
std::vector<base::TimeTicks> run_times;
@@ -979,7 +1065,8 @@ TEST_F(TaskQueueThrottlerTest, AddQueueToBudgetPoolWhenThrottlingDisabled) {
base::TimeDelta::FromMilliseconds(300)));
}
-TEST_F(TaskQueueThrottlerTest, DisabledQueueThenEnabledQueue) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ DisabledQueueThenEnabledQueue) {
std::vector<base::TimeTicks> run_times;
scoped_refptr<TaskQueue> second_queue =
@@ -1015,7 +1102,7 @@ TEST_F(TaskQueueThrottlerTest, DisabledQueueThenEnabledQueue) {
base::TimeTicks() + base::TimeDelta::FromMilliseconds(2000)));
}
-TEST_F(TaskQueueThrottlerTest, TwoBudgetPools) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest, TwoBudgetPools) {
std::vector<base::TimeTicks> run_times;
scoped_refptr<TaskQueue> second_queue =
@@ -1058,10 +1145,11 @@ TEST_F(TaskQueueThrottlerTest, TwoBudgetPools) {
namespace {
void RunChainedTask(size_t run_times_count,
scoped_refptr<TaskQueue> queue,
- base::SimpleTestTickClock* clock,
+ AutoAdvancingTestClock* clock,
base::TimeDelta task_duration,
std::vector<base::TimeTicks>* run_times) {
- run_times->push_back(clock->NowTicks());
+ run_times->push_back(
+ RoundTimeToMilliseconds(clock->GetNowTicksWithoutAdvancing()));
clock->Advance(task_duration);
if (run_times_count <= 1)
@@ -1074,11 +1162,12 @@ void RunChainedTask(size_t run_times_count,
void RunChainedDelayedTask(size_t run_times_count,
scoped_refptr<TaskQueue> queue,
- base::SimpleTestTickClock* clock,
+ AutoAdvancingTestClock* clock,
base::TimeDelta task_duration,
std::vector<base::TimeTicks>* run_times,
base::TimeDelta delay) {
- run_times->push_back(clock->NowTicks());
+ run_times->push_back(
+ RoundTimeToMilliseconds(clock->GetNowTicksWithoutAdvancing()));
clock->Advance(task_duration);
if (run_times_count <= 1)
@@ -1092,7 +1181,7 @@ void RunChainedDelayedTask(size_t run_times_count,
}
} // namespace
-TEST_F(TaskQueueThrottlerTest,
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
WakeUpBasedThrottling_ChainedTasks_Instantaneous) {
scheduler_->GetWakeUpBudgetPoolForTesting()->SetWakeUpDuration(
base::TimeDelta::FromMilliseconds(10));
@@ -1121,7 +1210,8 @@ TEST_F(TaskQueueThrottlerTest,
base::TimeTicks() + base::TimeDelta::FromSeconds(1)));
}
-TEST_F(TaskQueueThrottlerTest, WakeUpBasedThrottling_ImmediateTasks_Fast) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ WakeUpBasedThrottling_ImmediateTasks_Fast) {
scheduler_->GetWakeUpBudgetPoolForTesting()->SetWakeUpDuration(
base::TimeDelta::FromMilliseconds(10));
std::vector<base::TimeTicks> run_times;
@@ -1151,7 +1241,8 @@ TEST_F(TaskQueueThrottlerTest, WakeUpBasedThrottling_ImmediateTasks_Fast) {
base::TimeTicks() + base::TimeDelta::FromMilliseconds(2012)));
}
-TEST_F(TaskQueueThrottlerTest, WakeUpBasedThrottling_DelayedTasks) {
+TEST_P(TaskQueueThrottlerWithAutoAdvancingTimeTest,
+ WakeUpBasedThrottling_DelayedTasks) {
scheduler_->GetWakeUpBudgetPoolForTesting()->SetWakeUpDuration(
base::TimeDelta::FromMilliseconds(10));
std::vector<base::TimeTicks> run_times;

Powered by Google App Engine
This is Rietveld 408576698