| 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 |