OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "apps/benchmark/measurements.h" | 5 #include "apps/benchmark/measurements.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 | 10 |
11 namespace benchmark { | 11 namespace benchmark { |
12 namespace { | 12 namespace { |
13 | 13 |
14 base::TimeTicks Ticks(int64 value) { | 14 base::TimeTicks Ticks(int64 value) { |
15 return base::TimeTicks::FromInternalValue(value); | 15 return base::TimeTicks::FromInternalValue(value); |
16 } | 16 } |
17 | 17 |
18 base::TimeDelta Delta(int64 value) { | 18 base::TimeDelta Delta(int64 value) { |
19 return base::TimeDelta::FromInternalValue(value); | 19 return base::TimeDelta::FromInternalValue(value); |
20 } | 20 } |
21 | 21 |
22 class MeasurementsTest : public ::testing::Test { | 22 class MeasurementsTest : public ::testing::Test { |
23 protected: | 23 protected: |
24 void SetUp() override { | 24 void SetUp() override { |
25 events_.resize(8); | 25 events_.resize(11); |
26 events_[0] = Event(EventType::COMPLETE, "a", "some", Ticks(10), Delta(2)); | 26 events_[0] = Event(EventType::COMPLETE, "a", "some", Ticks(10), Delta(2)); |
27 events_[1] = Event(EventType::COMPLETE, "a", "some", Ticks(11), Delta(4)); | 27 events_[1] = Event(EventType::COMPLETE, "a", "some", Ticks(11), Delta(4)); |
28 events_[2] = Event(EventType::COMPLETE, "a", "other", Ticks(12), Delta(8)); | 28 events_[2] = Event(EventType::COMPLETE, "a", "other", Ticks(12), Delta(8)); |
29 events_[3] = Event(EventType::COMPLETE, "b", "some", Ticks(3), Delta(16)); | 29 events_[3] = Event(EventType::COMPLETE, "b", "some", Ticks(3), Delta(16)); |
30 events_[4] = Event(EventType::COMPLETE, "b", "some", Ticks(13), Delta(32)); | 30 events_[4] = Event(EventType::COMPLETE, "b", "some", Ticks(13), Delta(32)); |
31 events_[5] = | 31 |
32 events_[5] = Event(EventType::COMPLETE, "c", "some", Ticks(14), Delta(10)); | |
33 events_[6] = Event(EventType::COMPLETE, "c", "some", Ticks(16), Delta(11)); | |
34 events_[7] = Event(EventType::COMPLETE, "c", "some", Ticks(18), Delta(12)); | |
35 | |
36 events_[8] = | |
32 Event(EventType::INSTANT, "instant", "another", Ticks(20), Delta(0)); | 37 Event(EventType::INSTANT, "instant", "another", Ticks(20), Delta(0)); |
33 events_[6] = Event(EventType::INSTANT, "multi_occurence", "another", | 38 events_[9] = Event(EventType::INSTANT, "multi_occurence", "another", |
34 Ticks(30), Delta(0)); | 39 Ticks(30), Delta(0)); |
35 events_[7] = Event(EventType::INSTANT, "multi_occurence", "another", | 40 events_[10] = Event(EventType::INSTANT, "multi_occurence", "another", |
36 Ticks(40), Delta(0)); | 41 Ticks(40), Delta(0)); |
37 | 42 |
38 reversed_ = events_; | 43 reversed_ = events_; |
39 reverse(reversed_.begin(), reversed_.end()); | 44 reverse(reversed_.begin(), reversed_.end()); |
40 } | 45 } |
41 | 46 |
42 std::vector<Event> events_; | 47 std::vector<Event> events_; |
43 std::vector<Event> reversed_; | 48 std::vector<Event> reversed_; |
44 }; | 49 }; |
45 | 50 |
46 TEST_F(MeasurementsTest, MeasureTimeUntil) { | 51 TEST_F(MeasurementsTest, MeasureTimeUntil) { |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
130 EventSpec("a", "other")))); | 135 EventSpec("a", "other")))); |
131 | 136 |
132 EXPECT_DOUBLE_EQ(0.024, | 137 EXPECT_DOUBLE_EQ(0.024, |
133 regular.Measure(Measurement(MeasurementType::AVG_DURATION, | 138 regular.Measure(Measurement(MeasurementType::AVG_DURATION, |
134 EventSpec("b", "some")))); | 139 EventSpec("b", "some")))); |
135 EXPECT_DOUBLE_EQ(0.024, | 140 EXPECT_DOUBLE_EQ(0.024, |
136 reversed.Measure(Measurement(MeasurementType::AVG_DURATION, | 141 reversed.Measure(Measurement(MeasurementType::AVG_DURATION, |
137 EventSpec("b", "some")))); | 142 EventSpec("b", "some")))); |
138 } | 143 } |
139 | 144 |
145 TEST_F(MeasurementsTest, MeasurePercentileDuration) { | |
146 // The results should be the same regardless of the order of events. | |
147 Measurements regular(events_, base::TimeTicks::FromInternalValue(2)); | |
148 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2)); | |
149 | |
150 Measurement measurement(MeasurementType::PERCENTILE_DURATION, | |
151 EventSpec("c", "some")); | |
152 measurement.param = 0.10; | |
153 EXPECT_DOUBLE_EQ(0.010, regular.Measure(measurement)); | |
ppi
2015/10/12 19:19:19
Please make each test on the reversed event list t
zra
2015/10/12 20:38:19
Done.
| |
154 measurement.param = 0.50; | |
155 EXPECT_DOUBLE_EQ(0.011, regular.Measure(measurement)); | |
156 measurement.param = 0.90; | |
157 EXPECT_DOUBLE_EQ(0.012, regular.Measure(measurement)); | |
ppi
2015/10/12 19:19:19
Please test edge cases (0.0 and 1.0) too.
zra
2015/10/12 20:38:19
Added for 1.0. On further reflection 0.0 doesn't m
ppi
2015/10/12 20:53:55
As noted above, I think that we should handle 0.0
zra
2015/10/12 22:59:33
Added test for 0.0.
| |
158 } | |
159 | |
140 TEST_F(MeasurementsTest, NoMatchingEvent) { | 160 TEST_F(MeasurementsTest, NoMatchingEvent) { |
141 // The results should be the same regardless of the order of events. | 161 // The results should be the same regardless of the order of events. |
142 Measurements empty(std::vector<Event>(), | 162 Measurements empty(std::vector<Event>(), |
143 base::TimeTicks::FromInternalValue(0)); | 163 base::TimeTicks::FromInternalValue(0)); |
144 Measurements regular(events_, base::TimeTicks::FromInternalValue(0)); | 164 Measurements regular(events_, base::TimeTicks::FromInternalValue(0)); |
145 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(0)); | 165 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(0)); |
146 | 166 |
147 EXPECT_DOUBLE_EQ(-1.0, | 167 EXPECT_DOUBLE_EQ(-1.0, |
148 empty.Measure(Measurement(MeasurementType::AVG_DURATION, | 168 empty.Measure(Measurement(MeasurementType::AVG_DURATION, |
149 EventSpec("miss", "cat")))); | 169 EventSpec("miss", "cat")))); |
(...skipping 10 matching lines...) Expand all Loading... | |
160 regular.Measure(Measurement(MeasurementType::TIME_UNTIL, | 180 regular.Measure(Measurement(MeasurementType::TIME_UNTIL, |
161 EventSpec("miss", "cat")))); | 181 EventSpec("miss", "cat")))); |
162 EXPECT_DOUBLE_EQ(-1.0, | 182 EXPECT_DOUBLE_EQ(-1.0, |
163 reversed.Measure(Measurement(MeasurementType::TIME_UNTIL, | 183 reversed.Measure(Measurement(MeasurementType::TIME_UNTIL, |
164 EventSpec("miss", "cat")))); | 184 EventSpec("miss", "cat")))); |
165 } | 185 } |
166 | 186 |
167 } // namespace | 187 } // namespace |
168 | 188 |
169 } // namespace benchmark | 189 } // namespace benchmark |
OLD | NEW |