| Index: base/metrics/histogram_base_unittest.cc
|
| diff --git a/base/metrics/histogram_base_unittest.cc b/base/metrics/histogram_base_unittest.cc
|
| index 2d6b6df0288850cab31362762957070201ca72e3..6b41597b4a10a489b35bbf10c92d73fc1a4962cb 100644
|
| --- a/base/metrics/histogram_base_unittest.cc
|
| +++ b/base/metrics/histogram_base_unittest.cc
|
| @@ -18,19 +18,29 @@ class HistogramBaseTest : public testing::Test {
|
| HistogramBaseTest() {
|
| // Each test will have a clean state (no Histogram / BucketRanges
|
| // registered).
|
| - statistics_recorder_ = NULL;
|
| ResetStatisticsRecorder();
|
| }
|
|
|
| - ~HistogramBaseTest() override { delete statistics_recorder_; }
|
| + ~HistogramBaseTest() override {
|
| + HistogramBase::report_histogram_ = nullptr;
|
| + }
|
|
|
| void ResetStatisticsRecorder() {
|
| - delete statistics_recorder_;
|
| - statistics_recorder_ = new StatisticsRecorder();
|
| + // It is necessary to fully destruct any existing StatisticsRecorder
|
| + // before creating a new one.
|
| + statistics_recorder_.reset();
|
| + statistics_recorder_.reset(new StatisticsRecorder());
|
| + }
|
| +
|
| + HistogramBase* GetCreationReportHistogram(const std::string& name) {
|
| + HistogramBase::EnableActivityReportHistogram(name);
|
| + return HistogramBase::report_histogram_;
|
| }
|
|
|
| private:
|
| - StatisticsRecorder* statistics_recorder_;
|
| + scoped_ptr<StatisticsRecorder> statistics_recorder_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(HistogramBaseTest);
|
| };
|
|
|
| TEST_F(HistogramBaseTest, DeserializeHistogram) {
|
| @@ -152,4 +162,61 @@ TEST_F(HistogramBaseTest, DeserializeSparseHistogram) {
|
| EXPECT_EQ(0, deserialized->flags());
|
| }
|
|
|
| +TEST_F(HistogramBaseTest, CreationReportHistogram) {
|
| + // Enabled creation report. Itself is not included in the report.
|
| + HistogramBase* report = GetCreationReportHistogram("CreationReportTest");
|
| + ASSERT_TRUE(report);
|
| +
|
| + std::vector<HistogramBase::Sample> ranges;
|
| + ranges.push_back(1);
|
| + ranges.push_back(2);
|
| + ranges.push_back(4);
|
| + ranges.push_back(8);
|
| + ranges.push_back(10);
|
| +
|
| + // Create all histogram types and verify counts.
|
| + Histogram::FactoryGet("CRH-Histogram", 1, 10, 5, 0);
|
| + LinearHistogram::FactoryGet("CRH-Linear", 1, 10, 5, 0);
|
| + BooleanHistogram::FactoryGet("CRH-Boolean", 0);
|
| + CustomHistogram::FactoryGet("CRH-Custom", ranges, 0);
|
| + SparseHistogram::FactoryGet("CRH-Sparse", 0);
|
| +
|
| + scoped_ptr<HistogramSamples> samples = report->SnapshotSamples();
|
| + EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_CREATED));
|
| + EXPECT_EQ(5, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_CREATED));
|
| + EXPECT_EQ(0, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_LOOKUP));
|
| + EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_TYPE_LOGARITHMIC));
|
| + EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_TYPE_LINEAR));
|
| + EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_TYPE_BOOLEAN));
|
| + EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_TYPE_CUSTOM));
|
| + EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_TYPE_SPARSE));
|
| +
|
| + // Create all flag types and verify counts.
|
| + Histogram::FactoryGet("CRH-Histogram-UMA-Targeted", 1, 10, 5,
|
| + HistogramBase::kUmaTargetedHistogramFlag);
|
| + Histogram::FactoryGet("CRH-Histogram-UMA-Stability", 1, 10, 5,
|
| + HistogramBase::kUmaStabilityHistogramFlag);
|
| + SparseHistogram::FactoryGet("CRH-Sparse-UMA-Targeted",
|
| + HistogramBase::kUmaTargetedHistogramFlag);
|
| + SparseHistogram::FactoryGet("CRH-Sparse-UMA-Stability",
|
| + HistogramBase::kUmaStabilityHistogramFlag);
|
| + samples = report->SnapshotSamples();
|
| + EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_CREATED));
|
| + EXPECT_EQ(9, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_CREATED));
|
| + EXPECT_EQ(0, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_LOOKUP));
|
| + EXPECT_EQ(2, samples->GetCount(HISTOGRAM_REPORT_FLAG_UMA_TARGETED));
|
| + EXPECT_EQ(2, samples->GetCount(HISTOGRAM_REPORT_FLAG_UMA_STABILITY));
|
| +
|
| + // Do lookup of existing histograms and verify counts.
|
| + Histogram::FactoryGet("CRH-Histogram", 1, 10, 5, 0);
|
| + LinearHistogram::FactoryGet("CRH-Linear", 1, 10, 5, 0);
|
| + BooleanHistogram::FactoryGet("CRH-Boolean", 0);
|
| + CustomHistogram::FactoryGet("CRH-Custom", ranges, 0);
|
| + SparseHistogram::FactoryGet("CRH-Sparse", 0);
|
| + samples = report->SnapshotSamples();
|
| + EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_CREATED));
|
| + EXPECT_EQ(9, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_CREATED));
|
| + EXPECT_EQ(5, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_LOOKUP));
|
| +}
|
| +
|
| } // namespace base
|
|
|