diff options
author | kaiwang@chromium.org <kaiwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-20 02:56:18 +0000 |
---|---|---|
committer | kaiwang@chromium.org <kaiwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-20 02:56:18 +0000 |
commit | 877ef565f44adf4aca389d2a738d80f246947219 (patch) | |
tree | b90b8d68c43ee0573b767226775c08693c843a14 /base | |
parent | 1adefead3eb81b0fb5b3ca47a1e7ff3a1df8f352 (diff) | |
download | chromium_src-877ef565f44adf4aca389d2a738d80f246947219.zip chromium_src-877ef565f44adf4aca389d2a738d80f246947219.tar.gz chromium_src-877ef565f44adf4aca389d2a738d80f246947219.tar.bz2 |
Move SnapshotSamples to HistogramBase
BUG=139612
Review URL: https://chromiumcodereview.appspot.com/11192077
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@163138 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/metrics/histogram.cc | 17 | ||||
-rw-r--r-- | base/metrics/histogram.h | 10 | ||||
-rw-r--r-- | base/metrics/histogram_base.h | 5 | ||||
-rw-r--r-- | base/metrics/histogram_unittest.cc | 10 | ||||
-rw-r--r-- | base/metrics/sparse_histogram.cc | 5 | ||||
-rw-r--r-- | base/metrics/sparse_histogram.h | 5 | ||||
-rw-r--r-- | base/metrics/sparse_histogram_unittest.cc | 6 |
7 files changed, 36 insertions, 22 deletions
diff --git a/base/metrics/histogram.cc b/base/metrics/histogram.cc index 1c5470e..ec1afdd 100644 --- a/base/metrics/histogram.cc +++ b/base/metrics/histogram.cc @@ -17,6 +17,7 @@ #include "base/compiler_specific.h" #include "base/debug/alias.h" #include "base/logging.h" +#include "base/metrics/sample_vector.h" #include "base/metrics/statistics_recorder.h" #include "base/pickle.h" #include "base/string_util.h" @@ -366,10 +367,8 @@ size_t Histogram::bucket_count() const { return bucket_count_; } -scoped_ptr<SampleVector> Histogram::SnapshotSamples() const { - scoped_ptr<SampleVector> samples(new SampleVector(bucket_ranges())); - samples->Add(*samples_); - return samples.Pass(); +scoped_ptr<HistogramSamples> Histogram::SnapshotSamples() const { + return SnapshotSampleVector().PassAs<HistogramSamples>(); } bool Histogram::HasConstructionArguments(Sample minimum, @@ -464,12 +463,18 @@ const string Histogram::GetAsciiBucketRange(size_t i) const { //------------------------------------------------------------------------------ // Private methods +scoped_ptr<SampleVector> Histogram::SnapshotSampleVector() const { + scoped_ptr<SampleVector> samples(new SampleVector(bucket_ranges())); + samples->Add(*samples_); + return samples.Pass(); +} + void Histogram::WriteAsciiImpl(bool graph_it, const string& newline, string* output) const { // Get local (stack) copies of all effectively volatile class data so that we // are consistent across our output activities. - scoped_ptr<SampleVector> snapshot = SnapshotSamples(); + scoped_ptr<SampleVector> snapshot = SnapshotSampleVector(); Count sample_count = snapshot->TotalCount(); WriteAsciiHeader(*snapshot, sample_count, output); @@ -601,7 +606,7 @@ void Histogram::GetParameters(DictionaryValue* params) const { } void Histogram::GetCountAndBucketData(Count* count, ListValue* buckets) const { - scoped_ptr<SampleVector> snapshot = SnapshotSamples(); + scoped_ptr<SampleVector> snapshot = SnapshotSampleVector(); *count = snapshot->TotalCount(); size_t index = 0; for (size_t i = 0; i < bucket_count(); ++i) { diff --git a/base/metrics/histogram.h b/base/metrics/histogram.h index 338498d..f3007a2 100644 --- a/base/metrics/histogram.h +++ b/base/metrics/histogram.h @@ -72,7 +72,6 @@ #include "base/metrics/bucket_ranges.h" #include "base/metrics/histogram_base.h" #include "base/metrics/histogram_samples.h" -#include "base/metrics/sample_vector.h" #include "base/time.h" class Pickle; @@ -481,7 +480,7 @@ class BASE_EXPORT Histogram : public HistogramBase { // Snapshot the current complete set of sample data. // Override with atomic/locked snapshot if needed. - virtual scoped_ptr<SampleVector> SnapshotSamples() const; + virtual scoped_ptr<HistogramSamples> SnapshotSamples() const OVERRIDE; virtual bool HasConstructionArguments(Sample minimum, Sample maximum, @@ -527,14 +526,17 @@ class BASE_EXPORT Histogram : public HistogramBase { private: // Allow tests to corrupt our innards for testing purposes. + FRIEND_TEST_ALL_PREFIXES(HistogramTest, BoundsTest); + FRIEND_TEST_ALL_PREFIXES(HistogramTest, BucketPlacementTest); FRIEND_TEST_ALL_PREFIXES(HistogramTest, CorruptBucketBounds); FRIEND_TEST_ALL_PREFIXES(HistogramTest, CorruptSampleCounts); - FRIEND_TEST_ALL_PREFIXES(HistogramTest, Crc32SampleHash); - FRIEND_TEST_ALL_PREFIXES(HistogramTest, Crc32TableTest); friend class StatisticsRecorder; // To allow it to delete duplicates. friend class StatisticsRecorderTest; + // Implementation of SnapshotSamples function. + scoped_ptr<SampleVector> SnapshotSampleVector() const; + //---------------------------------------------------------------------------- // Helpers for emitting Ascii graphic. Each method appends data to output. diff --git a/base/metrics/histogram_base.h b/base/metrics/histogram_base.h index 44cc239..211606a 100644 --- a/base/metrics/histogram_base.h +++ b/base/metrics/histogram_base.h @@ -9,12 +9,15 @@ #include "base/base_export.h" #include "base/basictypes.h" +#include "base/memory/scoped_ptr.h" namespace base { class DictionaryValue; class ListValue; +class HistogramSamples; + class BASE_EXPORT HistogramBase { public: typedef int Sample; // Used for samples. @@ -50,6 +53,8 @@ class BASE_EXPORT HistogramBase { virtual void Add(Sample value) = 0; + virtual scoped_ptr<HistogramSamples> SnapshotSamples() const = 0; + // The following methods provide graphical histogram displays. virtual void WriteHTMLGraph(std::string* output) const = 0; virtual void WriteAscii(std::string* output) const = 0; diff --git a/base/metrics/histogram_unittest.cc b/base/metrics/histogram_unittest.cc index f016487..99f75a5 100644 --- a/base/metrics/histogram_unittest.cc +++ b/base/metrics/histogram_unittest.cc @@ -208,7 +208,7 @@ TEST(HistogramTest, BoundsTest) { histogram->Add(10000); // Verify they landed in the underflow, and overflow buckets. - scoped_ptr<SampleVector> samples = histogram->SnapshotSamples(); + scoped_ptr<SampleVector> samples = histogram->SnapshotSampleVector(); EXPECT_EQ(2, samples->GetCountAtIndex(0)); EXPECT_EQ(0, samples->GetCountAtIndex(1)); size_t array_size = histogram->bucket_count(); @@ -232,7 +232,7 @@ TEST(HistogramTest, BoundsTest) { // Verify they landed in the underflow, and overflow buckets. scoped_ptr<SampleVector> custom_samples = - test_custom_histogram->SnapshotSamples(); + test_custom_histogram->SnapshotSampleVector(); EXPECT_EQ(2, custom_samples->GetCountAtIndex(0)); EXPECT_EQ(0, custom_samples->GetCountAtIndex(1)); size_t bucket_count = test_custom_histogram->bucket_count(); @@ -255,7 +255,7 @@ TEST(HistogramTest, BucketPlacementTest) { } // Check to see that the bucket counts reflect our additions. - scoped_ptr<SampleVector> samples = histogram->SnapshotSamples(); + scoped_ptr<SampleVector> samples = histogram->SnapshotSampleVector(); for (int i = 0; i < 8; i++) EXPECT_EQ(i + 1, samples->GetCountAtIndex(i)); } @@ -268,7 +268,7 @@ TEST(HistogramTest, CorruptSampleCounts) { histogram->Add(20); histogram->Add(40); - scoped_ptr<SampleVector> snapshot = histogram->SnapshotSamples(); + scoped_ptr<SampleVector> snapshot = histogram->SnapshotSampleVector(); EXPECT_EQ(Histogram::NO_INCONSISTENCIES, histogram->FindCorruption(*snapshot)); EXPECT_EQ(2, snapshot->redundant_count()); @@ -291,7 +291,7 @@ TEST(HistogramTest, CorruptBucketBounds) { Histogram* histogram(Histogram::FactoryGet( "Histogram", 1, 64, 8, Histogram::kNoFlags)); // As per header file. - scoped_ptr<SampleVector> snapshot = histogram->SnapshotSamples(); + scoped_ptr<SampleVector> snapshot = histogram->SnapshotSampleVector(); EXPECT_EQ(Histogram::NO_INCONSISTENCIES, histogram->FindCorruption(*snapshot)); diff --git a/base/metrics/sparse_histogram.cc b/base/metrics/sparse_histogram.cc index 236a19e..bb9061c 100644 --- a/base/metrics/sparse_histogram.cc +++ b/base/metrics/sparse_histogram.cc @@ -4,6 +4,7 @@ #include "base/metrics/sparse_histogram.h" +#include "base/metrics/sample_map.h" #include "base/metrics/statistics_recorder.h" #include "base/synchronization/lock.h" @@ -31,7 +32,7 @@ void SparseHistogram::Add(Sample value) { redundant_count_ += 1; } -scoped_ptr<SampleMap> SparseHistogram::SnapshotSamples() const { +scoped_ptr<HistogramSamples> SparseHistogram::SnapshotSamples() const { scoped_ptr<SampleMap> snapshot(new SampleMap()); base::AutoLock auto_lock(lock_); @@ -41,7 +42,7 @@ scoped_ptr<SampleMap> SparseHistogram::SnapshotSamples() const { snapshot->Accumulate(it->first, it->second); } snapshot->ResetRedundantCount(redundant_count_); - return snapshot.Pass(); + return snapshot.PassAs<HistogramSamples>(); } void SparseHistogram::WriteHTMLGraph(string* output) const { diff --git a/base/metrics/sparse_histogram.h b/base/metrics/sparse_histogram.h index 3c39b13..d209fd8 100644 --- a/base/metrics/sparse_histogram.h +++ b/base/metrics/sparse_histogram.h @@ -13,11 +13,12 @@ #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" #include "base/metrics/histogram_base.h" -#include "base/metrics/sample_map.h" #include "base/synchronization/lock.h" namespace base { +class HistogramSamples; + class BASE_EXPORT_PRIVATE SparseHistogram : public HistogramBase { public: // If there's one with same name, return the existing one. If not, create a @@ -31,7 +32,7 @@ class BASE_EXPORT_PRIVATE SparseHistogram : public HistogramBase { virtual void WriteHTMLGraph(std::string* output) const OVERRIDE; virtual void WriteAscii(std::string* output) const OVERRIDE; - virtual scoped_ptr<SampleMap> SnapshotSamples() const; + virtual scoped_ptr<HistogramSamples> SnapshotSamples() const OVERRIDE; private: // Clients should always use FactoryGet to create SparseHistogram. diff --git a/base/metrics/sparse_histogram_unittest.cc b/base/metrics/sparse_histogram_unittest.cc index 2fe614f..b4eb8fd 100644 --- a/base/metrics/sparse_histogram_unittest.cc +++ b/base/metrics/sparse_histogram_unittest.cc @@ -20,18 +20,18 @@ class SparseHistogramTest : public testing::Test { TEST_F(SparseHistogramTest, BasicTest) { scoped_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse1")); - scoped_ptr<SampleMap> snapshot(histogram->SnapshotSamples()); + scoped_ptr<HistogramSamples> snapshot(histogram->SnapshotSamples()); EXPECT_EQ(0, snapshot->TotalCount()); EXPECT_EQ(0, snapshot->sum()); histogram->Add(100); - scoped_ptr<SampleMap> snapshot1(histogram->SnapshotSamples()); + scoped_ptr<HistogramSamples> snapshot1(histogram->SnapshotSamples()); EXPECT_EQ(1, snapshot1->TotalCount()); EXPECT_EQ(1, snapshot1->GetCount(100)); histogram->Add(100); histogram->Add(101); - scoped_ptr<SampleMap> snapshot2(histogram->SnapshotSamples()); + scoped_ptr<HistogramSamples> snapshot2(histogram->SnapshotSamples()); EXPECT_EQ(3, snapshot2->TotalCount()); EXPECT_EQ(2, snapshot2->GetCount(100)); EXPECT_EQ(1, snapshot2->GetCount(101)); |