1b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// Use of this source code is governed by a BSD-style license that can be 3b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat// found in the LICENSE file. 4b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 5b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include <vector> 6b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 7b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "base/metrics/histogram.h" 8b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "base/metrics/histogram_base.h" 9b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "base/metrics/sparse_histogram.h" 10b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "base/metrics/statistics_recorder.h" 11b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "base/pickle.h" 12b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat#include "testing/gtest/include/gtest/gtest.h" 13b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 14b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratnamespace base { 15b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 16b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Eratclass HistogramBaseTest : public testing::Test { 17b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat protected: 18b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBaseTest() { 19b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat // Each test will have a clean state (no Histogram / BucketRanges 20b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat // registered). 21b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ResetStatisticsRecorder(); 22b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat } 23b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 2445779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko ~HistogramBaseTest() override { 2545779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko HistogramBase::report_histogram_ = nullptr; 2645779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko } 27b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 28b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat void ResetStatisticsRecorder() { 2945779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko // It is necessary to fully destruct any existing StatisticsRecorder 3045779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko // before creating a new one. 3145779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko statistics_recorder_.reset(); 320c4f26a46430b8c503c65f5cae1d2b6876d53e30Luis Hector Chavez statistics_recorder_ = StatisticsRecorder::CreateTemporaryForTesting(); 3345779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko } 3445779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko 3545779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko HistogramBase* GetCreationReportHistogram(const std::string& name) { 3645779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko HistogramBase::EnableActivityReportHistogram(name); 3745779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko return HistogramBase::report_histogram_; 38b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat } 39b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 40b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat private: 4194ffa55491333f3dcc701befd0d2652922916d99Luis Hector Chavez std::unique_ptr<StatisticsRecorder> statistics_recorder_; 4245779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko 4345779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko DISALLOW_COPY_AND_ASSIGN(HistogramBaseTest); 44b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat}; 45b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 46b8cf94937c52feb53b55c39e3f82094d27de464cDaniel EratTEST_F(HistogramBaseTest, DeserializeHistogram) { 47b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBase* histogram = Histogram::FactoryGet( 48b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat "TestHistogram", 1, 1000, 10, 49b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat (HistogramBase::kUmaTargetedHistogramFlag | 50b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBase::kIPCSerializationSourceFlag)); 51b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 52b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat Pickle pickle; 53b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ASSERT_TRUE(histogram->SerializeInfo(&pickle)); 54b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 55b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat PickleIterator iter(pickle); 56b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBase* deserialized = DeserializeHistogramInfo(&iter); 57b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ(histogram, deserialized); 58b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 59b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ResetStatisticsRecorder(); 60b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 61b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat PickleIterator iter2(pickle); 62b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat deserialized = DeserializeHistogramInfo(&iter2); 63b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_TRUE(deserialized); 64b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_NE(histogram, deserialized); 65b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ("TestHistogram", deserialized->histogram_name()); 66b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_TRUE(deserialized->HasConstructionArguments(1, 1000, 10)); 67b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 68b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat // kIPCSerializationSourceFlag will be cleared. 69b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ(HistogramBase::kUmaTargetedHistogramFlag, deserialized->flags()); 70b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat} 71b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 72b8cf94937c52feb53b55c39e3f82094d27de464cDaniel EratTEST_F(HistogramBaseTest, DeserializeLinearHistogram) { 73b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBase* histogram = LinearHistogram::FactoryGet( 74b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat "TestHistogram", 1, 1000, 10, 75b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBase::kIPCSerializationSourceFlag); 76b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 77b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat Pickle pickle; 78b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ASSERT_TRUE(histogram->SerializeInfo(&pickle)); 79b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 80b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat PickleIterator iter(pickle); 81b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBase* deserialized = DeserializeHistogramInfo(&iter); 82b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ(histogram, deserialized); 83b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 84b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ResetStatisticsRecorder(); 85b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 86b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat PickleIterator iter2(pickle); 87b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat deserialized = DeserializeHistogramInfo(&iter2); 88b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_TRUE(deserialized); 89b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_NE(histogram, deserialized); 90b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ("TestHistogram", deserialized->histogram_name()); 91b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_TRUE(deserialized->HasConstructionArguments(1, 1000, 10)); 92b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ(0, deserialized->flags()); 93b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat} 94b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 95b8cf94937c52feb53b55c39e3f82094d27de464cDaniel EratTEST_F(HistogramBaseTest, DeserializeBooleanHistogram) { 96b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBase* histogram = BooleanHistogram::FactoryGet( 97b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat "TestHistogram", HistogramBase::kIPCSerializationSourceFlag); 98b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 99b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat Pickle pickle; 100b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ASSERT_TRUE(histogram->SerializeInfo(&pickle)); 101b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 102b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat PickleIterator iter(pickle); 103b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBase* deserialized = DeserializeHistogramInfo(&iter); 104b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ(histogram, deserialized); 105b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 106b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ResetStatisticsRecorder(); 107b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 108b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat PickleIterator iter2(pickle); 109b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat deserialized = DeserializeHistogramInfo(&iter2); 110b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_TRUE(deserialized); 111b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_NE(histogram, deserialized); 112b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ("TestHistogram", deserialized->histogram_name()); 113b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_TRUE(deserialized->HasConstructionArguments(1, 2, 3)); 114b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ(0, deserialized->flags()); 115b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat} 116b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 117b8cf94937c52feb53b55c39e3f82094d27de464cDaniel EratTEST_F(HistogramBaseTest, DeserializeCustomHistogram) { 118b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat std::vector<HistogramBase::Sample> ranges; 119b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ranges.push_back(13); 120b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ranges.push_back(5); 121b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ranges.push_back(9); 122b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 123b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBase* histogram = CustomHistogram::FactoryGet( 124b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat "TestHistogram", ranges, HistogramBase::kIPCSerializationSourceFlag); 125b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 126b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat Pickle pickle; 127b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ASSERT_TRUE(histogram->SerializeInfo(&pickle)); 128b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 129b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat PickleIterator iter(pickle); 130b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBase* deserialized = DeserializeHistogramInfo(&iter); 131b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ(histogram, deserialized); 132b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 133b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ResetStatisticsRecorder(); 134b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 135b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat PickleIterator iter2(pickle); 136b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat deserialized = DeserializeHistogramInfo(&iter2); 137b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_TRUE(deserialized); 138b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_NE(histogram, deserialized); 139b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ("TestHistogram", deserialized->histogram_name()); 140b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_TRUE(deserialized->HasConstructionArguments(5, 13, 4)); 141b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ(0, deserialized->flags()); 142b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat} 143b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 144b8cf94937c52feb53b55c39e3f82094d27de464cDaniel EratTEST_F(HistogramBaseTest, DeserializeSparseHistogram) { 145b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBase* histogram = SparseHistogram::FactoryGet( 146b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat "TestHistogram", HistogramBase::kIPCSerializationSourceFlag); 147b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 148b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat Pickle pickle; 149b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ASSERT_TRUE(histogram->SerializeInfo(&pickle)); 150b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 151b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat PickleIterator iter(pickle); 152b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat HistogramBase* deserialized = DeserializeHistogramInfo(&iter); 153b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ(histogram, deserialized); 154b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 155b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat ResetStatisticsRecorder(); 156b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 157b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat PickleIterator iter2(pickle); 158b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat deserialized = DeserializeHistogramInfo(&iter2); 159b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_TRUE(deserialized); 160b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_NE(histogram, deserialized); 161b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ("TestHistogram", deserialized->histogram_name()); 162b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat EXPECT_EQ(0, deserialized->flags()); 163b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat} 164b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat 16545779228f8c9e40851cfd23f727e2bd8ffdd4714Alex VakulenkoTEST_F(HistogramBaseTest, CreationReportHistogram) { 16645779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko // Enabled creation report. Itself is not included in the report. 16745779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko HistogramBase* report = GetCreationReportHistogram("CreationReportTest"); 16845779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko ASSERT_TRUE(report); 16945779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko 17045779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko std::vector<HistogramBase::Sample> ranges; 17145779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko ranges.push_back(1); 17245779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko ranges.push_back(2); 17345779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko ranges.push_back(4); 17445779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko ranges.push_back(8); 17545779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko ranges.push_back(10); 17645779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko 17745779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko // Create all histogram types and verify counts. 17845779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko Histogram::FactoryGet("CRH-Histogram", 1, 10, 5, 0); 17945779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko LinearHistogram::FactoryGet("CRH-Linear", 1, 10, 5, 0); 18045779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko BooleanHistogram::FactoryGet("CRH-Boolean", 0); 18145779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko CustomHistogram::FactoryGet("CRH-Custom", ranges, 0); 18245779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko SparseHistogram::FactoryGet("CRH-Sparse", 0); 18345779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko 18494ffa55491333f3dcc701befd0d2652922916d99Luis Hector Chavez std::unique_ptr<HistogramSamples> samples = report->SnapshotSamples(); 18545779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_CREATED)); 18645779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(5, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_CREATED)); 18745779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(0, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_LOOKUP)); 18845779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_TYPE_LOGARITHMIC)); 18945779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_TYPE_LINEAR)); 19045779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_TYPE_BOOLEAN)); 19145779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_TYPE_CUSTOM)); 19245779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_TYPE_SPARSE)); 19345779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko 19445779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko // Create all flag types and verify counts. 19545779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko Histogram::FactoryGet("CRH-Histogram-UMA-Targeted", 1, 10, 5, 19645779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko HistogramBase::kUmaTargetedHistogramFlag); 19745779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko Histogram::FactoryGet("CRH-Histogram-UMA-Stability", 1, 10, 5, 19845779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko HistogramBase::kUmaStabilityHistogramFlag); 19945779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko SparseHistogram::FactoryGet("CRH-Sparse-UMA-Targeted", 20045779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko HistogramBase::kUmaTargetedHistogramFlag); 20145779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko SparseHistogram::FactoryGet("CRH-Sparse-UMA-Stability", 20245779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko HistogramBase::kUmaStabilityHistogramFlag); 20345779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko samples = report->SnapshotSamples(); 20445779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_CREATED)); 20545779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(9, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_CREATED)); 20645779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(0, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_LOOKUP)); 20745779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(2, samples->GetCount(HISTOGRAM_REPORT_FLAG_UMA_TARGETED)); 20845779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(2, samples->GetCount(HISTOGRAM_REPORT_FLAG_UMA_STABILITY)); 20945779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko 21045779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko // Do lookup of existing histograms and verify counts. 21145779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko Histogram::FactoryGet("CRH-Histogram", 1, 10, 5, 0); 21245779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko LinearHistogram::FactoryGet("CRH-Linear", 1, 10, 5, 0); 21345779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko BooleanHistogram::FactoryGet("CRH-Boolean", 0); 21445779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko CustomHistogram::FactoryGet("CRH-Custom", ranges, 0); 21545779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko SparseHistogram::FactoryGet("CRH-Sparse", 0); 21645779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko samples = report->SnapshotSamples(); 21745779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(1, samples->GetCount(HISTOGRAM_REPORT_CREATED)); 21845779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(9, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_CREATED)); 21945779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko EXPECT_EQ(5, samples->GetCount(HISTOGRAM_REPORT_HISTOGRAM_LOOKUP)); 22045779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko} 22145779228f8c9e40851cfd23f727e2bd8ffdd4714Alex Vakulenko 222b8cf94937c52feb53b55c39e3f82094d27de464cDaniel Erat} // namespace base 223