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

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

Issue 1852433005: Convert //base to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase after r384946 Created 4 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
« no previous file with comments | « base/task_scheduler/scheduler_worker_thread.cc ('k') | base/task_scheduler/sequence.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.h" 5 #include "base/task_scheduler/scheduler_worker_thread.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory>
9 #include <vector> 10 #include <vector>
10 11
11 #include "base/bind.h" 12 #include "base/bind.h"
12 #include "base/bind_helpers.h" 13 #include "base/bind_helpers.h"
13 #include "base/macros.h" 14 #include "base/macros.h"
14 #include "base/memory/scoped_ptr.h" 15 #include "base/memory/ptr_util.h"
15 #include "base/synchronization/condition_variable.h" 16 #include "base/synchronization/condition_variable.h"
16 #include "base/task_scheduler/scheduler_lock.h" 17 #include "base/task_scheduler/scheduler_lock.h"
17 #include "base/task_scheduler/sequence.h" 18 #include "base/task_scheduler/sequence.h"
18 #include "base/task_scheduler/task.h" 19 #include "base/task_scheduler/task.h"
19 #include "base/task_scheduler/task_tracker.h" 20 #include "base/task_scheduler/task_tracker.h"
20 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
21 22
22 namespace base { 23 namespace base {
23 namespace internal { 24 namespace internal {
24 namespace { 25 namespace {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 AutoSchedulerLock auto_lock(lock_); 92 AutoSchedulerLock auto_lock(lock_);
92 EXPECT_EQ(0U, num_sequences_to_create_); 93 EXPECT_EQ(0U, num_sequences_to_create_);
93 num_sequences_to_create_ = num_sequences_to_create; 94 num_sequences_to_create_ = num_sequences_to_create;
94 } 95 }
95 96
96 size_t NumGetWorkCallback() const { 97 size_t NumGetWorkCallback() const {
97 AutoSchedulerLock auto_lock(lock_); 98 AutoSchedulerLock auto_lock(lock_);
98 return num_get_work_callback_; 99 return num_get_work_callback_;
99 } 100 }
100 101
101 scoped_ptr<SchedulerWorkerThread> worker_thread_; 102 std::unique_ptr<SchedulerWorkerThread> worker_thread_;
102 103
103 private: 104 private:
104 void MainEntryCallback() { 105 void MainEntryCallback() {
105 AutoSchedulerLock auto_lock(lock_); 106 AutoSchedulerLock auto_lock(lock_);
106 ++num_main_entry_callback_; 107 ++num_main_entry_callback_;
107 num_main_entry_callback_cv_->Signal(); 108 num_main_entry_callback_cv_->Signal();
108 } 109 }
109 110
110 // Returns a Sequence that contains 1 Task if |num_sequences_to_create_| is 111 // Returns a Sequence that contains 1 Task if |num_sequences_to_create_| is
111 // greater than 0. 112 // greater than 0.
(...skipping 11 matching lines...) Expand all
123 // Check if a Sequence should be returned. 124 // Check if a Sequence should be returned.
124 if (num_sequences_to_create_ == 0) 125 if (num_sequences_to_create_ == 0)
125 return nullptr; 126 return nullptr;
126 --num_sequences_to_create_; 127 --num_sequences_to_create_;
127 } 128 }
128 129
129 // Create a Sequence that contains 1 Task. 130 // Create a Sequence that contains 1 Task.
130 scoped_refptr<Sequence> sequence(new Sequence); 131 scoped_refptr<Sequence> sequence(new Sequence);
131 task_tracker_.PostTask( 132 task_tracker_.PostTask(
132 Bind(IgnoreResult(&Sequence::PushTask), Unretained(sequence.get())), 133 Bind(IgnoreResult(&Sequence::PushTask), Unretained(sequence.get())),
133 make_scoped_ptr(new Task( 134 WrapUnique(new Task(
134 FROM_HERE, Bind(&TaskSchedulerWorkerThreadTest::RunTaskCallback, 135 FROM_HERE, Bind(&TaskSchedulerWorkerThreadTest::RunTaskCallback,
135 Unretained(this)), 136 Unretained(this)),
136 TaskTraits()))); 137 TaskTraits())));
137 138
138 { 139 {
139 // Add the Sequence to the vector of created Sequences. 140 // Add the Sequence to the vector of created Sequences.
140 AutoSchedulerLock auto_lock(lock_); 141 AutoSchedulerLock auto_lock(lock_);
141 created_sequences_.push_back(sequence); 142 created_sequences_.push_back(sequence);
142 } 143 }
143 144
(...skipping 16 matching lines...) Expand all
160 161
161 TaskTracker task_tracker_; 162 TaskTracker task_tracker_;
162 163
163 // Synchronizes access to all members below. 164 // Synchronizes access to all members below.
164 mutable SchedulerLock lock_; 165 mutable SchedulerLock lock_;
165 166
166 // Number of times that MainEntryCallback() has been called. 167 // Number of times that MainEntryCallback() has been called.
167 size_t num_main_entry_callback_ = 0; 168 size_t num_main_entry_callback_ = 0;
168 169
169 // Condition variable signaled when |num_main_entry_callback_| is incremented. 170 // Condition variable signaled when |num_main_entry_callback_| is incremented.
170 scoped_ptr<ConditionVariable> num_main_entry_callback_cv_; 171 std::unique_ptr<ConditionVariable> num_main_entry_callback_cv_;
171 172
172 // Number of Sequences that should be created by GetWorkCallback(). When this 173 // Number of Sequences that should be created by GetWorkCallback(). When this
173 // is 0, GetWorkCallback() returns nullptr. 174 // is 0, GetWorkCallback() returns nullptr.
174 size_t num_sequences_to_create_ = 0; 175 size_t num_sequences_to_create_ = 0;
175 176
176 // Number of times that GetWorkCallback() has been called. 177 // Number of times that GetWorkCallback() has been called.
177 size_t num_get_work_callback_ = 0; 178 size_t num_get_work_callback_ = 0;
178 179
179 // Condition variable signaled when |num_get_work_callback_| is incremented. 180 // Condition variable signaled when |num_get_work_callback_| is incremented.
180 scoped_ptr<ConditionVariable> num_get_work_callback_cv_; 181 std::unique_ptr<ConditionVariable> num_get_work_callback_cv_;
181 182
182 // Sequences created by GetWorkCallback(). 183 // Sequences created by GetWorkCallback().
183 std::vector<scoped_refptr<Sequence>> created_sequences_; 184 std::vector<scoped_refptr<Sequence>> created_sequences_;
184 185
185 // Sequences passed to RanTaskFromSequenceCallback(). 186 // Sequences passed to RanTaskFromSequenceCallback().
186 std::vector<scoped_refptr<Sequence>> run_sequences_; 187 std::vector<scoped_refptr<Sequence>> run_sequences_;
187 188
188 // Condition variable signaled when a Sequence is added to |run_sequences_|. 189 // Condition variable signaled when a Sequence is added to |run_sequences_|.
189 scoped_ptr<ConditionVariable> run_sequences_cv_; 190 std::unique_ptr<ConditionVariable> run_sequences_cv_;
190 191
191 // Number of times that RunTaskCallback() has been called. 192 // Number of times that RunTaskCallback() has been called.
192 size_t num_run_tasks_ = 0; 193 size_t num_run_tasks_ = 0;
193 194
194 DISALLOW_COPY_AND_ASSIGN(TaskSchedulerWorkerThreadTest); 195 DISALLOW_COPY_AND_ASSIGN(TaskSchedulerWorkerThreadTest);
195 }; 196 };
196 197
197 // Verify that when GetWorkCallback() continuously returns Sequences, all Tasks 198 // Verify that when GetWorkCallback() continuously returns Sequences, all Tasks
198 // in these Sequences run successfully. The SchedulerWorkerThread is woken up 199 // in these Sequences run successfully. The SchedulerWorkerThread is woken up
199 // once. 200 // once.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 // |i| calls in which it returned nullptr. 233 // |i| calls in which it returned nullptr.
233 const size_t expected_num_get_work_callback = 2 * (i + 1); 234 const size_t expected_num_get_work_callback = 2 * (i + 1);
234 WaitForNumGetWorkCallback(expected_num_get_work_callback); 235 WaitForNumGetWorkCallback(expected_num_get_work_callback);
235 EXPECT_EQ(expected_num_get_work_callback, NumGetWorkCallback()); 236 EXPECT_EQ(expected_num_get_work_callback, NumGetWorkCallback());
236 } 237 }
237 } 238 }
238 239
239 } // namespace 240 } // namespace
240 } // namespace internal 241 } // namespace internal
241 } // namespace base 242 } // namespace base
OLDNEW
« no previous file with comments | « base/task_scheduler/scheduler_worker_thread.cc ('k') | base/task_scheduler/sequence.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698