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_sample_window.h" | |
6 #include "testing/gtest/include/gtest/gtest.h" | |
7 | |
8 namespace cc { | |
9 namespace { | |
10 | |
11 TEST(RollingSampleWindowTest, EmptyWindow) { | |
12 RollingSampleWindow empty_window(0); | |
13 | |
14 EXPECT_EQ(base::TimeDelta(), empty_window.Percentile(0.0)); | |
15 EXPECT_EQ(base::TimeDelta(), empty_window.Percentile(50.0)); | |
16 EXPECT_EQ(base::TimeDelta(), empty_window.Percentile(100.0)); | |
17 | |
18 empty_window.InsertSample(base::TimeDelta::FromMilliseconds(10)); | |
19 empty_window.InsertSample(base::TimeDelta::FromMilliseconds(15)); | |
20 empty_window.InsertSample(base::TimeDelta::FromMilliseconds(20)); | |
21 | |
22 EXPECT_EQ(base::TimeDelta(), empty_window.Percentile(0.0)); | |
23 EXPECT_EQ(base::TimeDelta(), empty_window.Percentile(50.0)); | |
24 EXPECT_EQ(base::TimeDelta(), empty_window.Percentile(100.0)); | |
25 | |
26 empty_window.Clear(); | |
27 EXPECT_EQ(base::TimeDelta(), empty_window.Percentile(0.0)); | |
28 EXPECT_EQ(base::TimeDelta(), empty_window.Percentile(50.0)); | |
29 EXPECT_EQ(base::TimeDelta(), empty_window.Percentile(100.0)); | |
30 } | |
31 | |
32 TEST(RollingSampleWindowTest, SizeOneWindow) { | |
33 RollingSampleWindow size_one_window(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_window.Percentile(0.0)); | |
38 EXPECT_EQ(base::TimeDelta(), size_one_window.Percentile(50.0)); | |
39 EXPECT_EQ(base::TimeDelta(), size_one_window.Percentile(100.0)); | |
40 | |
41 size_one_window.InsertSample(sample1); | |
42 EXPECT_EQ(base::TimeDelta(), size_one_window.Percentile(0.0)); | |
brianderson
2013/05/31 18:42:05
Would it make sense for the 0th percentile to retu
ajuma
2013/05/31 20:41:11
My initial thought was for Percentile(X) to return
| |
43 EXPECT_EQ(sample1, size_one_window.Percentile(50.0)); | |
44 EXPECT_EQ(sample1, size_one_window.Percentile(100.0)); | |
45 | |
46 size_one_window.InsertSample(sample2); | |
47 EXPECT_EQ(base::TimeDelta(), size_one_window.Percentile(0.0)); | |
48 EXPECT_EQ(sample2, size_one_window.Percentile(50.0)); | |
49 EXPECT_EQ(sample2, size_one_window.Percentile(100.0)); | |
50 | |
51 size_one_window.Clear(); | |
52 EXPECT_EQ(base::TimeDelta(), size_one_window.Percentile(0.0)); | |
53 EXPECT_EQ(base::TimeDelta(), size_one_window.Percentile(50.0)); | |
54 EXPECT_EQ(base::TimeDelta(), size_one_window.Percentile(100.0)); | |
55 } | |
56 | |
57 TEST(RollingSampleWindowTest, LargeWindow) { | |
58 RollingSampleWindow large_window(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_window.InsertSample(sample1); | |
64 large_window.InsertSample(sample2); | |
65 | |
66 EXPECT_EQ(base::TimeDelta(), large_window.Percentile(0.0)); | |
67 EXPECT_EQ(sample1, large_window.Percentile(25.0)); | |
68 EXPECT_EQ(sample2, large_window.Percentile(75.0)); | |
69 EXPECT_EQ(sample2, large_window.Percentile(100.0)); | |
70 | |
71 large_window.InsertSample(sample3); | |
72 EXPECT_EQ(base::TimeDelta(), large_window.Percentile(0.0)); | |
73 EXPECT_EQ(sample1, large_window.Percentile(25.0)); | |
74 EXPECT_EQ(sample3, large_window.Percentile(50.0)); | |
75 EXPECT_EQ(sample2, large_window.Percentile(100.0)); | |
76 | |
77 // Fill the window. | |
78 for (int i = 1; i <= 97; i++) | |
79 large_window.InsertSample(base::TimeDelta::FromMilliseconds(i)); | |
80 | |
81 EXPECT_EQ(base::TimeDelta(), large_window.Percentile(0.0)); | |
82 for (int i = 1; i <= 97; i++) { | |
83 EXPECT_EQ(base::TimeDelta::FromMilliseconds(i), | |
84 large_window.Percentile(i - 0.5)); | |
85 } | |
86 EXPECT_EQ(sample1, large_window.Percentile(97.5)); | |
87 EXPECT_EQ(sample3, large_window.Percentile(98.5)); | |
88 EXPECT_EQ(sample2, large_window.Percentile(99.5)); | |
89 | |
90 // Continue inserting samples, causing the oldest samples to be discarded. | |
91 base::TimeDelta sample4 = base::TimeDelta::FromMilliseconds(100); | |
92 base::TimeDelta sample5 = base::TimeDelta::FromMilliseconds(102); | |
93 base::TimeDelta sample6 = base::TimeDelta::FromMilliseconds(104); | |
94 large_window.InsertSample(sample4); | |
95 large_window.InsertSample(sample5); | |
96 large_window.InsertSample(sample6); | |
97 EXPECT_EQ(sample4, large_window.Percentile(97.5)); | |
98 EXPECT_EQ(sample5, large_window.Percentile(98.5)); | |
99 EXPECT_EQ(sample6, large_window.Percentile(99.5)); | |
100 | |
101 large_window.Clear(); | |
102 EXPECT_EQ(base::TimeDelta(), large_window.Percentile(0.0)); | |
103 EXPECT_EQ(base::TimeDelta(), large_window.Percentile(50.0)); | |
104 EXPECT_EQ(base::TimeDelta(), large_window.Percentile(100.0)); | |
105 } | |
106 | |
107 } // namespace | |
108 } // namespace cc | |
OLD | NEW |