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

Side by Side Diff: base/metrics/sparse_histogram_unittest.cc

Issue 1852433005: Convert //base to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase after r384946 Created 4 years, 8 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
« no previous file with comments | « base/metrics/sparse_histogram.cc ('k') | base/metrics/statistics_recorder.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/sparse_histogram.h" 5 #include "base/metrics/sparse_histogram.h"
6 6
7 #include <memory>
7 #include <string> 8 #include <string>
8 9
9 #include "base/memory/scoped_ptr.h"
10 #include "base/metrics/histogram_base.h" 10 #include "base/metrics/histogram_base.h"
11 #include "base/metrics/histogram_samples.h" 11 #include "base/metrics/histogram_samples.h"
12 #include "base/metrics/persistent_histogram_allocator.h" 12 #include "base/metrics/persistent_histogram_allocator.h"
13 #include "base/metrics/persistent_memory_allocator.h" 13 #include "base/metrics/persistent_memory_allocator.h"
14 #include "base/metrics/sample_map.h" 14 #include "base/metrics/sample_map.h"
15 #include "base/metrics/statistics_recorder.h" 15 #include "base/metrics/statistics_recorder.h"
16 #include "base/pickle.h" 16 #include "base/pickle.h"
17 #include "base/strings/stringprintf.h" 17 #include "base/strings/stringprintf.h"
18 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
19 19
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 kAllocatorMemorySize, 0, "SparseHistogramAllocatorTest"); 66 kAllocatorMemorySize, 0, "SparseHistogramAllocatorTest");
67 allocator_ = 67 allocator_ =
68 PersistentHistogramAllocator::GetGlobalAllocator()->memory_allocator(); 68 PersistentHistogramAllocator::GetGlobalAllocator()->memory_allocator();
69 } 69 }
70 70
71 void DestroyPersistentMemoryAllocator() { 71 void DestroyPersistentMemoryAllocator() {
72 allocator_ = nullptr; 72 allocator_ = nullptr;
73 PersistentHistogramAllocator::ReleaseGlobalAllocatorForTesting(); 73 PersistentHistogramAllocator::ReleaseGlobalAllocatorForTesting();
74 } 74 }
75 75
76 scoped_ptr<SparseHistogram> NewSparseHistogram(const std::string& name) { 76 std::unique_ptr<SparseHistogram> NewSparseHistogram(const std::string& name) {
77 return scoped_ptr<SparseHistogram>(new SparseHistogram(name)); 77 return std::unique_ptr<SparseHistogram>(new SparseHistogram(name));
78 } 78 }
79 79
80 const bool use_persistent_histogram_allocator_; 80 const bool use_persistent_histogram_allocator_;
81 81
82 StatisticsRecorder* statistics_recorder_; 82 StatisticsRecorder* statistics_recorder_;
83 scoped_ptr<char[]> allocator_memory_; 83 std::unique_ptr<char[]> allocator_memory_;
84 PersistentMemoryAllocator* allocator_ = nullptr; 84 PersistentMemoryAllocator* allocator_ = nullptr;
85 85
86 private: 86 private:
87 DISALLOW_COPY_AND_ASSIGN(SparseHistogramTest); 87 DISALLOW_COPY_AND_ASSIGN(SparseHistogramTest);
88 }; 88 };
89 89
90 // Run all HistogramTest cases with both heap and persistent memory. 90 // Run all HistogramTest cases with both heap and persistent memory.
91 INSTANTIATE_TEST_CASE_P(HeapAndPersistent, 91 INSTANTIATE_TEST_CASE_P(HeapAndPersistent,
92 SparseHistogramTest, 92 SparseHistogramTest,
93 testing::Bool()); 93 testing::Bool());
94 94
95 95
96 TEST_P(SparseHistogramTest, BasicTest) { 96 TEST_P(SparseHistogramTest, BasicTest) {
97 scoped_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse")); 97 std::unique_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse"));
98 scoped_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples()); 98 std::unique_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples());
99 EXPECT_EQ(0, snapshot->TotalCount()); 99 EXPECT_EQ(0, snapshot->TotalCount());
100 EXPECT_EQ(0, snapshot->sum()); 100 EXPECT_EQ(0, snapshot->sum());
101 101
102 histogram->Add(100); 102 histogram->Add(100);
103 scoped_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples()); 103 std::unique_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples());
104 EXPECT_EQ(1, snapshot1->TotalCount()); 104 EXPECT_EQ(1, snapshot1->TotalCount());
105 EXPECT_EQ(1, snapshot1->GetCount(100)); 105 EXPECT_EQ(1, snapshot1->GetCount(100));
106 106
107 histogram->Add(100); 107 histogram->Add(100);
108 histogram->Add(101); 108 histogram->Add(101);
109 scoped_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples()); 109 std::unique_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples());
110 EXPECT_EQ(3, snapshot2->TotalCount()); 110 EXPECT_EQ(3, snapshot2->TotalCount());
111 EXPECT_EQ(2, snapshot2->GetCount(100)); 111 EXPECT_EQ(2, snapshot2->GetCount(100));
112 EXPECT_EQ(1, snapshot2->GetCount(101)); 112 EXPECT_EQ(1, snapshot2->GetCount(101));
113 } 113 }
114 114
115 TEST_P(SparseHistogramTest, BasicTestAddCount) { 115 TEST_P(SparseHistogramTest, BasicTestAddCount) {
116 scoped_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse")); 116 std::unique_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse"));
117 scoped_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples()); 117 std::unique_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples());
118 EXPECT_EQ(0, snapshot->TotalCount()); 118 EXPECT_EQ(0, snapshot->TotalCount());
119 EXPECT_EQ(0, snapshot->sum()); 119 EXPECT_EQ(0, snapshot->sum());
120 120
121 histogram->AddCount(100, 15); 121 histogram->AddCount(100, 15);
122 scoped_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples()); 122 std::unique_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples());
123 EXPECT_EQ(15, snapshot1->TotalCount()); 123 EXPECT_EQ(15, snapshot1->TotalCount());
124 EXPECT_EQ(15, snapshot1->GetCount(100)); 124 EXPECT_EQ(15, snapshot1->GetCount(100));
125 125
126 histogram->AddCount(100, 15); 126 histogram->AddCount(100, 15);
127 histogram->AddCount(101, 25); 127 histogram->AddCount(101, 25);
128 scoped_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples()); 128 std::unique_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples());
129 EXPECT_EQ(55, snapshot2->TotalCount()); 129 EXPECT_EQ(55, snapshot2->TotalCount());
130 EXPECT_EQ(30, snapshot2->GetCount(100)); 130 EXPECT_EQ(30, snapshot2->GetCount(100));
131 EXPECT_EQ(25, snapshot2->GetCount(101)); 131 EXPECT_EQ(25, snapshot2->GetCount(101));
132 } 132 }
133 133
134 TEST_P(SparseHistogramTest, AddCount_LargeValuesDontOverflow) { 134 TEST_P(SparseHistogramTest, AddCount_LargeValuesDontOverflow) {
135 scoped_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse")); 135 std::unique_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse"));
136 scoped_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples()); 136 std::unique_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples());
137 EXPECT_EQ(0, snapshot->TotalCount()); 137 EXPECT_EQ(0, snapshot->TotalCount());
138 EXPECT_EQ(0, snapshot->sum()); 138 EXPECT_EQ(0, snapshot->sum());
139 139
140 histogram->AddCount(1000000000, 15); 140 histogram->AddCount(1000000000, 15);
141 scoped_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples()); 141 std::unique_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples());
142 EXPECT_EQ(15, snapshot1->TotalCount()); 142 EXPECT_EQ(15, snapshot1->TotalCount());
143 EXPECT_EQ(15, snapshot1->GetCount(1000000000)); 143 EXPECT_EQ(15, snapshot1->GetCount(1000000000));
144 144
145 histogram->AddCount(1000000000, 15); 145 histogram->AddCount(1000000000, 15);
146 histogram->AddCount(1010000000, 25); 146 histogram->AddCount(1010000000, 25);
147 scoped_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples()); 147 std::unique_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples());
148 EXPECT_EQ(55, snapshot2->TotalCount()); 148 EXPECT_EQ(55, snapshot2->TotalCount());
149 EXPECT_EQ(30, snapshot2->GetCount(1000000000)); 149 EXPECT_EQ(30, snapshot2->GetCount(1000000000));
150 EXPECT_EQ(25, snapshot2->GetCount(1010000000)); 150 EXPECT_EQ(25, snapshot2->GetCount(1010000000));
151 EXPECT_EQ(55250000000LL, snapshot2->sum()); 151 EXPECT_EQ(55250000000LL, snapshot2->sum());
152 } 152 }
153 153
154 TEST_P(SparseHistogramTest, MacroBasicTest) { 154 TEST_P(SparseHistogramTest, MacroBasicTest) {
155 UMA_HISTOGRAM_SPARSE_SLOWLY("Sparse", 100); 155 UMA_HISTOGRAM_SPARSE_SLOWLY("Sparse", 100);
156 UMA_HISTOGRAM_SPARSE_SLOWLY("Sparse", 200); 156 UMA_HISTOGRAM_SPARSE_SLOWLY("Sparse", 200);
157 UMA_HISTOGRAM_SPARSE_SLOWLY("Sparse", 100); 157 UMA_HISTOGRAM_SPARSE_SLOWLY("Sparse", 100);
158 158
159 StatisticsRecorder::Histograms histograms; 159 StatisticsRecorder::Histograms histograms;
160 StatisticsRecorder::GetHistograms(&histograms); 160 StatisticsRecorder::GetHistograms(&histograms);
161 161
162 ASSERT_EQ(1U, histograms.size()); 162 ASSERT_EQ(1U, histograms.size());
163 HistogramBase* sparse_histogram = histograms[0]; 163 HistogramBase* sparse_histogram = histograms[0];
164 164
165 EXPECT_EQ(SPARSE_HISTOGRAM, sparse_histogram->GetHistogramType()); 165 EXPECT_EQ(SPARSE_HISTOGRAM, sparse_histogram->GetHistogramType());
166 EXPECT_EQ("Sparse", sparse_histogram->histogram_name()); 166 EXPECT_EQ("Sparse", sparse_histogram->histogram_name());
167 EXPECT_EQ( 167 EXPECT_EQ(
168 HistogramBase::kUmaTargetedHistogramFlag | 168 HistogramBase::kUmaTargetedHistogramFlag |
169 (use_persistent_histogram_allocator_ ? HistogramBase::kIsPersistent 169 (use_persistent_histogram_allocator_ ? HistogramBase::kIsPersistent
170 : 0), 170 : 0),
171 sparse_histogram->flags()); 171 sparse_histogram->flags());
172 172
173 scoped_ptr<HistogramSamples> samples = sparse_histogram->SnapshotSamples(); 173 std::unique_ptr<HistogramSamples> samples =
174 sparse_histogram->SnapshotSamples();
174 EXPECT_EQ(3, samples->TotalCount()); 175 EXPECT_EQ(3, samples->TotalCount());
175 EXPECT_EQ(2, samples->GetCount(100)); 176 EXPECT_EQ(2, samples->GetCount(100));
176 EXPECT_EQ(1, samples->GetCount(200)); 177 EXPECT_EQ(1, samples->GetCount(200));
177 } 178 }
178 179
179 TEST_P(SparseHistogramTest, MacroInLoopTest) { 180 TEST_P(SparseHistogramTest, MacroInLoopTest) {
180 // Unlike the macros in histogram.h, SparseHistogram macros can have a 181 // Unlike the macros in histogram.h, SparseHistogram macros can have a
181 // variable as histogram name. 182 // variable as histogram name.
182 for (int i = 0; i < 2; i++) { 183 for (int i = 0; i < 2; i++) {
183 std::string name = StringPrintf("Sparse%d", i + 1); 184 std::string name = StringPrintf("Sparse%d", i + 1);
184 UMA_HISTOGRAM_SPARSE_SLOWLY(name, 100); 185 UMA_HISTOGRAM_SPARSE_SLOWLY(name, 100);
185 } 186 }
186 187
187 StatisticsRecorder::Histograms histograms; 188 StatisticsRecorder::Histograms histograms;
188 StatisticsRecorder::GetHistograms(&histograms); 189 StatisticsRecorder::GetHistograms(&histograms);
189 ASSERT_EQ(2U, histograms.size()); 190 ASSERT_EQ(2U, histograms.size());
190 191
191 std::string name1 = histograms[0]->histogram_name(); 192 std::string name1 = histograms[0]->histogram_name();
192 std::string name2 = histograms[1]->histogram_name(); 193 std::string name2 = histograms[1]->histogram_name();
193 EXPECT_TRUE(("Sparse1" == name1 && "Sparse2" == name2) || 194 EXPECT_TRUE(("Sparse1" == name1 && "Sparse2" == name2) ||
194 ("Sparse2" == name1 && "Sparse1" == name2)); 195 ("Sparse2" == name1 && "Sparse1" == name2));
195 } 196 }
196 197
197 TEST_P(SparseHistogramTest, Serialize) { 198 TEST_P(SparseHistogramTest, Serialize) {
198 scoped_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse")); 199 std::unique_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse"));
199 histogram->SetFlags(HistogramBase::kIPCSerializationSourceFlag); 200 histogram->SetFlags(HistogramBase::kIPCSerializationSourceFlag);
200 201
201 Pickle pickle; 202 Pickle pickle;
202 histogram->SerializeInfo(&pickle); 203 histogram->SerializeInfo(&pickle);
203 204
204 PickleIterator iter(pickle); 205 PickleIterator iter(pickle);
205 206
206 int type; 207 int type;
207 EXPECT_TRUE(iter.ReadInt(&type)); 208 EXPECT_TRUE(iter.ReadInt(&type));
208 EXPECT_EQ(SPARSE_HISTOGRAM, type); 209 EXPECT_EQ(SPARSE_HISTOGRAM, type);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 TimeDelta add_ticks = TimeTicks::Now() - add_start; 274 TimeDelta add_ticks = TimeTicks::Now() - add_start;
274 int64_t add_ms = add_ticks.InMilliseconds(); 275 int64_t add_ms = add_ticks.InMilliseconds();
275 276
276 VLOG(1) << kTestAddCount << " histogram adds took " << add_ms 277 VLOG(1) << kTestAddCount << " histogram adds took " << add_ms
277 << "ms or about " 278 << "ms or about "
278 << (add_ms * 1000000) / kTestAddCount 279 << (add_ms * 1000000) / kTestAddCount
279 << "ns each."; 280 << "ns each.";
280 } 281 }
281 282
282 } // namespace base 283 } // namespace base
OLDNEW
« no previous file with comments | « base/metrics/sparse_histogram.cc ('k') | base/metrics/statistics_recorder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698