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

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

Issue 2077093002: Rename SchedulerWorkerThread* to SchedulerWorker* (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@rename2
Patch Set: Created 4 years, 6 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 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/scheduler_worker_thread_stack.h" 5 #include "base/task_scheduler/scheduler_worker_stack.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/task_scheduler/scheduler_worker_thread.h" 10 #include "base/task_scheduler/scheduler_worker.h"
11 #include "base/task_scheduler/sequence.h" 11 #include "base/task_scheduler/sequence.h"
12 #include "base/task_scheduler/task_tracker.h" 12 #include "base/task_scheduler/task_tracker.h"
13 #include "base/task_scheduler/test_utils.h" 13 #include "base/task_scheduler/test_utils.h"
14 #include "base/threading/platform_thread.h" 14 #include "base/threading/platform_thread.h"
15 #include "base/time/time.h" 15 #include "base/time/time.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 namespace base { 18 namespace base {
19 namespace internal { 19 namespace internal {
20 20
21 namespace { 21 namespace {
22 22
23 class MockSchedulerWorkerThreadDelegate 23 class MockSchedulerWorkerDelegate : public SchedulerWorker::Delegate {
24 : public SchedulerWorkerThread::Delegate {
25 public: 24 public:
26 void OnMainEntry(SchedulerWorkerThread* worker_thread) override {} 25 void OnMainEntry(SchedulerWorker* worker) override {}
27 scoped_refptr<Sequence> GetWork( 26 scoped_refptr<Sequence> GetWork(SchedulerWorker* worker) override {
28 SchedulerWorkerThread* worker_thread) override {
29 return nullptr; 27 return nullptr;
30 } 28 }
31 void ReEnqueueSequence(scoped_refptr<Sequence> sequence) override { 29 void ReEnqueueSequence(scoped_refptr<Sequence> sequence) override {
32 ADD_FAILURE() << "This delegate not expect to have sequences to reenqueue."; 30 ADD_FAILURE() << "This delegate not expect to have sequences to reenqueue.";
33 } 31 }
34 TimeDelta GetSleepTimeout() override { 32 TimeDelta GetSleepTimeout() override {
35 ADD_FAILURE() << 33 ADD_FAILURE() <<
36 "The mock thread is not expected to be woken before it is shutdown"; 34 "The mock thread is not expected to be woken before it is shutdown";
fdoray 2016/06/20 15:08:40 mock worker
robliao 2016/06/20 17:50:09 Went ahead and removed this ADD_FAILURE. Calling G
37 return TimeDelta::Max(); 35 return TimeDelta::Max();
38 } 36 }
39 }; 37 };
40 38
41 class TaskSchedulerWorkerThreadStackTest : public testing::Test { 39 class TaskSchedulerWorkerStackTest : public testing::Test {
42 protected: 40 protected:
43 void SetUp() override { 41 void SetUp() override {
44 thread_a_ = SchedulerWorkerThread::Create( 42 thread_a_ = SchedulerWorker::Create(
fdoray 2016/06/20 15:08:40 worker_a_
robliao 2016/06/20 17:50:09 Done.
45 ThreadPriority::NORMAL, 43 ThreadPriority::NORMAL,
46 WrapUnique(new MockSchedulerWorkerThreadDelegate), &task_tracker_); 44 WrapUnique(new MockSchedulerWorkerDelegate), &task_tracker_);
47 ASSERT_TRUE(thread_a_); 45 ASSERT_TRUE(thread_a_);
48 thread_b_ = SchedulerWorkerThread::Create( 46 thread_b_ = SchedulerWorker::Create(
fdoray 2016/06/20 15:08:40 worker_b_
robliao 2016/06/20 17:50:09 Done.
49 ThreadPriority::NORMAL, 47 ThreadPriority::NORMAL,
50 WrapUnique(new MockSchedulerWorkerThreadDelegate), &task_tracker_); 48 WrapUnique(new MockSchedulerWorkerDelegate), &task_tracker_);
51 ASSERT_TRUE(thread_b_); 49 ASSERT_TRUE(thread_b_);
52 thread_c_ = SchedulerWorkerThread::Create( 50 thread_c_ = SchedulerWorker::Create(
fdoray 2016/06/20 15:08:40 worker_c_
robliao 2016/06/20 17:50:09 Done.
53 ThreadPriority::NORMAL, 51 ThreadPriority::NORMAL,
54 WrapUnique(new MockSchedulerWorkerThreadDelegate), &task_tracker_); 52 WrapUnique(new MockSchedulerWorkerDelegate), &task_tracker_);
55 ASSERT_TRUE(thread_c_); 53 ASSERT_TRUE(thread_c_);
56 } 54 }
57 55
58 void TearDown() override { 56 void TearDown() override {
59 thread_a_->JoinForTesting(); 57 thread_a_->JoinForTesting();
60 thread_b_->JoinForTesting(); 58 thread_b_->JoinForTesting();
61 thread_c_->JoinForTesting(); 59 thread_c_->JoinForTesting();
62 } 60 }
63 61
64 std::unique_ptr<SchedulerWorkerThread> thread_a_; 62 std::unique_ptr<SchedulerWorker> thread_a_;
65 std::unique_ptr<SchedulerWorkerThread> thread_b_; 63 std::unique_ptr<SchedulerWorker> thread_b_;
66 std::unique_ptr<SchedulerWorkerThread> thread_c_; 64 std::unique_ptr<SchedulerWorker> thread_c_;
67 65
68 private: 66 private:
69 TaskTracker task_tracker_; 67 TaskTracker task_tracker_;
70 }; 68 };
71 69
72 } // namespace 70 } // namespace
73 71
74 // Verify that Push() and Pop() add/remove values in FIFO order. 72 // Verify that Push() and Pop() add/remove values in FIFO order.
75 TEST_F(TaskSchedulerWorkerThreadStackTest, PushPop) { 73 TEST_F(TaskSchedulerWorkerStackTest, PushPop) {
76 SchedulerWorkerThreadStack stack; 74 SchedulerWorkerStack stack;
77 EXPECT_TRUE(stack.IsEmpty()); 75 EXPECT_TRUE(stack.IsEmpty());
78 EXPECT_EQ(0U, stack.Size()); 76 EXPECT_EQ(0U, stack.Size());
79 77
80 stack.Push(thread_a_.get()); 78 stack.Push(thread_a_.get());
81 EXPECT_FALSE(stack.IsEmpty()); 79 EXPECT_FALSE(stack.IsEmpty());
82 EXPECT_EQ(1U, stack.Size()); 80 EXPECT_EQ(1U, stack.Size());
83 81
84 stack.Push(thread_b_.get()); 82 stack.Push(thread_b_.get());
85 EXPECT_FALSE(stack.IsEmpty()); 83 EXPECT_FALSE(stack.IsEmpty());
86 EXPECT_EQ(2U, stack.Size()); 84 EXPECT_EQ(2U, stack.Size());
(...skipping 17 matching lines...) Expand all
104 EXPECT_EQ(thread_b_.get(), stack.Pop()); 102 EXPECT_EQ(thread_b_.get(), stack.Pop());
105 EXPECT_FALSE(stack.IsEmpty()); 103 EXPECT_FALSE(stack.IsEmpty());
106 EXPECT_EQ(1U, stack.Size()); 104 EXPECT_EQ(1U, stack.Size());
107 105
108 EXPECT_EQ(thread_a_.get(), stack.Pop()); 106 EXPECT_EQ(thread_a_.get(), stack.Pop());
109 EXPECT_TRUE(stack.IsEmpty()); 107 EXPECT_TRUE(stack.IsEmpty());
110 EXPECT_EQ(0U, stack.Size()); 108 EXPECT_EQ(0U, stack.Size());
111 } 109 }
112 110
113 // Verify that a value can be removed by Remove(). 111 // Verify that a value can be removed by Remove().
114 TEST_F(TaskSchedulerWorkerThreadStackTest, Remove) { 112 TEST_F(TaskSchedulerWorkerStackTest, Remove) {
115 SchedulerWorkerThreadStack stack; 113 SchedulerWorkerStack stack;
116 EXPECT_TRUE(stack.IsEmpty()); 114 EXPECT_TRUE(stack.IsEmpty());
117 EXPECT_EQ(0U, stack.Size()); 115 EXPECT_EQ(0U, stack.Size());
118 116
119 stack.Push(thread_a_.get()); 117 stack.Push(thread_a_.get());
120 EXPECT_FALSE(stack.IsEmpty()); 118 EXPECT_FALSE(stack.IsEmpty());
121 EXPECT_EQ(1U, stack.Size()); 119 EXPECT_EQ(1U, stack.Size());
122 120
123 stack.Push(thread_b_.get()); 121 stack.Push(thread_b_.get());
124 EXPECT_FALSE(stack.IsEmpty()); 122 EXPECT_FALSE(stack.IsEmpty());
125 EXPECT_EQ(2U, stack.Size()); 123 EXPECT_EQ(2U, stack.Size());
126 124
127 stack.Push(thread_c_.get()); 125 stack.Push(thread_c_.get());
128 EXPECT_FALSE(stack.IsEmpty()); 126 EXPECT_FALSE(stack.IsEmpty());
129 EXPECT_EQ(3U, stack.Size()); 127 EXPECT_EQ(3U, stack.Size());
130 128
131 stack.Remove(thread_b_.get()); 129 stack.Remove(thread_b_.get());
132 EXPECT_FALSE(stack.IsEmpty()); 130 EXPECT_FALSE(stack.IsEmpty());
133 EXPECT_EQ(2U, stack.Size()); 131 EXPECT_EQ(2U, stack.Size());
134 132
135 EXPECT_EQ(thread_c_.get(), stack.Pop()); 133 EXPECT_EQ(thread_c_.get(), stack.Pop());
136 EXPECT_FALSE(stack.IsEmpty()); 134 EXPECT_FALSE(stack.IsEmpty());
137 EXPECT_EQ(1U, stack.Size()); 135 EXPECT_EQ(1U, stack.Size());
138 136
139 EXPECT_EQ(thread_a_.get(), stack.Pop()); 137 EXPECT_EQ(thread_a_.get(), stack.Pop());
140 EXPECT_TRUE(stack.IsEmpty()); 138 EXPECT_TRUE(stack.IsEmpty());
141 EXPECT_EQ(0U, stack.Size()); 139 EXPECT_EQ(0U, stack.Size());
142 } 140 }
143 141
144 // Verify that a value can be pushed again after it has been removed. 142 // Verify that a value can be pushed again after it has been removed.
145 TEST_F(TaskSchedulerWorkerThreadStackTest, PushAfterRemove) { 143 TEST_F(TaskSchedulerWorkerStackTest, PushAfterRemove) {
146 SchedulerWorkerThreadStack stack; 144 SchedulerWorkerStack stack;
147 EXPECT_EQ(0U, stack.Size()); 145 EXPECT_EQ(0U, stack.Size());
148 EXPECT_TRUE(stack.IsEmpty()); 146 EXPECT_TRUE(stack.IsEmpty());
149 147
150 stack.Push(thread_a_.get()); 148 stack.Push(thread_a_.get());
151 EXPECT_EQ(1U, stack.Size()); 149 EXPECT_EQ(1U, stack.Size());
152 EXPECT_FALSE(stack.IsEmpty()); 150 EXPECT_FALSE(stack.IsEmpty());
153 151
154 stack.Remove(thread_a_.get()); 152 stack.Remove(thread_a_.get());
155 EXPECT_EQ(0U, stack.Size()); 153 EXPECT_EQ(0U, stack.Size());
156 EXPECT_TRUE(stack.IsEmpty()); 154 EXPECT_TRUE(stack.IsEmpty());
157 155
158 stack.Push(thread_a_.get()); 156 stack.Push(thread_a_.get());
159 EXPECT_EQ(1U, stack.Size()); 157 EXPECT_EQ(1U, stack.Size());
160 EXPECT_FALSE(stack.IsEmpty()); 158 EXPECT_FALSE(stack.IsEmpty());
161 } 159 }
162 160
163 // Verify that Push() DCHECKs when a value is inserted twice. 161 // Verify that Push() DCHECKs when a value is inserted twice.
164 TEST_F(TaskSchedulerWorkerThreadStackTest, PushTwice) { 162 TEST_F(TaskSchedulerWorkerStackTest, PushTwice) {
165 SchedulerWorkerThreadStack stack; 163 SchedulerWorkerStack stack;
166 stack.Push(thread_a_.get()); 164 stack.Push(thread_a_.get());
167 EXPECT_DCHECK_DEATH({ stack.Push(thread_a_.get()); }, ""); 165 EXPECT_DCHECK_DEATH({ stack.Push(thread_a_.get()); }, "");
168 } 166 }
169 167
170 } // namespace internal 168 } // namespace internal
171 } // namespace base 169 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698