OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/scheduler/base/task_queue_selector.h" | 5 #include "components/scheduler/base/task_queue_selector.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 TEST_F(TaskQueueSelectorTest, TestObserverWithEnabledQueue) { | 180 TEST_F(TaskQueueSelectorTest, TestObserverWithEnabledQueue) { |
181 DisableQueue(task_queues_[1].get()); | 181 DisableQueue(task_queues_[1].get()); |
182 MockObserver mock_observer; | 182 MockObserver mock_observer; |
183 selector_.SetTaskQueueSelectorObserver(&mock_observer); | 183 selector_.SetTaskQueueSelectorObserver(&mock_observer); |
184 EXPECT_CALL(mock_observer, OnTaskQueueEnabled(_)).Times(1); | 184 EXPECT_CALL(mock_observer, OnTaskQueueEnabled(_)).Times(1); |
185 EnableQueue(task_queues_[1].get()); | 185 EnableQueue(task_queues_[1].get()); |
186 } | 186 } |
187 | 187 |
188 TEST_F(TaskQueueSelectorTest, | 188 TEST_F(TaskQueueSelectorTest, |
189 TestObserverWithSetQueuePriorityAndQueueAlreadyEnabled) { | 189 TestObserverWithSetQueuePriorityAndQueueAlreadyEnabled) { |
190 selector_.SetQueuePriority(task_queues_[1].get(), TaskQueue::NORMAL_PRIORITY); | 190 selector_.SetQueuePriority(task_queues_[1].get(), TaskQueue::HIGH_PRIORITY); |
191 MockObserver mock_observer; | 191 MockObserver mock_observer; |
192 selector_.SetTaskQueueSelectorObserver(&mock_observer); | 192 selector_.SetTaskQueueSelectorObserver(&mock_observer); |
193 EXPECT_CALL(mock_observer, OnTaskQueueEnabled(_)).Times(0); | 193 EXPECT_CALL(mock_observer, OnTaskQueueEnabled(_)).Times(0); |
194 selector_.SetQueuePriority(task_queues_[1].get(), TaskQueue::NORMAL_PRIORITY); | 194 selector_.SetQueuePriority(task_queues_[1].get(), TaskQueue::NORMAL_PRIORITY); |
195 } | 195 } |
196 | 196 |
197 TEST_F(TaskQueueSelectorTest, TestDisableEnable) { | 197 TEST_F(TaskQueueSelectorTest, TestDisableEnable) { |
198 MockObserver mock_observer; | 198 MockObserver mock_observer; |
199 selector_.SetTaskQueueSelectorObserver(&mock_observer); | 199 selector_.SetTaskQueueSelectorObserver(&mock_observer); |
200 | 200 |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 EXPECT_GT(counts[0], 0ul); // Check high doesn't starve normal. | 287 EXPECT_GT(counts[0], 0ul); // Check high doesn't starve normal. |
288 EXPECT_GT(counts[2], counts[0]); // Check high gets more chance to run. | 288 EXPECT_GT(counts[2], counts[0]); // Check high gets more chance to run. |
289 EXPECT_EQ(0ul, counts[1]); // Check best effort is starved. | 289 EXPECT_EQ(0ul, counts[1]); // Check best effort is starved. |
290 } | 290 } |
291 | 291 |
292 TEST_F(TaskQueueSelectorTest, TestBestEffortGetsStarved) { | 292 TEST_F(TaskQueueSelectorTest, TestBestEffortGetsStarved) { |
293 size_t queue_order[] = {0, 1}; | 293 size_t queue_order[] = {0, 1}; |
294 PushTasks(queue_order, 2); | 294 PushTasks(queue_order, 2); |
295 selector_.SetQueuePriority(task_queues_[0].get(), | 295 selector_.SetQueuePriority(task_queues_[0].get(), |
296 TaskQueue::BEST_EFFORT_PRIORITY); | 296 TaskQueue::BEST_EFFORT_PRIORITY); |
297 selector_.SetQueuePriority(task_queues_[1].get(), TaskQueue::NORMAL_PRIORITY); | 297 EXPECT_EQ(TaskQueue::NORMAL_PRIORITY, task_queues_[1]->GetQueuePriority()); |
298 WorkQueue* chosen_work_queue = nullptr; | 298 WorkQueue* chosen_work_queue = nullptr; |
299 for (int i = 0; i < 100; i++) { | 299 for (int i = 0; i < 100; i++) { |
300 EXPECT_TRUE(selector_.SelectWorkQueueToService(&chosen_work_queue)); | 300 EXPECT_TRUE(selector_.SelectWorkQueueToService(&chosen_work_queue)); |
301 EXPECT_EQ(task_queues_[1].get(), chosen_work_queue->task_queue()); | 301 EXPECT_EQ(task_queues_[1].get(), chosen_work_queue->task_queue()); |
302 // Don't remove task from queue to simulate all queues still being full. | 302 // Don't remove task from queue to simulate all queues still being full. |
303 } | 303 } |
304 selector_.SetQueuePriority(task_queues_[1].get(), TaskQueue::HIGH_PRIORITY); | 304 selector_.SetQueuePriority(task_queues_[1].get(), TaskQueue::HIGH_PRIORITY); |
305 for (int i = 0; i < 100; i++) { | 305 for (int i = 0; i < 100; i++) { |
306 EXPECT_TRUE(selector_.SelectWorkQueueToService(&chosen_work_queue)); | 306 EXPECT_TRUE(selector_.SelectWorkQueueToService(&chosen_work_queue)); |
307 EXPECT_EQ(task_queues_[1].get(), chosen_work_queue->task_queue()); | 307 EXPECT_EQ(task_queues_[1].get(), chosen_work_queue->task_queue()); |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 EXPECT_EQ(chose_delayed_over_immediate, | 477 EXPECT_EQ(chose_delayed_over_immediate, |
478 GetParam().expected_did_starve_immediate_queue); | 478 GetParam().expected_did_starve_immediate_queue); |
479 } | 479 } |
480 | 480 |
481 INSTANTIATE_TEST_CASE_P(ChooseOldestWithPriorityTest, | 481 INSTANTIATE_TEST_CASE_P(ChooseOldestWithPriorityTest, |
482 ChooseOldestWithPriorityTest, | 482 ChooseOldestWithPriorityTest, |
483 testing::ValuesIn(kChooseOldestWithPriorityTestCases)); | 483 testing::ValuesIn(kChooseOldestWithPriorityTestCases)); |
484 | 484 |
485 } // namespace internal | 485 } // namespace internal |
486 } // namespace scheduler | 486 } // namespace scheduler |
OLD | NEW |