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

Side by Side Diff: content/renderer/scheduler/renderer_task_queue_selector_unittest.cc

Issue 985813002: Experimental: Remove chromium shared timers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More tests Created 5 years, 9 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/renderer/scheduler/renderer_task_queue_selector.h" 5 #include "content/renderer/scheduler/renderer_task_queue_selector.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "base/pending_task.h" 10 #include "base/pending_task.h"
11 #include "testing/gmock/include/gmock/gmock.h" 11 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 namespace content { 14 namespace content {
15 15
16 class MockTaskQueueSelectorObserver
17 : public TaskQueueSelector::TaskQueueSelectorObserver {
18 public:
19 MockTaskQueueSelectorObserver() {}
20 virtual ~MockTaskQueueSelectorObserver() {}
21
22 MOCK_METHOD0(OnTaskQueueEnabled, void());
23
24 private:
25 DISALLOW_COPY_AND_ASSIGN(MockTaskQueueSelectorObserver);
26 };
27
16 class RendererTaskQueueSelectorTest : public testing::Test { 28 class RendererTaskQueueSelectorTest : public testing::Test {
17 public: 29 public:
18 RendererTaskQueueSelectorTest() 30 RendererTaskQueueSelectorTest()
19 : test_closure_( 31 : test_closure_(
20 base::Bind(&RendererTaskQueueSelectorTest::TestFunction)) {} 32 base::Bind(&RendererTaskQueueSelectorTest::TestFunction)) {}
21 ~RendererTaskQueueSelectorTest() override {} 33 ~RendererTaskQueueSelectorTest() override {}
22 34
23 std::vector<base::PendingTask> GetTasks(int count) { 35 std::vector<base::PendingTask> GetTasks(int count) {
24 std::vector<base::PendingTask> tasks; 36 std::vector<base::PendingTask> tasks;
25 for (int i = 0; i < count; i++) { 37 for (int i = 0; i < count; i++) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 std::vector<base::PendingTask> tasks = GetTasks(5); 109 std::vector<base::PendingTask> tasks = GetTasks(5);
98 size_t queue_order[] = {0, 1, 2, 3, 4}; 110 size_t queue_order[] = {0, 1, 2, 3, 4};
99 PushTasks(tasks, queue_order); 111 PushTasks(tasks, queue_order);
100 selector_.SetQueuePriority(4, RendererTaskQueueSelector::CONTROL_PRIORITY); 112 selector_.SetQueuePriority(4, RendererTaskQueueSelector::CONTROL_PRIORITY);
101 EXPECT_TRUE(selector_.IsQueueEnabled(4)); 113 EXPECT_TRUE(selector_.IsQueueEnabled(4));
102 selector_.SetQueuePriority(2, RendererTaskQueueSelector::HIGH_PRIORITY); 114 selector_.SetQueuePriority(2, RendererTaskQueueSelector::HIGH_PRIORITY);
103 EXPECT_TRUE(selector_.IsQueueEnabled(2)); 115 EXPECT_TRUE(selector_.IsQueueEnabled(2));
104 EXPECT_THAT(PopTasks(), testing::ElementsAre(4, 2, 0, 1, 3)); 116 EXPECT_THAT(PopTasks(), testing::ElementsAre(4, 2, 0, 1, 3));
105 } 117 }
106 118
119 TEST_F(RendererTaskQueueSelectorTest, TestDisableReturnsTrueIfQueueWasEnabled) {
120 selector_.EnableQueue(1, RendererTaskQueueSelector::NORMAL_PRIORITY);
121 EXPECT_TRUE(selector_.DisableQueue(1));
122 }
123
124 TEST_F(RendererTaskQueueSelectorTest,
125 TestDisableReturnsFalseIfQueueWasAlreadyDisabled) {
126 selector_.DisableQueue(1);
127 EXPECT_FALSE(selector_.DisableQueue(1));
128 }
129
107 TEST_F(RendererTaskQueueSelectorTest, TestDisableEnable) { 130 TEST_F(RendererTaskQueueSelectorTest, TestDisableEnable) {
131 MockTaskQueueSelectorObserver mock_observer;
132 selector_.RegisterTaskQueueObserver(&mock_observer);
133
108 std::vector<base::PendingTask> tasks = GetTasks(5); 134 std::vector<base::PendingTask> tasks = GetTasks(5);
109 size_t queue_order[] = {0, 1, 2, 3, 4}; 135 size_t queue_order[] = {0, 1, 2, 3, 4};
110 PushTasks(tasks, queue_order); 136 PushTasks(tasks, queue_order);
111 selector_.DisableQueue(2); 137 selector_.DisableQueue(2);
112 EXPECT_FALSE(selector_.IsQueueEnabled(2)); 138 EXPECT_FALSE(selector_.IsQueueEnabled(2));
113 selector_.DisableQueue(4); 139 selector_.DisableQueue(4);
114 EXPECT_FALSE(selector_.IsQueueEnabled(4)); 140 EXPECT_FALSE(selector_.IsQueueEnabled(4));
115 EXPECT_THAT(PopTasks(), testing::ElementsAre(0, 1, 3)); 141 EXPECT_THAT(PopTasks(), testing::ElementsAre(0, 1, 3));
142
143 EXPECT_CALL(mock_observer, OnTaskQueueEnabled()).Times(2);
116 selector_.EnableQueue(2, RendererTaskQueueSelector::BEST_EFFORT_PRIORITY); 144 selector_.EnableQueue(2, RendererTaskQueueSelector::BEST_EFFORT_PRIORITY);
117 EXPECT_THAT(PopTasks(), testing::ElementsAre(2)); 145 EXPECT_THAT(PopTasks(), testing::ElementsAre(2));
118 selector_.EnableQueue(4, RendererTaskQueueSelector::NORMAL_PRIORITY); 146 selector_.EnableQueue(4, RendererTaskQueueSelector::NORMAL_PRIORITY);
119 EXPECT_THAT(PopTasks(), testing::ElementsAre(4)); 147 EXPECT_THAT(PopTasks(), testing::ElementsAre(4));
120 } 148 }
121 149
122 TEST_F(RendererTaskQueueSelectorTest, TestEmptyQueues) { 150 TEST_F(RendererTaskQueueSelectorTest, TestEmptyQueues) {
123 size_t chosen_queue_index = 0; 151 size_t chosen_queue_index = 0;
124 EXPECT_FALSE(selector_.SelectWorkQueueToService(&chosen_queue_index)); 152 EXPECT_FALSE(selector_.SelectWorkQueueToService(&chosen_queue_index));
125 153
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 } 227 }
200 selector_.SetQueuePriority(1, RendererTaskQueueSelector::CONTROL_PRIORITY); 228 selector_.SetQueuePriority(1, RendererTaskQueueSelector::CONTROL_PRIORITY);
201 for (int i = 0; i < 100; i++) { 229 for (int i = 0; i < 100; i++) {
202 EXPECT_TRUE(selector_.SelectWorkQueueToService(&chosen_queue_index)); 230 EXPECT_TRUE(selector_.SelectWorkQueueToService(&chosen_queue_index));
203 EXPECT_EQ(1ul, chosen_queue_index); 231 EXPECT_EQ(1ul, chosen_queue_index);
204 // Don't remove task from queue to simulate all queues still being full. 232 // Don't remove task from queue to simulate all queues still being full.
205 } 233 }
206 } 234 }
207 235
208 } // namespace content 236 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/scheduler/renderer_task_queue_selector.cc ('k') | content/renderer/scheduler/task_queue_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698