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

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

Issue 2427963002: Support FileDescriptorWatcher in TaskScheduler. (Closed)
Patch Set: nacl Created 4 years, 2 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_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/message_loop/message_loop.h"
10 #include "base/task_scheduler/scheduler_worker.h" 11 #include "base/task_scheduler/scheduler_worker.h"
11 #include "base/task_scheduler/sequence.h" 12 #include "base/task_scheduler/sequence.h"
12 #include "base/task_scheduler/task_tracker.h" 13 #include "base/task_scheduler/task_tracker.h"
13 #include "base/test/gtest_util.h" 14 #include "base/test/gtest_util.h"
14 #include "base/threading/platform_thread.h" 15 #include "base/threading/platform_thread.h"
15 #include "base/time/time.h" 16 #include "base/time/time.h"
17 #include "build/build_config.h"
16 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
17 19
18 namespace base { 20 namespace base {
19 namespace internal { 21 namespace internal {
20 22
21 namespace { 23 namespace {
22 24
23 class MockSchedulerWorkerDelegate : public SchedulerWorker::Delegate { 25 class MockSchedulerWorkerDelegate : public SchedulerWorker::Delegate {
24 public: 26 public:
25 void OnMainEntry(SchedulerWorker* worker, 27 void OnMainEntry(SchedulerWorker* worker,
(...skipping 11 matching lines...) Expand all
37 TimeDelta GetSleepTimeout() override { 39 TimeDelta GetSleepTimeout() override {
38 return TimeDelta::Max(); 40 return TimeDelta::Max();
39 } 41 }
40 bool CanDetach(SchedulerWorker* worker) override { 42 bool CanDetach(SchedulerWorker* worker) override {
41 return false; 43 return false;
42 } 44 }
43 }; 45 };
44 46
45 class TaskSchedulerWorkerStackTest : public testing::Test { 47 class TaskSchedulerWorkerStackTest : public testing::Test {
46 protected: 48 protected:
49 TaskSchedulerWorkerStackTest()
50 #if defined(OS_POSIX) && !defined(OS_NACL_SFI)
51 : task_tracker_(&watch_file_descriptor_message_loop_)
52 #endif
53 {
54 }
55
47 void SetUp() override { 56 void SetUp() override {
48 worker_a_ = SchedulerWorker::Create( 57 worker_a_ = SchedulerWorker::Create(
49 ThreadPriority::NORMAL, 58 ThreadPriority::NORMAL,
50 WrapUnique(new MockSchedulerWorkerDelegate), &task_tracker_, 59 WrapUnique(new MockSchedulerWorkerDelegate), &task_tracker_,
51 SchedulerWorker::InitialState::ALIVE); 60 SchedulerWorker::InitialState::ALIVE);
52 ASSERT_TRUE(worker_a_); 61 ASSERT_TRUE(worker_a_);
53 worker_b_ = SchedulerWorker::Create( 62 worker_b_ = SchedulerWorker::Create(
54 ThreadPriority::NORMAL, 63 ThreadPriority::NORMAL,
55 WrapUnique(new MockSchedulerWorkerDelegate), &task_tracker_, 64 WrapUnique(new MockSchedulerWorkerDelegate), &task_tracker_,
56 SchedulerWorker::InitialState::ALIVE); 65 SchedulerWorker::InitialState::ALIVE);
57 ASSERT_TRUE(worker_b_); 66 ASSERT_TRUE(worker_b_);
58 worker_c_ = SchedulerWorker::Create( 67 worker_c_ = SchedulerWorker::Create(
59 ThreadPriority::NORMAL, 68 ThreadPriority::NORMAL,
60 WrapUnique(new MockSchedulerWorkerDelegate), &task_tracker_, 69 WrapUnique(new MockSchedulerWorkerDelegate), &task_tracker_,
61 SchedulerWorker::InitialState::ALIVE); 70 SchedulerWorker::InitialState::ALIVE);
62 ASSERT_TRUE(worker_c_); 71 ASSERT_TRUE(worker_c_);
63 } 72 }
64 73
65 void TearDown() override { 74 void TearDown() override {
66 worker_a_->JoinForTesting(); 75 worker_a_->JoinForTesting();
67 worker_b_->JoinForTesting(); 76 worker_b_->JoinForTesting();
68 worker_c_->JoinForTesting(); 77 worker_c_->JoinForTesting();
69 } 78 }
70 79
71 std::unique_ptr<SchedulerWorker> worker_a_; 80 std::unique_ptr<SchedulerWorker> worker_a_;
72 std::unique_ptr<SchedulerWorker> worker_b_; 81 std::unique_ptr<SchedulerWorker> worker_b_;
73 std::unique_ptr<SchedulerWorker> worker_c_; 82 std::unique_ptr<SchedulerWorker> worker_c_;
74 83
75 private: 84 private:
85 #if defined(OS_POSIX) && !defined(OS_NACL_SFI)
86 MessageLoopForIO watch_file_descriptor_message_loop_;
87 #endif
76 TaskTracker task_tracker_; 88 TaskTracker task_tracker_;
89
90 DISALLOW_COPY_AND_ASSIGN(TaskSchedulerWorkerStackTest);
77 }; 91 };
78 92
79 } // namespace 93 } // namespace
80 94
81 // Verify that Push() and Pop() add/remove values in FIFO order. 95 // Verify that Push() and Pop() add/remove values in FIFO order.
82 TEST_F(TaskSchedulerWorkerStackTest, PushPop) { 96 TEST_F(TaskSchedulerWorkerStackTest, PushPop) {
83 SchedulerWorkerStack stack; 97 SchedulerWorkerStack stack;
84 EXPECT_EQ(nullptr, stack.Pop()); 98 EXPECT_EQ(nullptr, stack.Pop());
85 99
86 EXPECT_TRUE(stack.IsEmpty()); 100 EXPECT_TRUE(stack.IsEmpty());
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 265
252 // Verify that Push() DCHECKs when a value is inserted twice. 266 // Verify that Push() DCHECKs when a value is inserted twice.
253 TEST_F(TaskSchedulerWorkerStackTest, PushTwice) { 267 TEST_F(TaskSchedulerWorkerStackTest, PushTwice) {
254 SchedulerWorkerStack stack; 268 SchedulerWorkerStack stack;
255 stack.Push(worker_a_.get()); 269 stack.Push(worker_a_.get());
256 EXPECT_DCHECK_DEATH({ stack.Push(worker_a_.get()); }); 270 EXPECT_DCHECK_DEATH({ stack.Push(worker_a_.get()); });
257 } 271 }
258 272
259 } // namespace internal 273 } // namespace internal
260 } // namespace base 274 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698