| 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 |