Index: base/histogram_unittest.cc |
=================================================================== |
--- base/histogram_unittest.cc (revision 33932) |
+++ base/histogram_unittest.cc (working copy) |
@@ -19,11 +19,17 @@ |
// Check for basic syntax and use. |
TEST(HistogramTest, StartupShutdownTest) { |
// Try basic construction |
- Histogram histogram("TestHistogram", 1, 1000, 10); |
- Histogram histogram1("Test1Histogram", 1, 1000, 10); |
+ scoped_refptr<Histogram> histogram = |
+ Histogram::HistogramFactoryGet("TestHistogram", 1, 1000, 10); |
+ scoped_refptr<Histogram> histogram1 = |
+ Histogram::HistogramFactoryGet("Test1Histogram", 1, 1000, 10); |
- LinearHistogram linear_histogram("TestLinearHistogram", 1, 1000, 10); |
- LinearHistogram linear_histogram1("Test1LinearHistogram", 1, 1000, 10); |
+ scoped_refptr<Histogram> linear_histogram = |
+ LinearHistogram::LinearHistogramFactoryGet("TestLinearHistogram", 1, 1000, |
+ 10); |
+ scoped_refptr<Histogram> linear_histogram1 = |
+ LinearHistogram::LinearHistogramFactoryGet("Test1LinearHistogram", 1, |
+ 1000, 10); |
// Use standard macros (but with fixed samples) |
HISTOGRAM_TIMES("Test2Histogram", TimeDelta::FromDays(1)); |
@@ -57,17 +63,23 @@ |
EXPECT_EQ(0U, histograms.size()); |
// Try basic construction |
- Histogram histogram("TestHistogram", 1, 1000, 10); |
+ scoped_refptr<Histogram> histogram = |
+ Histogram::HistogramFactoryGet("TestHistogram", 1, 1000, 10); |
histograms.clear(); |
StatisticsRecorder::GetHistograms(&histograms); // Load up lists |
EXPECT_EQ(1U, histograms.size()); |
- Histogram histogram1("Test1Histogram", 1, 1000, 10); |
+ scoped_refptr<Histogram> histogram1 = |
+ Histogram::HistogramFactoryGet("Test1Histogram", 1, 1000, 10); |
histograms.clear(); |
StatisticsRecorder::GetHistograms(&histograms); // Load up lists |
EXPECT_EQ(2U, histograms.size()); |
- LinearHistogram linear_histogram("TestLinearHistogram", 1, 1000, 10); |
- LinearHistogram linear_histogram1("Test1LinearHistogram", 1, 1000, 10); |
+ scoped_refptr<Histogram> linear_histogram = |
+ LinearHistogram::LinearHistogramFactoryGet( |
+ "TestLinearHistogram", 1, 1000, 10); |
+ scoped_refptr<Histogram> linear_histogram1 = |
+ LinearHistogram::LinearHistogramFactoryGet( |
+ "Test1LinearHistogram", 1, 1000, 10); |
histograms.clear(); |
StatisticsRecorder::GetHistograms(&histograms); // Load up lists |
EXPECT_EQ(4U, histograms.size()); |
@@ -102,55 +114,62 @@ |
recorder.GetHistograms(&histograms); |
EXPECT_EQ(0U, histograms.size()); |
- Histogram histogram("Histogram", 1, 64, 8); // As mentioned in header file. |
+ scoped_refptr<Histogram> histogram = Histogram::HistogramFactoryGet( |
+ "Histogram", 1, 64, 8); // As mentioned in header file. |
// Check that we got a nice exponential when there was enough rooom. |
- EXPECT_EQ(0, histogram.ranges(0)); |
+ EXPECT_EQ(0, histogram->ranges(0)); |
int power_of_2 = 1; |
for (int i = 1; i < 8; i++) { |
- EXPECT_EQ(power_of_2, histogram.ranges(i)); |
+ EXPECT_EQ(power_of_2, histogram->ranges(i)); |
power_of_2 *= 2; |
} |
- EXPECT_EQ(INT_MAX, histogram.ranges(8)); |
+ EXPECT_EQ(INT_MAX, histogram->ranges(8)); |
- Histogram short_histogram("Histogram Shortened", 1, 7, 8); |
+ scoped_refptr<Histogram> short_histogram = |
+ Histogram::HistogramFactoryGet("Histogram Shortened", 1, 7, 8); |
// Check that when the number of buckets is short, we get a linear histogram |
// for lack of space to do otherwise. |
for (int i = 0; i < 8; i++) |
- EXPECT_EQ(i, short_histogram.ranges(i)); |
- EXPECT_EQ(INT_MAX, short_histogram.ranges(8)); |
+ EXPECT_EQ(i, short_histogram->ranges(i)); |
+ EXPECT_EQ(INT_MAX, short_histogram->ranges(8)); |
- LinearHistogram linear_histogram("Linear", 1, 7, 8); |
+ scoped_refptr<Histogram> linear_histogram = |
+ LinearHistogram::LinearHistogramFactoryGet("Linear", 1, 7, 8); |
// We also get a nice linear set of bucket ranges when we ask for it |
for (int i = 0; i < 8; i++) |
- EXPECT_EQ(i, linear_histogram.ranges(i)); |
- EXPECT_EQ(INT_MAX, linear_histogram.ranges(8)); |
+ EXPECT_EQ(i, linear_histogram->ranges(i)); |
+ EXPECT_EQ(INT_MAX, linear_histogram->ranges(8)); |
- LinearHistogram linear_broad_histogram("Linear widened", 2, 14, 8); |
+ scoped_refptr<Histogram> linear_broad_histogram = |
+ LinearHistogram::LinearHistogramFactoryGet( |
+ "Linear widened", 2, 14, 8); |
// ...but when the list has more space, then the ranges naturally spread out. |
for (int i = 0; i < 8; i++) |
- EXPECT_EQ(2 * i, linear_broad_histogram.ranges(i)); |
- EXPECT_EQ(INT_MAX, linear_broad_histogram.ranges(8)); |
+ EXPECT_EQ(2 * i, linear_broad_histogram->ranges(i)); |
+ EXPECT_EQ(INT_MAX, linear_broad_histogram->ranges(8)); |
- ThreadSafeHistogram threadsafe_histogram("ThreadSafe", 1, 32, 15); |
+ scoped_refptr<Histogram> threadsafe_histogram = |
+ ThreadSafeHistogram::ThreadSafeHistogramFactoryGet("ThreadSafe", 1, 32, |
+ 15); |
// When space is a little tight, we transition from linear to exponential. |
// This is what happens in both the basic histogram, and the threadsafe |
// variant (which is derived). |
- EXPECT_EQ(0, threadsafe_histogram.ranges(0)); |
- EXPECT_EQ(1, threadsafe_histogram.ranges(1)); |
- EXPECT_EQ(2, threadsafe_histogram.ranges(2)); |
- EXPECT_EQ(3, threadsafe_histogram.ranges(3)); |
- EXPECT_EQ(4, threadsafe_histogram.ranges(4)); |
- EXPECT_EQ(5, threadsafe_histogram.ranges(5)); |
- EXPECT_EQ(6, threadsafe_histogram.ranges(6)); |
- EXPECT_EQ(7, threadsafe_histogram.ranges(7)); |
- EXPECT_EQ(9, threadsafe_histogram.ranges(8)); |
- EXPECT_EQ(11, threadsafe_histogram.ranges(9)); |
- EXPECT_EQ(14, threadsafe_histogram.ranges(10)); |
- EXPECT_EQ(17, threadsafe_histogram.ranges(11)); |
- EXPECT_EQ(21, threadsafe_histogram.ranges(12)); |
- EXPECT_EQ(26, threadsafe_histogram.ranges(13)); |
- EXPECT_EQ(32, threadsafe_histogram.ranges(14)); |
- EXPECT_EQ(INT_MAX, threadsafe_histogram.ranges(15)); |
+ EXPECT_EQ(0, threadsafe_histogram->ranges(0)); |
+ EXPECT_EQ(1, threadsafe_histogram->ranges(1)); |
+ EXPECT_EQ(2, threadsafe_histogram->ranges(2)); |
+ EXPECT_EQ(3, threadsafe_histogram->ranges(3)); |
+ EXPECT_EQ(4, threadsafe_histogram->ranges(4)); |
+ EXPECT_EQ(5, threadsafe_histogram->ranges(5)); |
+ EXPECT_EQ(6, threadsafe_histogram->ranges(6)); |
+ EXPECT_EQ(7, threadsafe_histogram->ranges(7)); |
+ EXPECT_EQ(9, threadsafe_histogram->ranges(8)); |
+ EXPECT_EQ(11, threadsafe_histogram->ranges(9)); |
+ EXPECT_EQ(14, threadsafe_histogram->ranges(10)); |
+ EXPECT_EQ(17, threadsafe_histogram->ranges(11)); |
+ EXPECT_EQ(21, threadsafe_histogram->ranges(12)); |
+ EXPECT_EQ(26, threadsafe_histogram->ranges(13)); |
+ EXPECT_EQ(32, threadsafe_histogram->ranges(14)); |
+ EXPECT_EQ(INT_MAX, threadsafe_histogram->ranges(15)); |
recorder.GetHistograms(&histograms); |
EXPECT_EQ(5U, histograms.size()); |
@@ -159,21 +178,22 @@ |
// Make sure histogram handles out-of-bounds data gracefully. |
TEST(HistogramTest, BoundsTest) { |
const size_t kBucketCount = 50; |
- Histogram histogram("Bounded", 10, 100, kBucketCount); |
+ scoped_refptr<Histogram> histogram = Histogram::HistogramFactoryGet("Bounded", |
+ 10, 100, kBucketCount); |
// Put two samples "out of bounds" above and below. |
- histogram.Add(5); |
- histogram.Add(-50); |
+ histogram->Add(5); |
+ histogram->Add(-50); |
- histogram.Add(100); |
- histogram.Add(10000); |
+ histogram->Add(100); |
+ histogram->Add(10000); |
// Verify they landed in the underflow, and overflow buckets. |
Histogram::SampleSet sample; |
- histogram.SnapshotSample(&sample); |
+ histogram->SnapshotSample(&sample); |
EXPECT_EQ(2, sample.counts(0)); |
EXPECT_EQ(0, sample.counts(1)); |
- size_t array_size = histogram.bucket_count(); |
+ size_t array_size = histogram->bucket_count(); |
EXPECT_EQ(kBucketCount, array_size); |
EXPECT_EQ(0, sample.counts(array_size - 2)); |
EXPECT_EQ(2, sample.counts(array_size - 1)); |
@@ -181,31 +201,32 @@ |
// Check to be sure samples land as expected is "correct" buckets. |
TEST(HistogramTest, BucketPlacementTest) { |
- Histogram histogram("Histogram", 1, 64, 8); // As mentioned in header file. |
+ scoped_refptr<Histogram> histogram = Histogram::HistogramFactoryGet( |
+ "Histogram", 1, 64, 8); // As mentioned in header file. |
// Check that we got a nice exponential since there was enough rooom. |
- EXPECT_EQ(0, histogram.ranges(0)); |
+ EXPECT_EQ(0, histogram->ranges(0)); |
int power_of_2 = 1; |
for (int i = 1; i < 8; i++) { |
- EXPECT_EQ(power_of_2, histogram.ranges(i)); |
+ EXPECT_EQ(power_of_2, histogram->ranges(i)); |
power_of_2 *= 2; |
} |
- EXPECT_EQ(INT_MAX, histogram.ranges(8)); |
+ EXPECT_EQ(INT_MAX, histogram->ranges(8)); |
// Add i+1 samples to the i'th bucket. |
- histogram.Add(0); |
+ histogram->Add(0); |
power_of_2 = 1; |
for (int i = 1; i < 8; i++) { |
for (int j = 0; j <= i; j++) |
- histogram.Add(power_of_2); |
+ histogram->Add(power_of_2); |
power_of_2 *= 2; |
} |
// Leave overflow bucket empty. |
// Check to see that the bucket counts reflect our additions. |
Histogram::SampleSet sample; |
- histogram.SnapshotSample(&sample); |
- EXPECT_EQ(INT_MAX, histogram.ranges(8)); |
+ histogram->SnapshotSample(&sample); |
+ EXPECT_EQ(INT_MAX, histogram->ranges(8)); |
for (int i = 0; i < 8; i++) |
EXPECT_EQ(i + 1, sample.counts(i)); |
} |