| OLD | NEW |
| 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2016 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 "base/metrics/persistent_sample_map.h" | 5 #include "base/metrics/persistent_sample_map.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/metrics/persistent_histogram_allocator.h" | 9 #include "base/metrics/persistent_histogram_allocator.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| 11 | 11 |
| 12 namespace base { | 12 namespace base { |
| 13 namespace { | |
| 14 | 13 |
| 15 TEST(PersistentSampleMapTest, AccumulateTest) { | 14 TEST(PersistentSampleMapTest, AccumulateTest) { |
| 16 LocalPersistentMemoryAllocator allocator(64 << 10, 0, ""); // 64 KiB | 15 LocalPersistentMemoryAllocator allocator(64 << 10, 0, ""); // 64 KiB |
| 17 | 16 |
| 18 HistogramSamples::Metadata meta; | 17 HistogramSamples::Metadata meta; |
| 19 PersistentSparseHistogramDataManager manager(&allocator); | 18 PersistentSparseHistogramDataManager manager(&allocator); |
| 20 PersistentSampleMap samples(1, &manager, &meta); | 19 PersistentSampleMap samples(1, &manager, &meta); |
| 21 | 20 |
| 22 samples.Accumulate(1, 100); | 21 samples.Accumulate(1, 100); |
| 23 samples.Accumulate(2, 200); | 22 samples.Accumulate(2, 200); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 EXPECT_EQ(100, samples1.GetCount(1)); | 77 EXPECT_EQ(100, samples1.GetCount(1)); |
| 79 EXPECT_EQ(100, samples1.GetCount(2)); | 78 EXPECT_EQ(100, samples1.GetCount(2)); |
| 80 EXPECT_EQ(100, samples1.GetCount(3)); | 79 EXPECT_EQ(100, samples1.GetCount(3)); |
| 81 EXPECT_EQ(0, samples1.GetCount(4)); | 80 EXPECT_EQ(0, samples1.GetCount(4)); |
| 82 EXPECT_EQ(600, samples1.sum()); | 81 EXPECT_EQ(600, samples1.sum()); |
| 83 EXPECT_EQ(300, samples1.TotalCount()); | 82 EXPECT_EQ(300, samples1.TotalCount()); |
| 84 EXPECT_EQ(samples1.redundant_count(), samples1.TotalCount()); | 83 EXPECT_EQ(samples1.redundant_count(), samples1.TotalCount()); |
| 85 } | 84 } |
| 86 | 85 |
| 87 TEST(PersistentSampleMapTest, PersistenceTest) { | 86 TEST(PersistentSampleMapTest, PersistenceTest) { |
| 87 const int kAllSamples = PersistentSampleMap::kAllSamples; |
| 88 |
| 88 LocalPersistentMemoryAllocator allocator(64 << 10, 0, ""); // 64 KiB | 89 LocalPersistentMemoryAllocator allocator(64 << 10, 0, ""); // 64 KiB |
| 89 | 90 |
| 90 HistogramSamples::Metadata meta12; | 91 HistogramSamples::Metadata meta12; |
| 91 PersistentSparseHistogramDataManager manager1(&allocator); | 92 PersistentSparseHistogramDataManager manager1(&allocator); |
| 92 PersistentSampleMap samples1(12, &manager1, &meta12); | 93 PersistentSampleMap samples1(12, &manager1, &meta12); |
| 93 samples1.Accumulate(1, 100); | 94 samples1.Accumulate(1, 100); |
| 94 samples1.Accumulate(2, 200); | 95 samples1.Accumulate(2, 200); |
| 95 samples1.Accumulate(1, -200); | 96 samples1.Accumulate(1, -200); |
| 97 samples1.Accumulate(kAllSamples, 1); |
| 96 EXPECT_EQ(-100, samples1.GetCount(1)); | 98 EXPECT_EQ(-100, samples1.GetCount(1)); |
| 97 EXPECT_EQ(200, samples1.GetCount(2)); | 99 EXPECT_EQ(200, samples1.GetCount(2)); |
| 98 EXPECT_EQ(300, samples1.sum()); | 100 EXPECT_EQ(1, samples1.GetCount(kAllSamples)); |
| 99 EXPECT_EQ(100, samples1.TotalCount()); | 101 EXPECT_EQ(300 + kAllSamples, samples1.sum()); |
| 102 EXPECT_EQ(101, samples1.TotalCount()); |
| 100 EXPECT_EQ(samples1.redundant_count(), samples1.TotalCount()); | 103 EXPECT_EQ(samples1.redundant_count(), samples1.TotalCount()); |
| 101 | 104 |
| 102 PersistentSparseHistogramDataManager manager2(&allocator); | 105 PersistentSparseHistogramDataManager manager2(&allocator); |
| 103 PersistentSampleMap samples2(12, &manager2, &meta12); | 106 PersistentSampleMap samples2(12, &manager2, &meta12); |
| 104 EXPECT_EQ(samples1.id(), samples2.id()); | 107 EXPECT_EQ(samples1.id(), samples2.id()); |
| 105 EXPECT_EQ(samples1.sum(), samples2.sum()); | 108 EXPECT_EQ(samples1.sum(), samples2.sum()); |
| 106 EXPECT_EQ(samples1.redundant_count(), samples2.redundant_count()); | 109 EXPECT_EQ(samples1.redundant_count(), samples2.redundant_count()); |
| 107 EXPECT_EQ(samples1.TotalCount(), samples2.TotalCount()); | 110 EXPECT_EQ(samples1.TotalCount(), samples2.TotalCount()); |
| 108 EXPECT_EQ(-100, samples2.GetCount(1)); | 111 EXPECT_EQ(-100, samples2.GetCount(1)); |
| 109 EXPECT_EQ(200, samples2.GetCount(2)); | 112 EXPECT_EQ(200, samples2.GetCount(2)); |
| 110 EXPECT_EQ(300, samples2.sum()); | 113 EXPECT_EQ(1, samples2.GetCount(kAllSamples)); |
| 111 EXPECT_EQ(100, samples2.TotalCount()); | 114 EXPECT_EQ(300 + kAllSamples, samples2.sum()); |
| 115 EXPECT_EQ(101, samples2.TotalCount()); |
| 112 EXPECT_EQ(samples2.redundant_count(), samples2.TotalCount()); | 116 EXPECT_EQ(samples2.redundant_count(), samples2.TotalCount()); |
| 113 | 117 |
| 118 samples1.Accumulate(kAllSamples, -1); |
| 114 EXPECT_EQ(0, samples2.GetCount(3)); | 119 EXPECT_EQ(0, samples2.GetCount(3)); |
| 115 EXPECT_EQ(0, samples1.GetCount(3)); | 120 EXPECT_EQ(0, samples1.GetCount(3)); |
| 116 samples2.Accumulate(3, 300); | 121 samples2.Accumulate(3, 300); |
| 117 EXPECT_EQ(300, samples2.GetCount(3)); | 122 EXPECT_EQ(300, samples2.GetCount(3)); |
| 118 EXPECT_EQ(300, samples1.GetCount(3)); | 123 EXPECT_EQ(300, samples1.GetCount(3)); |
| 119 EXPECT_EQ(samples1.sum(), samples2.sum()); | 124 EXPECT_EQ(samples1.sum(), samples2.sum()); |
| 120 EXPECT_EQ(samples1.redundant_count(), samples2.redundant_count()); | 125 EXPECT_EQ(samples1.redundant_count(), samples2.redundant_count()); |
| 121 EXPECT_EQ(samples1.TotalCount(), samples2.TotalCount()); | 126 EXPECT_EQ(samples1.TotalCount(), samples2.TotalCount()); |
| 122 | 127 |
| 123 EXPECT_EQ(0, samples2.GetCount(4)); | 128 EXPECT_EQ(0, samples2.GetCount(4)); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 | 242 |
| 238 EXPECT_DEATH(it->Next(), ""); | 243 EXPECT_DEATH(it->Next(), ""); |
| 239 | 244 |
| 240 samples.Accumulate(1, 100); | 245 samples.Accumulate(1, 100); |
| 241 it = samples.Iterator(); | 246 it = samples.Iterator(); |
| 242 EXPECT_FALSE(it->Done()); | 247 EXPECT_FALSE(it->Done()); |
| 243 } | 248 } |
| 244 #endif | 249 #endif |
| 245 // (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)) && GTEST_HAS_DEATH_TEST | 250 // (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)) && GTEST_HAS_DEATH_TEST |
| 246 | 251 |
| 247 } // namespace | |
| 248 } // namespace base | 252 } // namespace base |
| OLD | NEW |