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(6); | 25 events_.resize(8); |
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] = |
| 32 Event(EventType::INSTANT, "instant", "another", Ticks(20), Delta(0)); |
| 33 events_[6] = Event(EventType::INSTANT, "multi_occurence", "another", |
| 34 Ticks(30), Delta(0)); |
| 35 events_[7] = Event(EventType::INSTANT, "multi_occurence", "another", |
| 36 Ticks(40), Delta(0)); |
31 | 37 |
32 reversed_ = events_; | 38 reversed_ = events_; |
33 reverse(reversed_.begin(), reversed_.end()); | 39 reverse(reversed_.begin(), reversed_.end()); |
34 } | 40 } |
35 | 41 |
36 std::vector<Event> events_; | 42 std::vector<Event> events_; |
37 std::vector<Event> reversed_; | 43 std::vector<Event> reversed_; |
38 }; | 44 }; |
39 | 45 |
40 TEST_F(MeasurementsTest, MeasureTimeUntil) { | 46 TEST_F(MeasurementsTest, MeasureTimeUntil) { |
41 // The results should be the same regardless of the order of events. | 47 // The results should be the same regardless of the order of events. |
42 Measurements regular(events_, base::TimeTicks::FromInternalValue(2)); | 48 Measurements regular(events_, base::TimeTicks::FromInternalValue(2)); |
43 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2)); | 49 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2)); |
44 | 50 |
45 EXPECT_DOUBLE_EQ(0.008, regular.Measure(Measurement( | 51 EXPECT_DOUBLE_EQ(0.008, |
46 MeasurementType::TIME_UNTIL, "a", "some"))); | 52 regular.Measure(Measurement(MeasurementType::TIME_UNTIL, |
47 EXPECT_DOUBLE_EQ(0.008, reversed.Measure(Measurement( | 53 EventSpec("a", "some")))); |
48 MeasurementType::TIME_UNTIL, "a", "some"))); | 54 EXPECT_DOUBLE_EQ(0.008, |
| 55 reversed.Measure(Measurement(MeasurementType::TIME_UNTIL, |
| 56 EventSpec("a", "some")))); |
49 | 57 |
50 EXPECT_DOUBLE_EQ(0.01, regular.Measure(Measurement( | 58 EXPECT_DOUBLE_EQ(0.01, |
51 MeasurementType::TIME_UNTIL, "a", "other"))); | 59 regular.Measure(Measurement(MeasurementType::TIME_UNTIL, |
52 EXPECT_DOUBLE_EQ(0.01, reversed.Measure(Measurement( | 60 EventSpec("a", "other")))); |
53 MeasurementType::TIME_UNTIL, "a", "other"))); | 61 EXPECT_DOUBLE_EQ(0.01, |
| 62 reversed.Measure(Measurement(MeasurementType::TIME_UNTIL, |
| 63 EventSpec("a", "other")))); |
54 | 64 |
55 EXPECT_DOUBLE_EQ(0.001, regular.Measure(Measurement( | 65 EXPECT_DOUBLE_EQ(0.001, |
56 MeasurementType::TIME_UNTIL, "b", "some"))); | 66 regular.Measure(Measurement(MeasurementType::TIME_UNTIL, |
57 EXPECT_DOUBLE_EQ(0.001, reversed.Measure(Measurement( | 67 EventSpec("b", "some")))); |
58 MeasurementType::TIME_UNTIL, "b", "some"))); | 68 EXPECT_DOUBLE_EQ(0.001, |
| 69 reversed.Measure(Measurement(MeasurementType::TIME_UNTIL, |
| 70 EventSpec("b", "some")))); |
| 71 } |
| 72 |
| 73 TEST_F(MeasurementsTest, MeasureTimeBetween) { |
| 74 // The results should be the same regardless of the order of events. |
| 75 Measurements regular(events_, base::TimeTicks::FromInternalValue(2)); |
| 76 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2)); |
| 77 |
| 78 EXPECT_DOUBLE_EQ(0.0, regular.Measure(Measurement( |
| 79 MeasurementType::TIME_BETWEEN, |
| 80 EventSpec("a", "some"), EventSpec("a", "some")))); |
| 81 EXPECT_DOUBLE_EQ(0.0, reversed.Measure(Measurement( |
| 82 MeasurementType::TIME_BETWEEN, |
| 83 EventSpec("a", "some"), EventSpec("a", "some")))); |
| 84 |
| 85 EXPECT_DOUBLE_EQ( |
| 86 0.01, regular.Measure(Measurement( |
| 87 MeasurementType::TIME_BETWEEN, EventSpec("instant", "another"), |
| 88 EventSpec("multi_occurence", "another")))); |
| 89 EXPECT_DOUBLE_EQ( |
| 90 0.01, reversed.Measure(Measurement( |
| 91 MeasurementType::TIME_BETWEEN, EventSpec("instant", "another"), |
| 92 EventSpec("multi_occurence", "another")))); |
| 93 |
| 94 EXPECT_DOUBLE_EQ( |
| 95 -1.0, regular.Measure(Measurement(MeasurementType::TIME_BETWEEN, |
| 96 EventSpec("multi_occurence", "another"), |
| 97 EventSpec("instant", "another")))); |
| 98 EXPECT_DOUBLE_EQ(-1.0, reversed.Measure(Measurement( |
| 99 MeasurementType::TIME_BETWEEN, |
| 100 EventSpec("multi_occurence", "another"), |
| 101 EventSpec("instant", "another")))); |
| 102 |
| 103 EXPECT_DOUBLE_EQ( |
| 104 0.01, regular.Measure(Measurement(MeasurementType::TIME_BETWEEN, |
| 105 EventSpec("a", "some"), |
| 106 EventSpec("instant", "another")))); |
| 107 EXPECT_DOUBLE_EQ( |
| 108 0.01, reversed.Measure(Measurement(MeasurementType::TIME_BETWEEN, |
| 109 EventSpec("a", "some"), |
| 110 EventSpec("instant", "another")))); |
59 } | 111 } |
60 | 112 |
61 TEST_F(MeasurementsTest, MeasureAvgDuration) { | 113 TEST_F(MeasurementsTest, MeasureAvgDuration) { |
62 // The results should be the same regardless of the order of events. | 114 // The results should be the same regardless of the order of events. |
63 Measurements regular(events_, base::TimeTicks::FromInternalValue(2)); | 115 Measurements regular(events_, base::TimeTicks::FromInternalValue(2)); |
64 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2)); | 116 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2)); |
65 | 117 |
66 EXPECT_DOUBLE_EQ(0.003, regular.Measure(Measurement( | 118 EXPECT_DOUBLE_EQ(0.003, |
67 MeasurementType::AVG_DURATION, "a", "some"))); | 119 regular.Measure(Measurement(MeasurementType::AVG_DURATION, |
68 EXPECT_DOUBLE_EQ(0.003, reversed.Measure(Measurement( | 120 EventSpec("a", "some")))); |
69 MeasurementType::AVG_DURATION, "a", "some"))); | 121 EXPECT_DOUBLE_EQ(0.003, |
| 122 reversed.Measure(Measurement(MeasurementType::AVG_DURATION, |
| 123 EventSpec("a", "some")))); |
70 | 124 |
71 EXPECT_DOUBLE_EQ(0.008, regular.Measure(Measurement( | 125 EXPECT_DOUBLE_EQ(0.008, |
72 MeasurementType::AVG_DURATION, "a", "other"))); | 126 regular.Measure(Measurement(MeasurementType::AVG_DURATION, |
73 EXPECT_DOUBLE_EQ(0.008, reversed.Measure(Measurement( | 127 EventSpec("a", "other")))); |
74 MeasurementType::AVG_DURATION, "a", "other"))); | 128 EXPECT_DOUBLE_EQ(0.008, |
| 129 reversed.Measure(Measurement(MeasurementType::AVG_DURATION, |
| 130 EventSpec("a", "other")))); |
75 | 131 |
76 EXPECT_DOUBLE_EQ(0.024, regular.Measure(Measurement( | 132 EXPECT_DOUBLE_EQ(0.024, |
77 MeasurementType::AVG_DURATION, "b", "some"))); | 133 regular.Measure(Measurement(MeasurementType::AVG_DURATION, |
78 EXPECT_DOUBLE_EQ(0.024, reversed.Measure(Measurement( | 134 EventSpec("b", "some")))); |
79 MeasurementType::AVG_DURATION, "b", "some"))); | 135 EXPECT_DOUBLE_EQ(0.024, |
| 136 reversed.Measure(Measurement(MeasurementType::AVG_DURATION, |
| 137 EventSpec("b", "some")))); |
80 } | 138 } |
81 | 139 |
82 TEST_F(MeasurementsTest, NoMatchingEvent) { | 140 TEST_F(MeasurementsTest, NoMatchingEvent) { |
83 // The results should be the same regardless of the order of events. | 141 // The results should be the same regardless of the order of events. |
84 Measurements empty(std::vector<Event>(), | 142 Measurements empty(std::vector<Event>(), |
85 base::TimeTicks::FromInternalValue(0)); | 143 base::TimeTicks::FromInternalValue(0)); |
86 Measurements regular(events_, base::TimeTicks::FromInternalValue(0)); | 144 Measurements regular(events_, base::TimeTicks::FromInternalValue(0)); |
87 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(0)); | 145 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(0)); |
88 | 146 |
89 EXPECT_DOUBLE_EQ(-1.0, empty.Measure(Measurement( | 147 EXPECT_DOUBLE_EQ(-1.0, |
90 MeasurementType::AVG_DURATION, "miss", "cat"))); | 148 empty.Measure(Measurement(MeasurementType::AVG_DURATION, |
91 EXPECT_DOUBLE_EQ(-1.0, regular.Measure(Measurement( | 149 EventSpec("miss", "cat")))); |
92 MeasurementType::AVG_DURATION, "miss", "cat"))); | 150 EXPECT_DOUBLE_EQ(-1.0, |
93 EXPECT_DOUBLE_EQ(-1.0, reversed.Measure(Measurement( | 151 regular.Measure(Measurement(MeasurementType::AVG_DURATION, |
94 MeasurementType::AVG_DURATION, "miss", "cat"))); | 152 EventSpec("miss", "cat")))); |
| 153 EXPECT_DOUBLE_EQ(-1.0, |
| 154 reversed.Measure(Measurement(MeasurementType::AVG_DURATION, |
| 155 EventSpec("miss", "cat")))); |
95 | 156 |
96 EXPECT_DOUBLE_EQ(-1.0, empty.Measure(Measurement(MeasurementType::TIME_UNTIL, | 157 EXPECT_DOUBLE_EQ(-1.0, empty.Measure(Measurement(MeasurementType::TIME_UNTIL, |
97 "miss", "cat"))); | 158 EventSpec("miss", "cat")))); |
98 EXPECT_DOUBLE_EQ(-1.0, regular.Measure(Measurement( | 159 EXPECT_DOUBLE_EQ(-1.0, |
99 MeasurementType::TIME_UNTIL, "miss", "cat"))); | 160 regular.Measure(Measurement(MeasurementType::TIME_UNTIL, |
100 EXPECT_DOUBLE_EQ(-1.0, reversed.Measure(Measurement( | 161 EventSpec("miss", "cat")))); |
101 MeasurementType::TIME_UNTIL, "miss", "cat"))); | 162 EXPECT_DOUBLE_EQ(-1.0, |
| 163 reversed.Measure(Measurement(MeasurementType::TIME_UNTIL, |
| 164 EventSpec("miss", "cat")))); |
102 } | 165 } |
103 | 166 |
104 } // namespace | 167 } // namespace |
105 | 168 |
106 } // namespace benchmark | 169 } // namespace benchmark |
OLD | NEW |