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

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/base/work_queue_unittest.cc

Issue 2319053004: [Reland] Make canceling Timers fast. (Closed)
Patch Set: Rebased Created 4 years, 3 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "platform/scheduler/base/work_queue.h" 5 #include "platform/scheduler/base/work_queue.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/bind.h"
9 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
10 #include "platform/scheduler/base/real_time_domain.h" 11 #include "platform/scheduler/base/real_time_domain.h"
11 #include "platform/scheduler/base/task_queue_impl.h" 12 #include "platform/scheduler/base/task_queue_impl.h"
12 #include "platform/scheduler/base/work_queue_sets.h" 13 #include "platform/scheduler/base/work_queue_sets.h"
13 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
14 15
15 namespace blink { 16 namespace blink {
16 namespace scheduler { 17 namespace scheduler {
17 namespace internal { 18 namespace internal {
19 namespace {
20 void NopTask() {}
21 }
18 22
19 class WorkQueueTest : public testing::Test { 23 class WorkQueueTest : public testing::Test {
20 public: 24 public:
21 void SetUp() override { 25 void SetUp() override {
22 time_domain_.reset(new RealTimeDomain("")); 26 time_domain_.reset(new RealTimeDomain(""));
23 task_queue_ = make_scoped_refptr(new TaskQueueImpl( 27 task_queue_ = make_scoped_refptr(new TaskQueueImpl(
24 nullptr, time_domain_.get(), TaskQueue::Spec("fake"), "", "")); 28 nullptr, time_domain_.get(), TaskQueue::Spec("fake"), "", ""));
25 29
26 work_queue_.reset( 30 work_queue_.reset(new WorkQueue(task_queue_.get(), "test"));
27 new WorkQueue(task_queue_.get(), "test",
28 TaskQueueImpl::Task::EnqueueOrderComparatorFn));
29 work_queue_sets_.reset(new WorkQueueSets(1, "test")); 31 work_queue_sets_.reset(new WorkQueueSets(1, "test"));
30 work_queue_sets_->AddQueue(work_queue_.get(), 0); 32 work_queue_sets_->AddQueue(work_queue_.get(), 0);
31 33
32 incoming_queue_.reset(new TaskQueueImpl::ComparatorQueue( 34 incoming_queue_.reset(new std::queue<TaskQueueImpl::Task>());
33 TaskQueueImpl::Task::EnqueueOrderComparatorFn));
34 } 35 }
35 36
36 void TearDown() override { work_queue_sets_->RemoveQueue(work_queue_.get()); } 37 void TearDown() override { work_queue_sets_->RemoveQueue(work_queue_.get()); }
37 38
38 protected: 39 protected:
39 TaskQueueImpl::Task FakeTaskWithEnqueueOrder(int enqueue_order) { 40 TaskQueueImpl::Task FakeTaskWithEnqueueOrder(int enqueue_order) {
40 TaskQueueImpl::Task fake_task(FROM_HERE, base::Closure(), base::TimeTicks(), 41 TaskQueueImpl::Task fake_task(FROM_HERE, base::Bind(&NopTask),
41 0, true); 42 base::TimeTicks(), 0, true);
42 fake_task.set_enqueue_order(enqueue_order); 43 fake_task.set_enqueue_order(enqueue_order);
43 return fake_task; 44 return fake_task;
44 } 45 }
45 46
46 std::unique_ptr<RealTimeDomain> time_domain_; 47 std::unique_ptr<RealTimeDomain> time_domain_;
47 scoped_refptr<TaskQueueImpl> task_queue_; 48 scoped_refptr<TaskQueueImpl> task_queue_;
48 std::unique_ptr<WorkQueue> work_queue_; 49 std::unique_ptr<WorkQueue> work_queue_;
49 std::unique_ptr<WorkQueueSets> work_queue_sets_; 50 std::unique_ptr<WorkQueueSets> work_queue_sets_;
50 std::unique_ptr<TaskQueueImpl::ComparatorQueue> incoming_queue_; 51 std::unique_ptr<std::queue<TaskQueueImpl::Task>> incoming_queue_;
51 }; 52 };
52 53
53 TEST_F(WorkQueueTest, Empty) { 54 TEST_F(WorkQueueTest, Empty) {
54 EXPECT_TRUE(work_queue_->Empty()); 55 EXPECT_TRUE(work_queue_->Empty());
55 work_queue_->Push(FakeTaskWithEnqueueOrder(1)); 56 work_queue_->Push(FakeTaskWithEnqueueOrder(1));
56 EXPECT_FALSE(work_queue_->Empty()); 57 EXPECT_FALSE(work_queue_->Empty());
57 } 58 }
58 59
59 TEST_F(WorkQueueTest, Empty_IgnoresFences) { 60 TEST_F(WorkQueueTest, Empty_IgnoresFences) {
60 work_queue_->Push(FakeTaskWithEnqueueOrder(1)); 61 work_queue_->Push(FakeTaskWithEnqueueOrder(1));
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 TEST_F(WorkQueueTest, PushAfterFenceHit) { 116 TEST_F(WorkQueueTest, PushAfterFenceHit) {
116 work_queue_->InsertFence(1); 117 work_queue_->InsertFence(1);
117 WorkQueue* work_queue; 118 WorkQueue* work_queue;
118 EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue)); 119 EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
119 120
120 work_queue_->Push(FakeTaskWithEnqueueOrder(2)); 121 work_queue_->Push(FakeTaskWithEnqueueOrder(2));
121 EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue)); 122 EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
122 } 123 }
123 124
124 TEST_F(WorkQueueTest, SwapLocked) { 125 TEST_F(WorkQueueTest, SwapLocked) {
125 incoming_queue_->insert(FakeTaskWithEnqueueOrder(2)); 126 incoming_queue_->push(FakeTaskWithEnqueueOrder(2));
126 incoming_queue_->insert(FakeTaskWithEnqueueOrder(3)); 127 incoming_queue_->push(FakeTaskWithEnqueueOrder(3));
127 incoming_queue_->insert(FakeTaskWithEnqueueOrder(4)); 128 incoming_queue_->push(FakeTaskWithEnqueueOrder(4));
128 129
129 WorkQueue* work_queue; 130 WorkQueue* work_queue;
130 EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue)); 131 EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
131 EXPECT_TRUE(work_queue_->Empty()); 132 EXPECT_TRUE(work_queue_->Empty());
132 work_queue_->SwapLocked(*incoming_queue_.get()); 133 work_queue_->SwapLocked(*incoming_queue_.get());
133 134
134 EXPECT_TRUE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue)); 135 EXPECT_TRUE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
135 EXPECT_FALSE(work_queue_->Empty()); 136 EXPECT_FALSE(work_queue_->Empty());
136 EXPECT_TRUE(incoming_queue_->empty()); 137 EXPECT_TRUE(incoming_queue_->empty());
137 138
138 ASSERT_NE(nullptr, work_queue_->GetFrontTask()); 139 ASSERT_NE(nullptr, work_queue_->GetFrontTask());
139 EXPECT_EQ(2ull, work_queue_->GetFrontTask()->enqueue_order()); 140 EXPECT_EQ(2ull, work_queue_->GetFrontTask()->enqueue_order());
140 141
141 ASSERT_NE(nullptr, work_queue_->GetBackTask()); 142 ASSERT_NE(nullptr, work_queue_->GetBackTask());
142 EXPECT_EQ(4ull, work_queue_->GetBackTask()->enqueue_order()); 143 EXPECT_EQ(4ull, work_queue_->GetBackTask()->enqueue_order());
143 } 144 }
144 145
145 TEST_F(WorkQueueTest, SwapLockedAfterFenceHit) { 146 TEST_F(WorkQueueTest, SwapLockedAfterFenceHit) {
146 work_queue_->InsertFence(1); 147 work_queue_->InsertFence(1);
147 incoming_queue_->insert(FakeTaskWithEnqueueOrder(2)); 148 incoming_queue_->push(FakeTaskWithEnqueueOrder(2));
148 incoming_queue_->insert(FakeTaskWithEnqueueOrder(3)); 149 incoming_queue_->push(FakeTaskWithEnqueueOrder(3));
149 incoming_queue_->insert(FakeTaskWithEnqueueOrder(4)); 150 incoming_queue_->push(FakeTaskWithEnqueueOrder(4));
150 151
151 WorkQueue* work_queue; 152 WorkQueue* work_queue;
152 EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue)); 153 EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
153 EXPECT_TRUE(work_queue_->Empty()); 154 EXPECT_TRUE(work_queue_->Empty());
154 work_queue_->SwapLocked(*incoming_queue_.get()); 155 work_queue_->SwapLocked(*incoming_queue_.get());
155 156
156 EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue)); 157 EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
157 EXPECT_FALSE(work_queue_->Empty()); 158 EXPECT_FALSE(work_queue_->Empty());
158 EXPECT_TRUE(incoming_queue_->empty()); 159 EXPECT_TRUE(incoming_queue_->empty());
159 160
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 EXPECT_EQ(1ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order()); 354 EXPECT_EQ(1ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
354 EXPECT_TRUE(work_queue_->BlockedByFence()); 355 EXPECT_TRUE(work_queue_->BlockedByFence());
355 356
356 EXPECT_TRUE(work_queue_->InsertFence(4)); 357 EXPECT_TRUE(work_queue_->InsertFence(4));
357 EXPECT_FALSE(work_queue_->BlockedByFence()); 358 EXPECT_FALSE(work_queue_->BlockedByFence());
358 } 359 }
359 360
360 } // namespace internal 361 } // namespace internal
361 } // namespace scheduler 362 } // namespace scheduler
362 } // namespace blink 363 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698