Index: chrome/test/base/uma_histogram_helper.cc |
diff --git a/chrome/test/base/uma_histogram_helper.cc b/chrome/test/base/uma_histogram_helper.cc |
index 9b5122974bb6cc4ede50a82bc235d7b83f0a3c45..8d220c0a4b4bc59b16e24f2351c82ac0388187e8 100644 |
--- a/chrome/test/base/uma_histogram_helper.cc |
+++ b/chrome/test/base/uma_histogram_helper.cc |
@@ -11,6 +11,27 @@ |
#include "content/public/browser/histogram_fetcher.h" |
UMAHistogramHelper::UMAHistogramHelper() { |
+ base::StatisticsRecorder::Initialize(); |
+} |
+ |
+UMAHistogramHelper::~UMAHistogramHelper() { |
+} |
+ |
+void UMAHistogramHelper::PrepareSnapshot(const char* const histogram_names[], |
+ size_t num_histograms) { |
+ for (size_t i = 0; i < num_histograms; ++i) { |
+ std::string histogram_name = histogram_names[i]; |
+ |
+ base::HistogramBase* histogram = |
+ base::StatisticsRecorder::FindHistogram(histogram_name); |
+ // If there is no histogram present, then don't record a snapshot. The logic |
+ // in the Expect* methods will act to treat no histogram equivalent to |
+ // samples with zeros. |
+ if (histogram) { |
+ histogram_snapshots[histogram_name] = linked_ptr<base::HistogramSamples>( |
Alexei Svitkine (slow)
2014/06/16 19:30:26
Nit: make_linked_ptr and wrap after the =
Mike Lerman
2014/06/16 19:55:45
Done.
|
+ histogram->SnapshotSamples().release()); |
+ } |
+ } |
} |
void UMAHistogramHelper::Fetch() { |
@@ -82,18 +103,25 @@ void UMAHistogramHelper::CheckBucketCount( |
base::HistogramBase::Sample sample, |
base::HistogramBase::Count expected_count, |
base::HistogramSamples& samples) { |
- EXPECT_EQ(expected_count, samples.GetCount(sample)) |
+ int actual_count = samples.GetCount(sample); |
+ if (histogram_snapshots.count(name)) |
+ actual_count -= histogram_snapshots[name]->GetCount(sample); |
+ EXPECT_EQ(expected_count, actual_count) |
<< "Histogram \"" << name |
<< "\" does not have the right number of samples (" << expected_count |
- << ") in the expected bucket (" << sample << ")."; |
+ << ") in the expected bucket (" << sample << "). It has (" << actual_count |
+ << ")."; |
} |
void UMAHistogramHelper::CheckTotalCount( |
const std::string& name, |
base::HistogramBase::Count expected_count, |
base::HistogramSamples& samples) { |
- EXPECT_EQ(expected_count, samples.TotalCount()) |
+ int actual_count = samples.TotalCount(); |
+ if (histogram_snapshots.count(name)) |
+ actual_count -= histogram_snapshots[name]->TotalCount(); |
+ EXPECT_EQ(expected_count, actual_count) |
<< "Histogram \"" << name |
<< "\" does not have the right total number of samples (" |
- << expected_count << ")."; |
+ << expected_count << "). It has (" << actual_count << ")."; |
} |