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

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

Issue 2967013002: Be explicit about namespace testing to not mix it with blink::testing (Closed)
Patch Set: Dropped mojo parts that need another review. Created 3 years, 5 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 "platform/scheduler/base/queueing_time_estimator.h" 5 #include "platform/scheduler/base/queueing_time_estimator.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "platform/scheduler/base/test_time_source.h" 7 #include "platform/scheduler/base/test_time_source.h"
8 #include "testing/gmock/include/gmock/gmock.h" 8 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
11 namespace blink { 11 namespace blink {
12 namespace scheduler { 12 namespace scheduler {
13 13
14 using QueueingTimeEstimatorTest = testing::Test; 14 using QueueingTimeEstimatorTest = ::testing::Test;
15 15
16 class TestQueueingTimeEstimatorClient : public QueueingTimeEstimator::Client { 16 class TestQueueingTimeEstimatorClient : public QueueingTimeEstimator::Client {
17 public: 17 public:
18 void OnQueueingTimeForWindowEstimated( 18 void OnQueueingTimeForWindowEstimated(
19 base::TimeDelta queueing_time, 19 base::TimeDelta queueing_time,
20 base::TimeTicks window_start_time) override { 20 base::TimeTicks window_start_time) override {
21 expected_queueing_times_.push_back(queueing_time); 21 expected_queueing_times_.push_back(queueing_time);
22 } 22 }
23 const std::vector<base::TimeDelta>& expected_queueing_times() { 23 const std::vector<base::TimeDelta>& expected_queueing_times() {
24 return expected_queueing_times_; 24 return expected_queueing_times_;
(...skipping 26 matching lines...) Expand all
51 estimator.OnTopLevelTaskCompleted(time); 51 estimator.OnTopLevelTaskCompleted(time);
52 } 52 }
53 53
54 // Flush the data by adding a task in the next window. 54 // Flush the data by adding a task in the next window.
55 time += base::TimeDelta::FromMilliseconds(5000); 55 time += base::TimeDelta::FromMilliseconds(5000);
56 estimator.OnTopLevelTaskStarted(time); 56 estimator.OnTopLevelTaskStarted(time);
57 time += base::TimeDelta::FromMilliseconds(500); 57 time += base::TimeDelta::FromMilliseconds(500);
58 estimator.OnTopLevelTaskCompleted(time); 58 estimator.OnTopLevelTaskCompleted(time);
59 59
60 EXPECT_THAT(client.expected_queueing_times(), 60 EXPECT_THAT(client.expected_queueing_times(),
61 testing::ElementsAre(base::TimeDelta::FromMilliseconds(300))); 61 ::testing::ElementsAre(base::TimeDelta::FromMilliseconds(300)));
62 } 62 }
63 63
64 // One 20 second long task, starting 3 seconds into the first window. 64 // One 20 second long task, starting 3 seconds into the first window.
65 // Window 1: Probability of being within task = 2/5. Expected delay within task: 65 // Window 1: Probability of being within task = 2/5. Expected delay within task:
66 // avg(20, 18). Total expected queueing time = 7.6s. 66 // avg(20, 18). Total expected queueing time = 7.6s.
67 // Window 2: Probability of being within task = 1. Expected delay within task: 67 // Window 2: Probability of being within task = 1. Expected delay within task:
68 // avg(18, 13). Total expected queueing time = 15.5s. 68 // avg(18, 13). Total expected queueing time = 15.5s.
69 // Window 5: Probability of being within task = 3/5. Expected delay within task: 69 // Window 5: Probability of being within task = 3/5. Expected delay within task:
70 // avg(3, 0). Total expected queueing time = 0.9s. 70 // avg(3, 0). Total expected queueing time = 0.9s.
71 TEST_F(QueueingTimeEstimatorTest, MultiWindowTask) { 71 TEST_F(QueueingTimeEstimatorTest, MultiWindowTask) {
(...skipping 11 matching lines...) Expand all
83 time += base::TimeDelta::FromMilliseconds(20000); 83 time += base::TimeDelta::FromMilliseconds(20000);
84 estimator.OnTopLevelTaskCompleted(time); 84 estimator.OnTopLevelTaskCompleted(time);
85 85
86 // Flush the data by adding a task in the next window. 86 // Flush the data by adding a task in the next window.
87 time += base::TimeDelta::FromMilliseconds(5000); 87 time += base::TimeDelta::FromMilliseconds(5000);
88 estimator.OnTopLevelTaskStarted(time); 88 estimator.OnTopLevelTaskStarted(time);
89 time += base::TimeDelta::FromMilliseconds(500); 89 time += base::TimeDelta::FromMilliseconds(500);
90 estimator.OnTopLevelTaskCompleted(time); 90 estimator.OnTopLevelTaskCompleted(time);
91 91
92 EXPECT_THAT(client.expected_queueing_times(), 92 EXPECT_THAT(client.expected_queueing_times(),
93 testing::ElementsAre(base::TimeDelta::FromMilliseconds(7600), 93 ::testing::ElementsAre(base::TimeDelta::FromMilliseconds(7600),
94 base::TimeDelta::FromMilliseconds(15500), 94 base::TimeDelta::FromMilliseconds(15500),
95 base::TimeDelta::FromMilliseconds(10500), 95 base::TimeDelta::FromMilliseconds(10500),
96 base::TimeDelta::FromMilliseconds(5500), 96 base::TimeDelta::FromMilliseconds(5500),
97 base::TimeDelta::FromMilliseconds(900))); 97 base::TimeDelta::FromMilliseconds(900)));
98 } 98 }
99 99
100 // The main thread is considered unresponsive during a single long task. In this 100 // The main thread is considered unresponsive during a single long task. In this
101 // case, the single long task is 3 seconds long. 101 // case, the single long task is 3 seconds long.
102 // Probability of being with the task = 3/5. Expected delay within task: 102 // Probability of being with the task = 3/5. Expected delay within task:
103 // avg(0, 3). Total expected queueing time = 3/5 * 3/2 = 0.9s. 103 // avg(0, 3). Total expected queueing time = 3/5 * 3/2 = 0.9s.
104 // In this example, the queueing time comes from the current, incomplete window. 104 // In this example, the queueing time comes from the current, incomplete window.
105 TEST_F(QueueingTimeEstimatorTest, 105 TEST_F(QueueingTimeEstimatorTest,
106 EstimateQueueingTimeDuringSingleLongTaskIncompleteWindow) { 106 EstimateQueueingTimeDuringSingleLongTaskIncompleteWindow) {
107 TestQueueingTimeEstimatorClient client; 107 TestQueueingTimeEstimatorClient client;
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 time += base::TimeDelta::FromMilliseconds(1000); 246 time += base::TimeDelta::FromMilliseconds(1000);
247 estimator.OnTopLevelTaskCompleted(time); 247 estimator.OnTopLevelTaskCompleted(time);
248 248
249 // Flush the data by adding a task in the next window. 249 // Flush the data by adding a task in the next window.
250 time += base::TimeDelta::FromMilliseconds(5000); 250 time += base::TimeDelta::FromMilliseconds(5000);
251 estimator.OnTopLevelTaskStarted(time); 251 estimator.OnTopLevelTaskStarted(time);
252 time += base::TimeDelta::FromMilliseconds(500); 252 time += base::TimeDelta::FromMilliseconds(500);
253 estimator.OnTopLevelTaskCompleted(time); 253 estimator.OnTopLevelTaskCompleted(time);
254 254
255 EXPECT_THAT(client.expected_queueing_times(), 255 EXPECT_THAT(client.expected_queueing_times(),
256 testing::ElementsAre(base::TimeDelta::FromMilliseconds(0), 256 ::testing::ElementsAre(base::TimeDelta::FromMilliseconds(0),
257 base::TimeDelta::FromMilliseconds(0), 257 base::TimeDelta::FromMilliseconds(0),
258 base::TimeDelta::FromMilliseconds(0), 258 base::TimeDelta::FromMilliseconds(0),
259 base::TimeDelta::FromMilliseconds(0), 259 base::TimeDelta::FromMilliseconds(0),
260 base::TimeDelta::FromMilliseconds(100))); 260 base::TimeDelta::FromMilliseconds(100)));
261 } 261 }
262 262
263 // If a task is too long, we assume it's invalid. Perhaps the user's machine 263 // If a task is too long, we assume it's invalid. Perhaps the user's machine
264 // went to sleep during a task, resulting in an extremely long task. Ignore 264 // went to sleep during a task, resulting in an extremely long task. Ignore
265 // these long tasks completely. 265 // these long tasks completely.
266 TEST_F(QueueingTimeEstimatorTest, IgnoreExtremelyLongTasks) { 266 TEST_F(QueueingTimeEstimatorTest, IgnoreExtremelyLongTasks) {
267 TestQueueingTimeEstimatorClient client; 267 TestQueueingTimeEstimatorClient client;
268 QueueingTimeEstimatorForTest estimator(&client, 268 QueueingTimeEstimatorForTest estimator(&client,
269 base::TimeDelta::FromSeconds(5), 1); 269 base::TimeDelta::FromSeconds(5), 1);
270 // Start with a 1 second task. 270 // Start with a 1 second task.
(...skipping 12 matching lines...) Expand all
283 time += base::TimeDelta::FromMilliseconds(1000); 283 time += base::TimeDelta::FromMilliseconds(1000);
284 estimator.OnTopLevelTaskCompleted(time); 284 estimator.OnTopLevelTaskCompleted(time);
285 285
286 // Flush the data by adding a task in the next window. 286 // Flush the data by adding a task in the next window.
287 time += base::TimeDelta::FromMilliseconds(5000); 287 time += base::TimeDelta::FromMilliseconds(5000);
288 estimator.OnTopLevelTaskStarted(time); 288 estimator.OnTopLevelTaskStarted(time);
289 time += base::TimeDelta::FromMilliseconds(500); 289 time += base::TimeDelta::FromMilliseconds(500);
290 estimator.OnTopLevelTaskCompleted(time); 290 estimator.OnTopLevelTaskCompleted(time);
291 291
292 EXPECT_THAT(client.expected_queueing_times(), 292 EXPECT_THAT(client.expected_queueing_times(),
293 testing::ElementsAre(base::TimeDelta::FromMilliseconds(100), 293 ::testing::ElementsAre(base::TimeDelta::FromMilliseconds(100),
294 base::TimeDelta::FromMilliseconds(0), 294 base::TimeDelta::FromMilliseconds(0),
295 base::TimeDelta::FromMilliseconds(0), 295 base::TimeDelta::FromMilliseconds(0),
296 base::TimeDelta::FromMilliseconds(0), 296 base::TimeDelta::FromMilliseconds(0),
297 base::TimeDelta::FromMilliseconds(0), 297 base::TimeDelta::FromMilliseconds(0),
298 base::TimeDelta::FromMilliseconds(0), 298 base::TimeDelta::FromMilliseconds(0),
299 base::TimeDelta::FromMilliseconds(0), 299 base::TimeDelta::FromMilliseconds(0),
300 base::TimeDelta::FromMilliseconds(100))); 300 base::TimeDelta::FromMilliseconds(100)));
301 } 301 }
302 302
303 // ^ Instantaneous queuing time 303 // ^ Instantaneous queuing time
304 // | 304 // |
305 // | 305 // |
306 // | |\ . 306 // | |\ .
307 // | | \ . 307 // | | \ .
308 // | | \ . 308 // | | \ .
309 // | | \ . 309 // | | \ .
310 // | | \ | . 310 // | | \ | .
(...skipping 12 matching lines...) Expand all
323 estimator.OnTopLevelTaskStarted(time); 323 estimator.OnTopLevelTaskStarted(time);
324 time += base::TimeDelta::FromMilliseconds(5000); 324 time += base::TimeDelta::FromMilliseconds(5000);
325 estimator.OnTopLevelTaskCompleted(time); 325 estimator.OnTopLevelTaskCompleted(time);
326 326
327 time += base::TimeDelta::FromMilliseconds(6000); 327 time += base::TimeDelta::FromMilliseconds(6000);
328 328
329 estimator.OnTopLevelTaskStarted(time); 329 estimator.OnTopLevelTaskStarted(time);
330 estimator.OnTopLevelTaskCompleted(time); 330 estimator.OnTopLevelTaskCompleted(time);
331 331
332 EXPECT_THAT(client.expected_queueing_times(), 332 EXPECT_THAT(client.expected_queueing_times(),
333 testing::ElementsAre(base::TimeDelta::FromMilliseconds(900), 333 ::testing::ElementsAre(base::TimeDelta::FromMilliseconds(900),
334 base::TimeDelta::FromMilliseconds(1600), 334 base::TimeDelta::FromMilliseconds(1600),
335 base::TimeDelta::FromMilliseconds(2100), 335 base::TimeDelta::FromMilliseconds(2100),
336 base::TimeDelta::FromMilliseconds(2400), 336 base::TimeDelta::FromMilliseconds(2400),
337 base::TimeDelta::FromMilliseconds(2500), 337 base::TimeDelta::FromMilliseconds(2500),
338 base::TimeDelta::FromMilliseconds(1600), 338 base::TimeDelta::FromMilliseconds(1600),
339 base::TimeDelta::FromMilliseconds(900), 339 base::TimeDelta::FromMilliseconds(900),
340 base::TimeDelta::FromMilliseconds(400), 340 base::TimeDelta::FromMilliseconds(400),
341 base::TimeDelta::FromMilliseconds(100), 341 base::TimeDelta::FromMilliseconds(100),
342 base::TimeDelta::FromMilliseconds(0))); 342 base::TimeDelta::FromMilliseconds(0)));
343 } 343 }
344 344
345 // ^ Instantaneous queuing time 345 // ^ Instantaneous queuing time
346 // | 346 // |
347 // | 347 // |
348 // | |\ . 348 // | |\ .
349 // | | \ . 349 // | | \ .
350 // | | \ . 350 // | | \ .
351 // | | \ |\ . 351 // | | \ |\ .
352 // | | \ | \ | . 352 // | | \ | \ | .
(...skipping 28 matching lines...) Expand all
381 base::TimeDelta::FromMilliseconds(400), 381 base::TimeDelta::FromMilliseconds(400),
382 base::TimeDelta::FromMilliseconds(600), 382 base::TimeDelta::FromMilliseconds(600),
383 base::TimeDelta::FromMilliseconds(625), 383 base::TimeDelta::FromMilliseconds(625),
384 base::TimeDelta::FromMilliseconds(725), 384 base::TimeDelta::FromMilliseconds(725),
385 base::TimeDelta::FromMilliseconds(725), 385 base::TimeDelta::FromMilliseconds(725),
386 base::TimeDelta::FromMilliseconds(325), 386 base::TimeDelta::FromMilliseconds(325),
387 base::TimeDelta::FromMilliseconds(125), 387 base::TimeDelta::FromMilliseconds(125),
388 base::TimeDelta::FromMilliseconds(100), 388 base::TimeDelta::FromMilliseconds(100),
389 base::TimeDelta::FromMilliseconds(0)}; 389 base::TimeDelta::FromMilliseconds(0)};
390 EXPECT_THAT(client.expected_queueing_times(), 390 EXPECT_THAT(client.expected_queueing_times(),
391 testing::ElementsAreArray(expected_durations)); 391 ::testing::ElementsAreArray(expected_durations));
392 } 392 }
393 393
394 // ^ Instantaneous queuing time 394 // ^ Instantaneous queuing time
395 // | 395 // |
396 // | 396 // |
397 // | |\ . 397 // | |\ .
398 // | | \ . 398 // | | \ .
399 // | | \ . 399 // | | \ .
400 // | | \ |\ . 400 // | | \ |\ .
401 // | | \| \ | . 401 // | | \| \ | .
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 base::TimeDelta::FromMilliseconds(600), 438 base::TimeDelta::FromMilliseconds(600),
439 base::TimeDelta::FromMilliseconds(700), 439 base::TimeDelta::FromMilliseconds(700),
440 base::TimeDelta::FromMilliseconds(725), 440 base::TimeDelta::FromMilliseconds(725),
441 base::TimeDelta::FromMilliseconds(725), 441 base::TimeDelta::FromMilliseconds(725),
442 base::TimeDelta::FromMilliseconds(325), 442 base::TimeDelta::FromMilliseconds(325),
443 base::TimeDelta::FromMilliseconds(125), 443 base::TimeDelta::FromMilliseconds(125),
444 base::TimeDelta::FromMilliseconds(25), 444 base::TimeDelta::FromMilliseconds(25),
445 base::TimeDelta::FromMilliseconds(0)}; 445 base::TimeDelta::FromMilliseconds(0)};
446 446
447 EXPECT_THAT(client.expected_queueing_times(), 447 EXPECT_THAT(client.expected_queueing_times(),
448 testing::ElementsAreArray(expected_durations)); 448 ::testing::ElementsAreArray(expected_durations));
449 } 449 }
450 450
451 } // namespace scheduler 451 } // namespace scheduler
452 } // namespace blink 452 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698