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

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

Issue 1890163003: TaskScheduler: Add delayed run time to the constructor of Task. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@7_sequenced
Patch Set: self review 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/task.cc ('k') | base/task_scheduler/utils.cc » ('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/task_tracker.h" 5 #include "base/task_scheduler/task_tracker.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 class TaskSchedulerTaskTrackerTest 64 class TaskSchedulerTaskTrackerTest
65 : public testing::TestWithParam<TaskShutdownBehavior> { 65 : public testing::TestWithParam<TaskShutdownBehavior> {
66 protected: 66 protected:
67 TaskSchedulerTaskTrackerTest() = default; 67 TaskSchedulerTaskTrackerTest() = default;
68 68
69 // Creates a task with |shutdown_behavior|. 69 // Creates a task with |shutdown_behavior|.
70 std::unique_ptr<Task> CreateTask(TaskShutdownBehavior shutdown_behavior) { 70 std::unique_ptr<Task> CreateTask(TaskShutdownBehavior shutdown_behavior) {
71 return WrapUnique(new Task( 71 return WrapUnique(new Task(
72 FROM_HERE, 72 FROM_HERE,
73 Bind(&TaskSchedulerTaskTrackerTest::RunTaskCallback, Unretained(this)), 73 Bind(&TaskSchedulerTaskTrackerTest::RunTaskCallback, Unretained(this)),
74 TaskTraits().WithShutdownBehavior(shutdown_behavior))); 74 TaskTraits().WithShutdownBehavior(shutdown_behavior), TimeTicks()));
75 } 75 }
76 76
77 // Calls tracker_->Shutdown() on a new thread. When this returns, Shutdown() 77 // Calls tracker_->Shutdown() on a new thread. When this returns, Shutdown()
78 // method has been entered on the new thread, but it hasn't necessarily 78 // method has been entered on the new thread, but it hasn't necessarily
79 // returned. 79 // returned.
80 void CallShutdownAsync() { 80 void CallShutdownAsync() {
81 ASSERT_FALSE(thread_calling_shutdown_); 81 ASSERT_FALSE(thread_calling_shutdown_);
82 thread_calling_shutdown_.reset(new ThreadCallingShutdown(&tracker_)); 82 thread_calling_shutdown_.reset(new ThreadCallingShutdown(&tracker_));
83 thread_calling_shutdown_->Start(); 83 thread_calling_shutdown_->Start();
84 while (!tracker_.IsShuttingDownForTesting() && 84 while (!tracker_.IsShuttingDownForTesting() &&
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 139
140 // Shutdown() shouldn't block. 140 // Shutdown() shouldn't block.
141 tracker_.Shutdown(); 141 tracker_.Shutdown();
142 } 142 }
143 143
144 TEST_P(TaskSchedulerTaskTrackerTest, WillPostAndRunLongTaskBeforeShutdown) { 144 TEST_P(TaskSchedulerTaskTrackerTest, WillPostAndRunLongTaskBeforeShutdown) {
145 // Create a task that will block until |event| is signaled. 145 // Create a task that will block until |event| is signaled.
146 WaitableEvent event(false, false); 146 WaitableEvent event(false, false);
147 std::unique_ptr<Task> blocked_task( 147 std::unique_ptr<Task> blocked_task(
148 new Task(FROM_HERE, Bind(&WaitableEvent::Wait, Unretained(&event)), 148 new Task(FROM_HERE, Bind(&WaitableEvent::Wait, Unretained(&event)),
149 TaskTraits().WithShutdownBehavior(GetParam()))); 149 TaskTraits().WithShutdownBehavior(GetParam()), TimeTicks()));
150 150
151 // Inform |task_tracker_| that |blocked_task| will be posted. 151 // Inform |task_tracker_| that |blocked_task| will be posted.
152 EXPECT_TRUE(tracker_.WillPostTask(blocked_task.get())); 152 EXPECT_TRUE(tracker_.WillPostTask(blocked_task.get()));
153 153
154 // Run the task asynchronouly. 154 // Run the task asynchronouly.
155 ThreadRunningTask thread_running_task(&tracker_, blocked_task.get()); 155 ThreadRunningTask thread_running_task(&tracker_, blocked_task.get());
156 thread_running_task.Start(); 156 thread_running_task.Start();
157 157
158 // Initiate shutdown while the task is running. 158 // Initiate shutdown while the task is running.
159 CallShutdownAsync(); 159 CallShutdownAsync();
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 SkipOnShutdown, 291 SkipOnShutdown,
292 TaskSchedulerTaskTrackerTest, 292 TaskSchedulerTaskTrackerTest,
293 ::testing::Values(TaskShutdownBehavior::SKIP_ON_SHUTDOWN)); 293 ::testing::Values(TaskShutdownBehavior::SKIP_ON_SHUTDOWN));
294 INSTANTIATE_TEST_CASE_P( 294 INSTANTIATE_TEST_CASE_P(
295 BlockShutdown, 295 BlockShutdown,
296 TaskSchedulerTaskTrackerTest, 296 TaskSchedulerTaskTrackerTest,
297 ::testing::Values(TaskShutdownBehavior::BLOCK_SHUTDOWN)); 297 ::testing::Values(TaskShutdownBehavior::BLOCK_SHUTDOWN));
298 298
299 } // namespace internal 299 } // namespace internal
300 } // namespace base 300 } // namespace base
OLDNEW
« no previous file with comments | « base/task_scheduler/task.cc ('k') | base/task_scheduler/utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698