OLD | NEW |
(Empty) | |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "cc/scheduler/rolling_time_delta_history.h" |
| 6 #include "testing/gtest/include/gtest/gtest.h" |
| 7 |
| 8 namespace cc { |
| 9 namespace { |
| 10 |
| 11 TEST(RollingTimeDeltaHistoryTest, EmptyHistory) { |
| 12 RollingTimeDeltaHistory empty_history(0); |
| 13 |
| 14 EXPECT_EQ(base::TimeDelta(), empty_history.Percentile(0.0)); |
| 15 EXPECT_EQ(base::TimeDelta(), empty_history.Percentile(50.0)); |
| 16 EXPECT_EQ(base::TimeDelta(), empty_history.Percentile(100.0)); |
| 17 |
| 18 empty_history.InsertSample(base::TimeDelta::FromMilliseconds(10)); |
| 19 empty_history.InsertSample(base::TimeDelta::FromMilliseconds(15)); |
| 20 empty_history.InsertSample(base::TimeDelta::FromMilliseconds(20)); |
| 21 |
| 22 EXPECT_EQ(base::TimeDelta(), empty_history.Percentile(0.0)); |
| 23 EXPECT_EQ(base::TimeDelta(), empty_history.Percentile(50.0)); |
| 24 EXPECT_EQ(base::TimeDelta(), empty_history.Percentile(100.0)); |
| 25 |
| 26 empty_history.Clear(); |
| 27 EXPECT_EQ(base::TimeDelta(), empty_history.Percentile(0.0)); |
| 28 EXPECT_EQ(base::TimeDelta(), empty_history.Percentile(50.0)); |
| 29 EXPECT_EQ(base::TimeDelta(), empty_history.Percentile(100.0)); |
| 30 } |
| 31 |
| 32 TEST(RollingTimeDeltaHistoryTest, SizeOneHistory) { |
| 33 RollingTimeDeltaHistory size_one_history(1); |
| 34 base::TimeDelta sample1 = base::TimeDelta::FromMilliseconds(10); |
| 35 base::TimeDelta sample2 = base::TimeDelta::FromMilliseconds(20); |
| 36 |
| 37 EXPECT_EQ(base::TimeDelta(), size_one_history.Percentile(0.0)); |
| 38 EXPECT_EQ(base::TimeDelta(), size_one_history.Percentile(50.0)); |
| 39 EXPECT_EQ(base::TimeDelta(), size_one_history.Percentile(100.0)); |
| 40 |
| 41 size_one_history.InsertSample(sample1); |
| 42 EXPECT_EQ(sample1, size_one_history.Percentile(0.0)); |
| 43 EXPECT_EQ(sample1, size_one_history.Percentile(50.0)); |
| 44 EXPECT_EQ(sample1, size_one_history.Percentile(100.0)); |
| 45 |
| 46 size_one_history.InsertSample(sample2); |
| 47 EXPECT_EQ(sample2, size_one_history.Percentile(0.0)); |
| 48 EXPECT_EQ(sample2, size_one_history.Percentile(50.0)); |
| 49 EXPECT_EQ(sample2, size_one_history.Percentile(100.0)); |
| 50 |
| 51 size_one_history.Clear(); |
| 52 EXPECT_EQ(base::TimeDelta(), size_one_history.Percentile(0.0)); |
| 53 EXPECT_EQ(base::TimeDelta(), size_one_history.Percentile(50.0)); |
| 54 EXPECT_EQ(base::TimeDelta(), size_one_history.Percentile(100.0)); |
| 55 } |
| 56 |
| 57 TEST(RollingTimeDeltaHistoryTest, LargeHistory) { |
| 58 RollingTimeDeltaHistory large_history(100); |
| 59 base::TimeDelta sample1 = base::TimeDelta::FromMilliseconds(150); |
| 60 base::TimeDelta sample2 = base::TimeDelta::FromMilliseconds(250); |
| 61 base::TimeDelta sample3 = base::TimeDelta::FromMilliseconds(200); |
| 62 |
| 63 large_history.InsertSample(sample1); |
| 64 large_history.InsertSample(sample2); |
| 65 |
| 66 EXPECT_EQ(sample1, large_history.Percentile(0.0)); |
| 67 EXPECT_EQ(sample1, large_history.Percentile(25.0)); |
| 68 EXPECT_EQ(sample2, large_history.Percentile(75.0)); |
| 69 EXPECT_EQ(sample2, large_history.Percentile(100.0)); |
| 70 |
| 71 large_history.InsertSample(sample3); |
| 72 EXPECT_EQ(sample1, large_history.Percentile(0.0)); |
| 73 EXPECT_EQ(sample1, large_history.Percentile(25.0)); |
| 74 EXPECT_EQ(sample3, large_history.Percentile(50.0)); |
| 75 EXPECT_EQ(sample2, large_history.Percentile(100.0)); |
| 76 |
| 77 // Fill the history. |
| 78 for (int i = 1; i <= 97; i++) |
| 79 large_history.InsertSample(base::TimeDelta::FromMilliseconds(i)); |
| 80 |
| 81 EXPECT_EQ(base::TimeDelta::FromMilliseconds(1), |
| 82 large_history.Percentile(0.0)); |
| 83 for (int i = 1; i <= 97; i++) { |
| 84 EXPECT_EQ(base::TimeDelta::FromMilliseconds(i), |
| 85 large_history.Percentile(i - 0.5)); |
| 86 } |
| 87 EXPECT_EQ(sample1, large_history.Percentile(97.5)); |
| 88 EXPECT_EQ(sample3, large_history.Percentile(98.5)); |
| 89 EXPECT_EQ(sample2, large_history.Percentile(99.5)); |
| 90 |
| 91 // Continue inserting samples, causing the oldest samples to be discarded. |
| 92 base::TimeDelta sample4 = base::TimeDelta::FromMilliseconds(100); |
| 93 base::TimeDelta sample5 = base::TimeDelta::FromMilliseconds(102); |
| 94 base::TimeDelta sample6 = base::TimeDelta::FromMilliseconds(104); |
| 95 large_history.InsertSample(sample4); |
| 96 large_history.InsertSample(sample5); |
| 97 large_history.InsertSample(sample6); |
| 98 EXPECT_EQ(sample4, large_history.Percentile(97.5)); |
| 99 EXPECT_EQ(sample5, large_history.Percentile(98.5)); |
| 100 EXPECT_EQ(sample6, large_history.Percentile(99.5)); |
| 101 |
| 102 large_history.Clear(); |
| 103 EXPECT_EQ(base::TimeDelta(), large_history.Percentile(0.0)); |
| 104 EXPECT_EQ(base::TimeDelta(), large_history.Percentile(50.0)); |
| 105 EXPECT_EQ(base::TimeDelta(), large_history.Percentile(100.0)); |
| 106 } |
| 107 |
| 108 } // namespace |
| 109 } // namespace cc |
OLD | NEW |