Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(435)

Side by Side Diff: apps/benchmark/measurements_unittest.cc

Issue 1394963002: Adds a couple more measures to the benchmarking app (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Format Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
51 static double MeasureSingle(const Measurements& measurements,
52 const Measurement& measurement) {
53 std::vector<double> result;
54 measurements.Measure(measurement, &result);
55 EXPECT_EQ(1U, result.size());
56 return result[0];
57 }
58
46 TEST_F(MeasurementsTest, MeasureTimeUntil) { 59 TEST_F(MeasurementsTest, MeasureTimeUntil) {
47 // The results should be the same regardless of the order of events. 60 // The results should be the same regardless of the order of events.
48 Measurements regular(events_, base::TimeTicks::FromInternalValue(2)); 61 Measurements regular(events_, base::TimeTicks::FromInternalValue(2));
49 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2)); 62 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2));
50 63
51 EXPECT_DOUBLE_EQ(0.008, 64 EXPECT_DOUBLE_EQ(
52 regular.Measure(Measurement(MeasurementType::TIME_UNTIL, 65 0.008, MeasureSingle(regular, Measurement(MeasurementType::TIME_UNTIL,
53 EventSpec("a", "some"))));
54 EXPECT_DOUBLE_EQ(0.008,
55 reversed.Measure(Measurement(MeasurementType::TIME_UNTIL,
56 EventSpec("a", "some")))); 66 EventSpec("a", "some"))));
67 EXPECT_DOUBLE_EQ(
68 0.008, MeasureSingle(reversed, Measurement(MeasurementType::TIME_UNTIL,
69 EventSpec("a", "some"))));
57 70
58 EXPECT_DOUBLE_EQ(0.01, 71 EXPECT_DOUBLE_EQ(
59 regular.Measure(Measurement(MeasurementType::TIME_UNTIL, 72 0.01, MeasureSingle(regular, Measurement(MeasurementType::TIME_UNTIL,
60 EventSpec("a", "other")))); 73 EventSpec("a", "other"))));
61 EXPECT_DOUBLE_EQ(0.01, 74 EXPECT_DOUBLE_EQ(
62 reversed.Measure(Measurement(MeasurementType::TIME_UNTIL, 75 0.01, MeasureSingle(reversed, Measurement(MeasurementType::TIME_UNTIL,
63 EventSpec("a", "other")))); 76 EventSpec("a", "other"))));
64 77
65 EXPECT_DOUBLE_EQ(0.001, 78 EXPECT_DOUBLE_EQ(
66 regular.Measure(Measurement(MeasurementType::TIME_UNTIL, 79 0.001, MeasureSingle(regular, Measurement(MeasurementType::TIME_UNTIL,
67 EventSpec("b", "some"))));
68 EXPECT_DOUBLE_EQ(0.001,
69 reversed.Measure(Measurement(MeasurementType::TIME_UNTIL,
70 EventSpec("b", "some")))); 80 EventSpec("b", "some"))));
81 EXPECT_DOUBLE_EQ(
82 0.001, MeasureSingle(reversed, Measurement(MeasurementType::TIME_UNTIL,
83 EventSpec("b", "some"))));
71 } 84 }
72 85
73 TEST_F(MeasurementsTest, MeasureTimeBetween) { 86 TEST_F(MeasurementsTest, MeasureTimeBetween) {
74 // The results should be the same regardless of the order of events. 87 // The results should be the same regardless of the order of events.
75 Measurements regular(events_, base::TimeTicks::FromInternalValue(2)); 88 Measurements regular(events_, base::TimeTicks::FromInternalValue(2));
76 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2)); 89 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2));
77 90
78 EXPECT_DOUBLE_EQ(0.0, regular.Measure(Measurement( 91 EXPECT_DOUBLE_EQ(
79 MeasurementType::TIME_BETWEEN, 92 0.0, MeasureSingle(regular, Measurement(MeasurementType::TIME_BETWEEN,
80 EventSpec("a", "some"), EventSpec("a", "some")))); 93 EventSpec("a", "some"),
81 EXPECT_DOUBLE_EQ(0.0, reversed.Measure(Measurement( 94 EventSpec("a", "some"))));
82 MeasurementType::TIME_BETWEEN, 95 EXPECT_DOUBLE_EQ(
83 EventSpec("a", "some"), EventSpec("a", "some")))); 96 0.0, MeasureSingle(reversed, Measurement(MeasurementType::TIME_BETWEEN,
97 EventSpec("a", "some"),
98 EventSpec("a", "some"))));
84 99
85 EXPECT_DOUBLE_EQ( 100 EXPECT_DOUBLE_EQ(
86 0.01, regular.Measure(Measurement( 101 0.01, MeasureSingle(
87 MeasurementType::TIME_BETWEEN, EventSpec("instant", "another"), 102 regular, Measurement(MeasurementType::TIME_BETWEEN,
88 EventSpec("multi_occurence", "another")))); 103 EventSpec("instant", "another"),
104 EventSpec("multi_occurence", "another"))));
89 EXPECT_DOUBLE_EQ( 105 EXPECT_DOUBLE_EQ(
90 0.01, reversed.Measure(Measurement( 106 0.01, MeasureSingle(reversed, Measurement(MeasurementType::TIME_BETWEEN,
91 MeasurementType::TIME_BETWEEN, EventSpec("instant", "another"), 107 EventSpec("instant", "another"),
92 EventSpec("multi_occurence", "another")))); 108 EventSpec("multi_occurence",
109 "another"))));
93 110
94 EXPECT_DOUBLE_EQ( 111 EXPECT_DOUBLE_EQ(
95 -1.0, regular.Measure(Measurement(MeasurementType::TIME_BETWEEN, 112 -1.0, MeasureSingle(regular,
96 EventSpec("multi_occurence", "another"), 113 Measurement(MeasurementType::TIME_BETWEEN,
97 EventSpec("instant", "another")))); 114 EventSpec("multi_occurence", "another"),
98 EXPECT_DOUBLE_EQ(-1.0, reversed.Measure(Measurement( 115 EventSpec("instant", "another"))));
99 MeasurementType::TIME_BETWEEN, 116 EXPECT_DOUBLE_EQ(
100 EventSpec("multi_occurence", "another"), 117 -1.0, MeasureSingle(reversed,
101 EventSpec("instant", "another")))); 118 Measurement(MeasurementType::TIME_BETWEEN,
119 EventSpec("multi_occurence", "another"),
120 EventSpec("instant", "another"))));
102 121
103 EXPECT_DOUBLE_EQ( 122 EXPECT_DOUBLE_EQ(
104 0.01, regular.Measure(Measurement(MeasurementType::TIME_BETWEEN, 123 0.01,
105 EventSpec("a", "some"), 124 MeasureSingle(regular, Measurement(MeasurementType::TIME_BETWEEN,
106 EventSpec("instant", "another"))));
107 EXPECT_DOUBLE_EQ(
108 0.01, reversed.Measure(Measurement(MeasurementType::TIME_BETWEEN,
109 EventSpec("a", "some"), 125 EventSpec("a", "some"),
110 EventSpec("instant", "another")))); 126 EventSpec("instant", "another"))));
127 EXPECT_DOUBLE_EQ(
128 0.01,
129 MeasureSingle(reversed, Measurement(MeasurementType::TIME_BETWEEN,
130 EventSpec("a", "some"),
131 EventSpec("instant", "another"))));
111 } 132 }
112 133
113 TEST_F(MeasurementsTest, MeasureAvgDuration) { 134 TEST_F(MeasurementsTest, MeasureAvgDuration) {
114 // The results should be the same regardless of the order of events. 135 // The results should be the same regardless of the order of events.
115 Measurements regular(events_, base::TimeTicks::FromInternalValue(2)); 136 Measurements regular(events_, base::TimeTicks::FromInternalValue(2));
116 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2)); 137 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2));
117 138
118 EXPECT_DOUBLE_EQ(0.003, 139 EXPECT_DOUBLE_EQ(
119 regular.Measure(Measurement(MeasurementType::AVG_DURATION, 140 0.003, MeasureSingle(regular, Measurement(MeasurementType::AVG_DURATION,
120 EventSpec("a", "some"))));
121 EXPECT_DOUBLE_EQ(0.003,
122 reversed.Measure(Measurement(MeasurementType::AVG_DURATION,
123 EventSpec("a", "some")))); 141 EventSpec("a", "some"))));
142 EXPECT_DOUBLE_EQ(
143 0.003, MeasureSingle(reversed, Measurement(MeasurementType::AVG_DURATION,
144 EventSpec("a", "some"))));
124 145
125 EXPECT_DOUBLE_EQ(0.008, 146 EXPECT_DOUBLE_EQ(
126 regular.Measure(Measurement(MeasurementType::AVG_DURATION, 147 0.008, MeasureSingle(regular, Measurement(MeasurementType::AVG_DURATION,
127 EventSpec("a", "other"))));
128 EXPECT_DOUBLE_EQ(0.008,
129 reversed.Measure(Measurement(MeasurementType::AVG_DURATION,
130 EventSpec("a", "other")))); 148 EventSpec("a", "other"))));
149 EXPECT_DOUBLE_EQ(
150 0.008, MeasureSingle(reversed, Measurement(MeasurementType::AVG_DURATION,
151 EventSpec("a", "other"))));
131 152
132 EXPECT_DOUBLE_EQ(0.024, 153 EXPECT_DOUBLE_EQ(
133 regular.Measure(Measurement(MeasurementType::AVG_DURATION, 154 0.024, MeasureSingle(regular, Measurement(MeasurementType::AVG_DURATION,
134 EventSpec("b", "some"))));
135 EXPECT_DOUBLE_EQ(0.024,
136 reversed.Measure(Measurement(MeasurementType::AVG_DURATION,
137 EventSpec("b", "some")))); 155 EventSpec("b", "some"))));
156 EXPECT_DOUBLE_EQ(
157 0.024, MeasureSingle(reversed, Measurement(MeasurementType::AVG_DURATION,
158 EventSpec("b", "some"))));
159 }
160
161 TEST_F(MeasurementsTest, MeasureMedianDuration) {
162 // The results should be the same regardless of the order of events.
163 Measurements regular(events_, base::TimeTicks::FromInternalValue(2));
164 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2));
165
166 EXPECT_DOUBLE_EQ(
167 0.011,
168 MeasureSingle(regular, Measurement(MeasurementType::MEDIAN_DURATION,
169 EventSpec("c", "some"))));
170 EXPECT_DOUBLE_EQ(
171 0.011,
172 MeasureSingle(reversed, Measurement(MeasurementType::MEDIAN_DURATION,
173 EventSpec("c", "some"))));
174 }
175
176 TEST_F(MeasurementsTest, MeasureDistDuration) {
177 // The results should be the same regardless of the order of events.
178 Measurements regular(events_, base::TimeTicks::FromInternalValue(2));
179 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(2));
180
181 std::vector<double> results;
182 regular.Measure(
183 Measurement(MeasurementType::DIST_DURATION, EventSpec("c", "some")),
184 &results);
185 EXPECT_EQ(3U, results.size());
186 EXPECT_DOUBLE_EQ(0.010, results[0]);
187 EXPECT_DOUBLE_EQ(0.011, results[1]);
188 EXPECT_DOUBLE_EQ(0.012, results[2]);
138 } 189 }
139 190
140 TEST_F(MeasurementsTest, NoMatchingEvent) { 191 TEST_F(MeasurementsTest, NoMatchingEvent) {
141 // The results should be the same regardless of the order of events. 192 // The results should be the same regardless of the order of events.
142 Measurements empty(std::vector<Event>(), 193 Measurements empty(std::vector<Event>(),
143 base::TimeTicks::FromInternalValue(0)); 194 base::TimeTicks::FromInternalValue(0));
144 Measurements regular(events_, base::TimeTicks::FromInternalValue(0)); 195 Measurements regular(events_, base::TimeTicks::FromInternalValue(0));
145 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(0)); 196 Measurements reversed(reversed_, base::TimeTicks::FromInternalValue(0));
146 197
147 EXPECT_DOUBLE_EQ(-1.0, 198 EXPECT_DOUBLE_EQ(
148 empty.Measure(Measurement(MeasurementType::AVG_DURATION, 199 -1.0, MeasureSingle(empty, Measurement(MeasurementType::AVG_DURATION,
149 EventSpec("miss", "cat")))); 200 EventSpec("miss", "cat"))));
150 EXPECT_DOUBLE_EQ(-1.0, 201 EXPECT_DOUBLE_EQ(
151 regular.Measure(Measurement(MeasurementType::AVG_DURATION, 202 -1.0, MeasureSingle(regular, Measurement(MeasurementType::AVG_DURATION,
152 EventSpec("miss", "cat")))); 203 EventSpec("miss", "cat"))));
153 EXPECT_DOUBLE_EQ(-1.0, 204 EXPECT_DOUBLE_EQ(
154 reversed.Measure(Measurement(MeasurementType::AVG_DURATION, 205 -1.0, MeasureSingle(reversed, Measurement(MeasurementType::AVG_DURATION,
155 EventSpec("miss", "cat")))); 206 EventSpec("miss", "cat"))));
156 207
157 EXPECT_DOUBLE_EQ(-1.0, empty.Measure(Measurement(MeasurementType::TIME_UNTIL,
158 EventSpec("miss", "cat"))));
159 EXPECT_DOUBLE_EQ(-1.0, 208 EXPECT_DOUBLE_EQ(-1.0,
160 regular.Measure(Measurement(MeasurementType::TIME_UNTIL, 209 MeasureSingle(empty, Measurement(MeasurementType::TIME_UNTIL,
210 EventSpec("miss", "cat"))));
211 EXPECT_DOUBLE_EQ(
212 -1.0, MeasureSingle(regular, Measurement(MeasurementType::TIME_UNTIL,
161 EventSpec("miss", "cat")))); 213 EventSpec("miss", "cat"))));
162 EXPECT_DOUBLE_EQ(-1.0, 214 EXPECT_DOUBLE_EQ(
163 reversed.Measure(Measurement(MeasurementType::TIME_UNTIL, 215 -1.0, MeasureSingle(reversed, Measurement(MeasurementType::TIME_UNTIL,
164 EventSpec("miss", "cat")))); 216 EventSpec("miss", "cat"))));
165 } 217 }
166 218
167 } // namespace 219 } // namespace
168 220
169 } // namespace benchmark 221 } // namespace benchmark
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698