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 473bfa087c7699404d4612186b98cbcd3aad62cd..a6a6b11ba2e1cc0dac0c241d95aa950f7bc69547 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 |
@@ -166,6 +166,17 @@ void TestTask(std::vector<base::TimeTicks>* run_times, |
base::SimpleTestTickClock* clock) { |
run_times->push_back(clock->NowTicks()); |
} |
+ |
+void ExpensiveTestTask(std::vector<base::TimeTicks>* run_times, |
+ base::SimpleTestTickClock* clock) { |
+ run_times->push_back(clock->NowTicks()); |
+ 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); |
+} |
} // namespace |
TEST_F(TaskQueueThrottlerTest, TimerAlignment) { |
@@ -492,16 +503,6 @@ TEST_F(TaskQueueThrottlerTest, IncrementThenEnableVirtualTime) { |
EXPECT_EQ(timer_queue_->GetTimeDomain(), scheduler_->GetVirtualTimeDomain()); |
} |
-namespace { |
- |
-void ExpensiveTestTask(std::vector<base::TimeTicks>* run_times, |
- base::SimpleTestTickClock* clock) { |
- run_times->push_back(clock->NowTicks()); |
- clock->Advance(base::TimeDelta::FromMilliseconds(250)); |
-} |
- |
-} // namespace |
- |
TEST_F(TaskQueueThrottlerTest, TimeBasedThrottling) { |
std::vector<base::TimeTicks> run_times; |
@@ -838,15 +839,6 @@ TEST_F(TaskQueueThrottlerTest, EnableAndDisableThrottling) { |
base::TimeDelta::FromMilliseconds(2000))); |
} |
-namespace { |
- |
-void RecordThrottling(std::vector<base::TimeDelta>* reported_throttling_times, |
- base::TimeDelta throttling_duration) { |
- reported_throttling_times->push_back(throttling_duration); |
-} |
- |
-} // namespace |
- |
TEST_F(TaskQueueThrottlerTest, ReportThrottling) { |
std::vector<base::TimeTicks> run_times; |
std::vector<base::TimeDelta> reported_throttling_times; |
@@ -1018,5 +1010,45 @@ TEST_F(TaskQueueThrottlerTest, DisabledQueueThenEnabledQueue) { |
base::TimeTicks() + base::TimeDelta::FromMilliseconds(2000))); |
} |
+TEST_F(TaskQueueThrottlerTest, TwoBudgetPools) { |
+ std::vector<base::TimeTicks> run_times; |
+ |
+ scoped_refptr<TaskQueue> second_queue = |
+ scheduler_->NewTimerTaskRunner(TaskQueue::QueueType::TEST); |
+ |
+ CPUTimeBudgetPool* pool1 = task_queue_throttler_->CreateCPUTimeBudgetPool( |
+ "test", base::nullopt, base::nullopt); |
+ pool1->SetTimeBudgetRecoveryRate(base::TimeTicks(), 0.1); |
+ pool1->AddQueue(base::TimeTicks(), timer_queue_.get()); |
+ pool1->AddQueue(base::TimeTicks(), second_queue.get()); |
+ |
+ CPUTimeBudgetPool* pool2 = task_queue_throttler_->CreateCPUTimeBudgetPool( |
+ "test", base::nullopt, base::nullopt); |
+ pool2->SetTimeBudgetRecoveryRate(base::TimeTicks(), 0.01); |
+ pool2->AddQueue(base::TimeTicks(), timer_queue_.get()); |
+ |
+ task_queue_throttler_->IncreaseThrottleRefCount(timer_queue_.get()); |
+ task_queue_throttler_->IncreaseThrottleRefCount(second_queue.get()); |
+ |
+ timer_queue_->PostTask( |
+ FROM_HERE, base::Bind(&ExpensiveTestTask, &run_times, clock_.get())); |
+ second_queue->PostTask( |
+ FROM_HERE, base::Bind(&ExpensiveTestTask, &run_times, clock_.get())); |
+ timer_queue_->PostTask( |
+ FROM_HERE, base::Bind(&ExpensiveTestTask, &run_times, clock_.get())); |
+ second_queue->PostTask( |
+ FROM_HERE, base::Bind(&ExpensiveTestTask, &run_times, clock_.get())); |
+ |
+ mock_task_runner_->RunUntilIdle(); |
+ |
+ EXPECT_THAT( |
+ run_times, |
+ ElementsAre( |
+ base::TimeTicks() + base::TimeDelta::FromMilliseconds(1000), |
+ base::TimeTicks() + base::TimeDelta::FromMilliseconds(3000), |
+ base::TimeTicks() + base::TimeDelta::FromMilliseconds(6000), |
+ base::TimeTicks() + base::TimeDelta::FromMilliseconds(26000))); |
+} |
+ |
} // namespace scheduler |
} // namespace blink |