| Index: third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator_unittest.cc
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator_unittest.cc b/third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator_unittest.cc
|
| index 2baaa9d2f167c5ddae805de35c3317cfa0295db6..868d1d3e1aa04f7a29c3877232e16321ae21db8a 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator_unittest.cc
|
| +++ b/third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator_unittest.cc
|
| @@ -3,6 +3,7 @@
|
| // found in the LICENSE file.
|
|
|
| #include "platform/scheduler/base/queueing_time_estimator.h"
|
| +#include "base/logging.h"
|
| #include "platform/scheduler/base/test_time_source.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -29,8 +30,11 @@ class TestQueueingTimeEstimatorClient : public QueueingTimeEstimator::Client {
|
| class QueueingTimeEstimatorForTest : public QueueingTimeEstimator {
|
| public:
|
| QueueingTimeEstimatorForTest(TestQueueingTimeEstimatorClient* client,
|
| - base::TimeDelta window_duration)
|
| - : QueueingTimeEstimator(client, window_duration) {}
|
| + base::TimeDelta window_duration,
|
| + uint window_duration_step_ratio)
|
| + : QueueingTimeEstimator(client,
|
| + window_duration,
|
| + window_duration_step_ratio) {}
|
| };
|
|
|
| // Three tasks of one second each, all within a 5 second window. Expected
|
| @@ -41,7 +45,7 @@ TEST_F(QueueingTimeEstimatorTest, AllTasksWithinWindow) {
|
| base::TimeTicks time;
|
| TestQueueingTimeEstimatorClient client;
|
| QueueingTimeEstimatorForTest estimator(&client,
|
| - base::TimeDelta::FromSeconds(5));
|
| + base::TimeDelta::FromSeconds(5), 1);
|
| for (int i = 0; i < 3; ++i) {
|
| estimator.OnTopLevelTaskStarted(time);
|
| time += base::TimeDelta::FromMilliseconds(1000);
|
| @@ -68,7 +72,7 @@ TEST_F(QueueingTimeEstimatorTest, AllTasksWithinWindow) {
|
| TEST_F(QueueingTimeEstimatorTest, MultiWindowTask) {
|
| TestQueueingTimeEstimatorClient client;
|
| QueueingTimeEstimatorForTest estimator(&client,
|
| - base::TimeDelta::FromSeconds(5));
|
| + base::TimeDelta::FromSeconds(5), 1);
|
| base::TimeTicks time;
|
| time += base::TimeDelta::FromMilliseconds(5000);
|
| estimator.OnTopLevelTaskStarted(time);
|
| @@ -103,7 +107,7 @@ TEST_F(QueueingTimeEstimatorTest,
|
| EstimateQueueingTimeDuringSingleLongTaskIncompleteWindow) {
|
| TestQueueingTimeEstimatorClient client;
|
| QueueingTimeEstimatorForTest estimator(&client,
|
| - base::TimeDelta::FromSeconds(5));
|
| + base::TimeDelta::FromSeconds(5), 1);
|
| base::TimeTicks time;
|
| time += base::TimeDelta::FromMilliseconds(5000);
|
| estimator.OnTopLevelTaskStarted(time);
|
| @@ -128,7 +132,7 @@ TEST_F(QueueingTimeEstimatorTest,
|
| EstimateQueueingTimeDuringSingleLongTaskExceedingWindow) {
|
| TestQueueingTimeEstimatorClient client;
|
| QueueingTimeEstimatorForTest estimator(&client,
|
| - base::TimeDelta::FromSeconds(5));
|
| + base::TimeDelta::FromSeconds(5), 1);
|
| base::TimeTicks time;
|
| time += base::TimeDelta::FromMilliseconds(5000);
|
| estimator.OnTopLevelTaskStarted(time);
|
| @@ -150,7 +154,7 @@ TEST_F(QueueingTimeEstimatorTest,
|
| TEST_F(QueueingTimeEstimatorTest, IgnoresTasksWithNestedMessageLoops) {
|
| TestQueueingTimeEstimatorClient client;
|
| QueueingTimeEstimatorForTest estimator(&client,
|
| - base::TimeDelta::FromSeconds(5));
|
| + base::TimeDelta::FromSeconds(5), 1);
|
| base::TimeTicks time;
|
| time += base::TimeDelta::FromMilliseconds(5000);
|
| estimator.OnTopLevelTaskStarted(time);
|
| @@ -189,7 +193,7 @@ TEST_F(QueueingTimeEstimatorTest, IgnoresTasksWithNestedMessageLoops) {
|
| TEST_F(QueueingTimeEstimatorTest, IgnoreExtremelyLongTasks) {
|
| TestQueueingTimeEstimatorClient client;
|
| QueueingTimeEstimatorForTest estimator(&client,
|
| - base::TimeDelta::FromSeconds(5));
|
| + base::TimeDelta::FromSeconds(5), 1);
|
| // Start with a 1 second task.
|
| base::TimeTicks time;
|
| estimator.OnTopLevelTaskStarted(time);
|
| @@ -223,5 +227,28 @@ TEST_F(QueueingTimeEstimatorTest, IgnoreExtremelyLongTasks) {
|
| base::TimeDelta::FromMilliseconds(100)));
|
| }
|
|
|
| +TEST_F(QueueingTimeEstimatorTest, SlidingWindowOverOneTask) {
|
| + TestQueueingTimeEstimatorClient client;
|
| + QueueingTimeEstimatorForTest estimator(&client,
|
| + base::TimeDelta::FromSeconds(5), 5);
|
| + base::TimeTicks time;
|
| + time += base::TimeDelta::FromMilliseconds(1000);
|
| +
|
| + estimator.OnTopLevelTaskStarted(time);
|
| + time += base::TimeDelta::FromMilliseconds(5000);
|
| + estimator.OnTopLevelTaskCompleted(time);
|
| + time += base::TimeDelta::FromMilliseconds(6000);
|
| + estimator.OnTopLevelTaskStarted(time);
|
| + estimator.OnTopLevelTaskCompleted(time);
|
| +
|
| + EXPECT_THAT(client.expected_queueing_times(),
|
| + testing::ElementsAre(base::TimeDelta::FromMilliseconds(2500),
|
| + base::TimeDelta::FromMilliseconds(1600),
|
| + base::TimeDelta::FromMilliseconds(900),
|
| + base::TimeDelta::FromMilliseconds(400),
|
| + base::TimeDelta::FromMilliseconds(100),
|
| + base::TimeDelta::FromMilliseconds(0)));
|
| +}
|
| +
|
| } // namespace scheduler
|
| } // namespace blink
|
|
|