OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 the V8 project 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 <vector> |
| 6 |
| 7 #include "src/counters.h" |
| 8 #include "src/handles-inl.h" |
| 9 #include "src/objects-inl.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" |
| 11 |
| 12 namespace v8 { |
| 13 namespace internal { |
| 14 |
| 15 namespace { |
| 16 |
| 17 class MockHistogram : public Histogram { |
| 18 public: |
| 19 void AddSample(int value) { samples_.push_back(value); } |
| 20 std::vector<int>* samples() { return &samples_; } |
| 21 |
| 22 private: |
| 23 std::vector<int> samples_; |
| 24 }; |
| 25 |
| 26 |
| 27 class AggregatedMemoryHistogramTest : public ::testing::Test { |
| 28 public: |
| 29 AggregatedMemoryHistogramTest() { |
| 30 aggregated_ = AggregatedMemoryHistogram<MockHistogram>(&mock_); |
| 31 } |
| 32 virtual ~AggregatedMemoryHistogramTest() {} |
| 33 |
| 34 void AddSample(double current_ms, double current_value) { |
| 35 aggregated_.AddSample(current_ms, current_value); |
| 36 } |
| 37 |
| 38 std::vector<int>* samples() { return mock_.samples(); } |
| 39 |
| 40 private: |
| 41 AggregatedMemoryHistogram<MockHistogram> aggregated_; |
| 42 MockHistogram mock_; |
| 43 }; |
| 44 |
| 45 } // namespace |
| 46 |
| 47 |
| 48 TEST_F(AggregatedMemoryHistogramTest, OneSample1) { |
| 49 FLAG_histogram_interval = 10; |
| 50 AddSample(10, 1000); |
| 51 AddSample(20, 1000); |
| 52 EXPECT_EQ(1, samples()->size()); |
| 53 EXPECT_EQ(1000, (*samples())[0]); |
| 54 } |
| 55 |
| 56 |
| 57 TEST_F(AggregatedMemoryHistogramTest, OneSample2) { |
| 58 FLAG_histogram_interval = 10; |
| 59 AddSample(10, 500); |
| 60 AddSample(20, 1000); |
| 61 EXPECT_EQ(1, samples()->size()); |
| 62 EXPECT_EQ(750, (*samples())[0]); |
| 63 } |
| 64 |
| 65 |
| 66 TEST_F(AggregatedMemoryHistogramTest, OneSample3) { |
| 67 FLAG_histogram_interval = 10; |
| 68 AddSample(10, 500); |
| 69 AddSample(15, 500); |
| 70 AddSample(15, 1000); |
| 71 AddSample(20, 1000); |
| 72 EXPECT_EQ(1, samples()->size()); |
| 73 EXPECT_EQ(750, (*samples())[0]); |
| 74 } |
| 75 |
| 76 |
| 77 TEST_F(AggregatedMemoryHistogramTest, OneSample4) { |
| 78 FLAG_histogram_interval = 10; |
| 79 AddSample(10, 500); |
| 80 AddSample(15, 750); |
| 81 AddSample(20, 1000); |
| 82 EXPECT_EQ(1, samples()->size()); |
| 83 EXPECT_EQ(750, (*samples())[0]); |
| 84 } |
| 85 |
| 86 |
| 87 TEST_F(AggregatedMemoryHistogramTest, TwoSamples1) { |
| 88 FLAG_histogram_interval = 10; |
| 89 AddSample(10, 1000); |
| 90 AddSample(30, 1000); |
| 91 EXPECT_EQ(2, samples()->size()); |
| 92 EXPECT_EQ(1000, (*samples())[0]); |
| 93 EXPECT_EQ(1000, (*samples())[1]); |
| 94 } |
| 95 |
| 96 |
| 97 TEST_F(AggregatedMemoryHistogramTest, TwoSamples2) { |
| 98 FLAG_histogram_interval = 10; |
| 99 AddSample(10, 1000); |
| 100 AddSample(20, 1000); |
| 101 AddSample(30, 1000); |
| 102 EXPECT_EQ(2, samples()->size()); |
| 103 EXPECT_EQ(1000, (*samples())[0]); |
| 104 EXPECT_EQ(1000, (*samples())[1]); |
| 105 } |
| 106 |
| 107 |
| 108 TEST_F(AggregatedMemoryHistogramTest, TwoSamples3) { |
| 109 FLAG_histogram_interval = 10; |
| 110 AddSample(10, 1000); |
| 111 AddSample(20, 1000); |
| 112 AddSample(20, 500); |
| 113 AddSample(30, 500); |
| 114 EXPECT_EQ(2, samples()->size()); |
| 115 EXPECT_EQ(1000, (*samples())[0]); |
| 116 EXPECT_EQ(500, (*samples())[1]); |
| 117 } |
| 118 |
| 119 |
| 120 TEST_F(AggregatedMemoryHistogramTest, TwoSamples4) { |
| 121 FLAG_histogram_interval = 10; |
| 122 AddSample(10, 1000); |
| 123 AddSample(30, 0); |
| 124 EXPECT_EQ(2, samples()->size()); |
| 125 EXPECT_EQ(750, (*samples())[0]); |
| 126 EXPECT_EQ(250, (*samples())[1]); |
| 127 } |
| 128 |
| 129 |
| 130 TEST_F(AggregatedMemoryHistogramTest, TwoSamples5) { |
| 131 FLAG_histogram_interval = 10; |
| 132 AddSample(10, 0); |
| 133 AddSample(30, 1000); |
| 134 EXPECT_EQ(2, samples()->size()); |
| 135 EXPECT_EQ(250, (*samples())[0]); |
| 136 EXPECT_EQ(750, (*samples())[1]); |
| 137 } |
| 138 |
| 139 |
| 140 TEST_F(AggregatedMemoryHistogramTest, TwoSamples6) { |
| 141 FLAG_histogram_interval = 10; |
| 142 AddSample(10, 0); |
| 143 AddSample(15, 1000); |
| 144 AddSample(30, 1000); |
| 145 EXPECT_EQ(2, samples()->size()); |
| 146 EXPECT_EQ((500 + 1000) / 2, (*samples())[0]); |
| 147 EXPECT_EQ(1000, (*samples())[1]); |
| 148 } |
| 149 |
| 150 |
| 151 TEST_F(AggregatedMemoryHistogramTest, TwoSamples7) { |
| 152 FLAG_histogram_interval = 10; |
| 153 AddSample(10, 0); |
| 154 AddSample(15, 1000); |
| 155 AddSample(25, 0); |
| 156 AddSample(30, 1000); |
| 157 EXPECT_EQ(2, samples()->size()); |
| 158 EXPECT_EQ((500 + 750) / 2, (*samples())[0]); |
| 159 EXPECT_EQ((250 + 500) / 2, (*samples())[1]); |
| 160 } |
| 161 |
| 162 |
| 163 TEST_F(AggregatedMemoryHistogramTest, TwoSamples8) { |
| 164 FLAG_histogram_interval = 10; |
| 165 AddSample(10, 1000); |
| 166 AddSample(15, 0); |
| 167 AddSample(25, 1000); |
| 168 AddSample(30, 0); |
| 169 EXPECT_EQ(2, samples()->size()); |
| 170 EXPECT_EQ((500 + 250) / 2, (*samples())[0]); |
| 171 EXPECT_EQ((750 + 500) / 2, (*samples())[1]); |
| 172 } |
| 173 |
| 174 |
| 175 TEST_F(AggregatedMemoryHistogramTest, ManySamples1) { |
| 176 FLAG_histogram_interval = 10; |
| 177 const int kMaxSamples = 1000; |
| 178 AddSample(0, 0); |
| 179 AddSample(10 * kMaxSamples, 10 * kMaxSamples); |
| 180 EXPECT_EQ(kMaxSamples, samples()->size()); |
| 181 for (int i = 0; i < kMaxSamples; i++) { |
| 182 EXPECT_EQ(i * 10 + 5, (*samples())[i]); |
| 183 } |
| 184 } |
| 185 |
| 186 |
| 187 TEST_F(AggregatedMemoryHistogramTest, ManySamples2) { |
| 188 FLAG_histogram_interval = 10; |
| 189 const int kMaxSamples = 1000; |
| 190 AddSample(0, 0); |
| 191 AddSample(10 * (2 * kMaxSamples), 10 * (2 * kMaxSamples)); |
| 192 EXPECT_EQ(kMaxSamples, samples()->size()); |
| 193 for (int i = 0; i < kMaxSamples; i++) { |
| 194 EXPECT_EQ(i * 10 + 5, (*samples())[i]); |
| 195 } |
| 196 } |
| 197 |
| 198 |
| 199 } // namespace internal |
| 200 } // namespace v8 |
OLD | NEW |