| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "base/task_scheduler/task_scheduler_impl.h" | 5 #include "base/task_scheduler/task_scheduler_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <map> |
| 9 #include <string> | 10 #include <string> |
| 10 #include <utility> | 11 #include <utility> |
| 11 #include <vector> | 12 #include <vector> |
| 12 | 13 |
| 13 #include "base/bind.h" | 14 #include "base/bind.h" |
| 14 #include "base/bind_helpers.h" | 15 #include "base/bind_helpers.h" |
| 15 #include "base/callback.h" | 16 #include "base/callback.h" |
| 16 #include "base/macros.h" | 17 #include "base/macros.h" |
| 17 #include "base/memory/ptr_util.h" | 18 #include "base/memory/ptr_util.h" |
| 18 #include "base/synchronization/waitable_event.h" | 19 #include "base/synchronization/waitable_event.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 37 TaskTraits traits; | 38 TaskTraits traits; |
| 38 ExecutionMode execution_mode; | 39 ExecutionMode execution_mode; |
| 39 }; | 40 }; |
| 40 | 41 |
| 41 class TaskSchedulerImplTest | 42 class TaskSchedulerImplTest |
| 42 : public testing::TestWithParam<TraitsExecutionModePair> { | 43 : public testing::TestWithParam<TraitsExecutionModePair> { |
| 43 protected: | 44 protected: |
| 44 TaskSchedulerImplTest() = default; | 45 TaskSchedulerImplTest() = default; |
| 45 | 46 |
| 46 void SetUp() override { | 47 void SetUp() override { |
| 47 scheduler_ = TaskSchedulerImpl::Create(); | 48 scheduler_ = |
| 49 TaskSchedulerImpl::Create(std::map<std::string, std::string>()); |
| 48 EXPECT_TRUE(scheduler_); | 50 EXPECT_TRUE(scheduler_); |
| 49 } | 51 } |
| 50 void TearDown() override { scheduler_->JoinForTesting(); } | 52 void TearDown() override { scheduler_->JoinForTesting(); } |
| 51 | 53 |
| 52 std::unique_ptr<TaskSchedulerImpl> scheduler_; | 54 std::unique_ptr<TaskSchedulerImpl> scheduler_; |
| 53 | 55 |
| 54 private: | 56 private: |
| 55 DISALLOW_COPY_AND_ASSIGN(TaskSchedulerImplTest); | 57 DISALLOW_COPY_AND_ASSIGN(TaskSchedulerImplTest); |
| 56 }; | 58 }; |
| 57 | 59 |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 | 190 |
| 189 INSTANTIATE_TEST_CASE_P(OneTraitsExecutionModePair, | 191 INSTANTIATE_TEST_CASE_P(OneTraitsExecutionModePair, |
| 190 TaskSchedulerImplTest, | 192 TaskSchedulerImplTest, |
| 191 ::testing::ValuesIn(GetTraitsExecutionModePairs())); | 193 ::testing::ValuesIn(GetTraitsExecutionModePairs())); |
| 192 | 194 |
| 193 // Spawns threads that simultaneously post Tasks to TaskRunners with various | 195 // Spawns threads that simultaneously post Tasks to TaskRunners with various |
| 194 // TaskTraits and ExecutionModes. Verifies that each Task runs on a thread with | 196 // TaskTraits and ExecutionModes. Verifies that each Task runs on a thread with |
| 195 // the expected priority and I/O restrictions and respects the characteristics | 197 // the expected priority and I/O restrictions and respects the characteristics |
| 196 // of its ExecutionMode. | 198 // of its ExecutionMode. |
| 197 TEST(TaskSchedulerImplTest, MultipleTraitsExecutionModePairs) { | 199 TEST(TaskSchedulerImplTest, MultipleTraitsExecutionModePairs) { |
| 198 std::unique_ptr<TaskSchedulerImpl> scheduler = TaskSchedulerImpl::Create(); | 200 std::unique_ptr<TaskSchedulerImpl> scheduler = |
| 201 TaskSchedulerImpl::Create(std::map<std::string, std::string>()); |
| 199 | 202 |
| 200 std::vector<std::unique_ptr<ThreadPostingTasks>> threads_posting_tasks; | 203 std::vector<std::unique_ptr<ThreadPostingTasks>> threads_posting_tasks; |
| 201 for (const auto& traits_execution_mode_pair : GetTraitsExecutionModePairs()) { | 204 for (const auto& traits_execution_mode_pair : GetTraitsExecutionModePairs()) { |
| 202 threads_posting_tasks.push_back(WrapUnique(new ThreadPostingTasks( | 205 threads_posting_tasks.push_back(WrapUnique(new ThreadPostingTasks( |
| 203 scheduler.get(), traits_execution_mode_pair.traits, | 206 scheduler.get(), traits_execution_mode_pair.traits, |
| 204 traits_execution_mode_pair.execution_mode))); | 207 traits_execution_mode_pair.execution_mode))); |
| 205 threads_posting_tasks.back()->Start(); | 208 threads_posting_tasks.back()->Start(); |
| 206 } | 209 } |
| 207 | 210 |
| 208 for (const auto& thread : threads_posting_tasks) { | 211 for (const auto& thread : threads_posting_tasks) { |
| 209 thread->WaitForAllTasksToRun(); | 212 thread->WaitForAllTasksToRun(); |
| 210 thread->Join(); | 213 thread->Join(); |
| 211 } | 214 } |
| 212 | 215 |
| 213 scheduler->JoinForTesting(); | 216 scheduler->JoinForTesting(); |
| 214 } | 217 } |
| 215 | 218 |
| 216 // TODO(fdoray): Add tests with Sequences that move around thread pools once | 219 // TODO(fdoray): Add tests with Sequences that move around thread pools once |
| 217 // child TaskRunners are supported. | 220 // child TaskRunners are supported. |
| 218 | 221 |
| 219 } // namespace internal | 222 } // namespace internal |
| 220 } // namespace base | 223 } // namespace base |
| OLD | NEW |