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

Side by Side Diff: base/task_scheduler/scheduler_single_thread_task_runner_manager_unittest.cc

Issue 2810873008: Separate the create and start phases in DelayedTaskManager. (Closed)
Patch Set: self-review Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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/scheduler_single_thread_task_runner_manager.h" 5 #include "base/task_scheduler/scheduler_single_thread_task_runner_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/synchronization/atomic_flag.h" 9 #include "base/synchronization/atomic_flag.h"
10 #include "base/synchronization/lock.h" 10 #include "base/synchronization/lock.h"
(...skipping 21 matching lines...) Expand all
32 32
33 namespace { 33 namespace {
34 34
35 class TaskSchedulerSingleThreadTaskRunnerManagerTest : public testing::Test { 35 class TaskSchedulerSingleThreadTaskRunnerManagerTest : public testing::Test {
36 public: 36 public:
37 TaskSchedulerSingleThreadTaskRunnerManagerTest() 37 TaskSchedulerSingleThreadTaskRunnerManagerTest()
38 : service_thread_("TaskSchedulerServiceThread") {} 38 : service_thread_("TaskSchedulerServiceThread") {}
39 39
40 void SetUp() override { 40 void SetUp() override {
41 service_thread_.Start(); 41 service_thread_.Start();
42 delayed_task_manager_ = 42 delayed_task_manager_.Start(service_thread_.task_runner());
43 MakeUnique<DelayedTaskManager>(service_thread_.task_runner());
44 single_thread_task_runner_manager_ = 43 single_thread_task_runner_manager_ =
45 MakeUnique<SchedulerSingleThreadTaskRunnerManager>( 44 MakeUnique<SchedulerSingleThreadTaskRunnerManager>(
46 &task_tracker_, delayed_task_manager_.get()); 45 &task_tracker_, &delayed_task_manager_);
47 StartSingleThreadTaskRunnerManagerFromSetUp(); 46 StartSingleThreadTaskRunnerManagerFromSetUp();
48 } 47 }
49 48
50 void TearDown() override { 49 void TearDown() override {
51 TearDownSingleThreadTaskRunnerManager(); 50 TearDownSingleThreadTaskRunnerManager();
52 delayed_task_manager_.reset();
53 service_thread_.Stop(); 51 service_thread_.Stop();
54 } 52 }
55 53
56 protected: 54 protected:
57 virtual void StartSingleThreadTaskRunnerManagerFromSetUp() { 55 virtual void StartSingleThreadTaskRunnerManagerFromSetUp() {
58 single_thread_task_runner_manager_->Start(); 56 single_thread_task_runner_manager_->Start();
59 } 57 }
60 58
61 virtual void TearDownSingleThreadTaskRunnerManager() { 59 virtual void TearDownSingleThreadTaskRunnerManager() {
62 single_thread_task_runner_manager_->JoinForTesting(); 60 single_thread_task_runner_manager_->JoinForTesting();
63 single_thread_task_runner_manager_.reset(); 61 single_thread_task_runner_manager_.reset();
64 } 62 }
65 63
66 std::unique_ptr<SchedulerSingleThreadTaskRunnerManager> 64 std::unique_ptr<SchedulerSingleThreadTaskRunnerManager>
67 single_thread_task_runner_manager_; 65 single_thread_task_runner_manager_;
68 TaskTracker task_tracker_; 66 TaskTracker task_tracker_;
69 67
70 private: 68 private:
71 Thread service_thread_; 69 Thread service_thread_;
72 std::unique_ptr<DelayedTaskManager> delayed_task_manager_; 70 DelayedTaskManager delayed_task_manager_;
73 71
74 DISALLOW_COPY_AND_ASSIGN(TaskSchedulerSingleThreadTaskRunnerManagerTest); 72 DISALLOW_COPY_AND_ASSIGN(TaskSchedulerSingleThreadTaskRunnerManagerTest);
75 }; 73 };
76 74
77 void CaptureThreadRef(PlatformThreadRef* thread_ref) { 75 void CaptureThreadRef(PlatformThreadRef* thread_ref) {
78 ASSERT_TRUE(thread_ref); 76 ASSERT_TRUE(thread_ref);
79 *thread_ref = PlatformThread::CurrentRef(); 77 *thread_ref = PlatformThread::CurrentRef();
80 } 78 }
81 79
82 void CaptureThreadPriority(ThreadPriority* thread_priority) { 80 void CaptureThreadPriority(ThreadPriority* thread_priority) {
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 PlatformThread::Sleep(TestTimeouts::tiny_timeout()); 480 PlatformThread::Sleep(TestTimeouts::tiny_timeout());
483 manager_started.Set(); 481 manager_started.Set();
484 single_thread_task_runner_manager_->Start(); 482 single_thread_task_runner_manager_->Start();
485 483
486 // This should not hang if the task is scheduled after Start(). 484 // This should not hang if the task is scheduled after Start().
487 task_running.Wait(); 485 task_running.Wait();
488 } 486 }
489 487
490 } // namespace internal 488 } // namespace internal
491 } // namespace base 489 } // namespace base
OLDNEW
« no previous file with comments | « base/task_scheduler/delayed_task_manager_unittest.cc ('k') | base/task_scheduler/scheduler_worker_pool_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698