Chromium Code Reviews| Index: net/url_request/url_request_throttler_unittest.cc |
| diff --git a/net/url_request/url_request_throttler_unittest.cc b/net/url_request/url_request_throttler_unittest.cc |
| index b964b10855101e1943d5240f1f0353911f31a8e4..52b3a0ab750a16937af11f01d47a2c122fc457fe 100644 |
| --- a/net/url_request/url_request_throttler_unittest.cc |
| +++ b/net/url_request/url_request_throttler_unittest.cc |
| @@ -5,13 +5,12 @@ |
| #include "net/url_request/url_request_throttler_manager.h" |
| #include "base/memory/scoped_ptr.h" |
| -#include "base/metrics/histogram.h" |
| #include "base/metrics/histogram_samples.h" |
| -#include "base/metrics/statistics_recorder.h" |
| #include "base/pickle.h" |
| #include "base/stl_util.h" |
| #include "base/strings/string_number_conversions.h" |
| #include "base/strings/stringprintf.h" |
| +#include "base/test/histogram_recorder.h" |
| #include "base/time/time.h" |
| #include "net/base/load_flags.h" |
| #include "net/base/request_priority.h" |
| @@ -29,10 +28,7 @@ namespace net { |
| namespace { |
| -using base::Histogram; |
| -using base::HistogramBase; |
| -using base::HistogramSamples; |
| -using base::StatisticsRecorder; |
| +const char kRequestThrottledHistogramName[] = "Throttling.RequestThrottled"; |
| class MockURLRequestThrottlerEntry : public URLRequestThrottlerEntry { |
| public: |
| @@ -176,32 +172,22 @@ class URLRequestThrottlerEntryTest : public testing::Test { |
| URLRequestThrottlerEntryTest() |
| : request_(GURL(), DEFAULT_PRIORITY, NULL, &context_) {} |
| - virtual void SetUp(); |
| - virtual void TearDown(); |
| + static void SetUpTestCase() { |
| + base::HistogramRecorder::Initialize(); |
| + } |
| - // After calling this function, histogram snapshots in |samples_| contain |
| - // only the delta caused by the test case currently running. |
| - void CalculateHistogramDeltas(); |
| + virtual void SetUp(); |
| TimeTicks now_; |
| MockURLRequestThrottlerManager manager_; // Dummy object, not used. |
| scoped_refptr<MockURLRequestThrottlerEntry> entry_; |
| - std::map<std::string, HistogramSamples*> original_samples_; |
| - std::map<std::string, HistogramSamples*> samples_; |
| + scoped_ptr<base::HistogramRecorder> histogram_recorder_; |
|
ppi
2013/12/23 16:37:48
I'd drop it and just create an instance in test wh
lpromero
2013/12/23 17:22:54
Done.
|
| TestURLRequestContext context_; |
| TestURLRequest request_; |
| }; |
| -// List of all histograms we care about in these unit tests. |
| -const char* kHistogramNames[] = { |
| - "Throttling.FailureCountAtSuccess", |
| - "Throttling.PerceivedDowntime", |
| - "Throttling.RequestThrottled", |
| - "Throttling.SiteOptedOut", |
| -}; |
| - |
| void URLRequestThrottlerEntryTest::SetUp() { |
| request_.SetLoadFlags(0); |
| @@ -209,43 +195,7 @@ void URLRequestThrottlerEntryTest::SetUp() { |
| entry_ = new MockURLRequestThrottlerEntry(&manager_); |
| entry_->ResetToBlank(now_); |
| - for (size_t i = 0; i < arraysize(kHistogramNames); ++i) { |
| - // Must retrieve original samples for each histogram for comparison |
| - // as other tests may affect them. |
| - const char* name = kHistogramNames[i]; |
| - HistogramBase* histogram = StatisticsRecorder::FindHistogram(name); |
| - if (histogram) { |
| - original_samples_[name] = histogram->SnapshotSamples().release(); |
| - } else { |
| - original_samples_[name] = NULL; |
| - } |
| - } |
| -} |
| - |
| -void URLRequestThrottlerEntryTest::TearDown() { |
| - STLDeleteValues(&original_samples_); |
| - STLDeleteValues(&samples_); |
| -} |
| - |
| -void URLRequestThrottlerEntryTest::CalculateHistogramDeltas() { |
| - for (size_t i = 0; i < arraysize(kHistogramNames); ++i) { |
| - const char* name = kHistogramNames[i]; |
| - HistogramSamples* original = original_samples_[name]; |
| - |
| - HistogramBase* histogram = StatisticsRecorder::FindHistogram(name); |
| - if (histogram) { |
| - ASSERT_EQ(HistogramBase::kUmaTargetedHistogramFlag, histogram->flags()); |
| - |
| - scoped_ptr<HistogramSamples> samples(histogram->SnapshotSamples()); |
| - if (original) |
| - samples->Subtract(*original); |
| - samples_[name] = samples.release(); |
| - } |
| - } |
| - |
| - // Ensure we don't accidentally use the originals in our tests. |
| - STLDeleteValues(&original_samples_); |
| - original_samples_.clear(); |
| + histogram_recorder_.reset(new base::HistogramRecorder()); |
| } |
| std::ostream& operator<<(std::ostream& out, const base::TimeTicks& time) { |
| @@ -273,9 +223,11 @@ TEST_F(URLRequestThrottlerEntryTest, InterfaceDuringExponentialBackoff) { |
| request_.SetLoadFlags(LOAD_MAYBE_USER_GESTURE); |
| EXPECT_FALSE(entry_->ShouldRejectRequest(request_)); |
| - CalculateHistogramDeltas(); |
| - ASSERT_EQ(1, samples_["Throttling.RequestThrottled"]->GetCount(0)); |
| - ASSERT_EQ(1, samples_["Throttling.RequestThrottled"]->GetCount(1)); |
| + scoped_ptr<base::HistogramSamples> samples( |
| + histogram_recorder_->GetHistogramSamplesSinceCreation( |
| + kRequestThrottledHistogramName)); |
| + ASSERT_EQ(1, samples->GetCount(0)); |
| + ASSERT_EQ(1, samples->GetCount(1)); |
| } |
| TEST_F(URLRequestThrottlerEntryTest, InterfaceNotDuringExponentialBackoff) { |
| @@ -285,9 +237,11 @@ TEST_F(URLRequestThrottlerEntryTest, InterfaceNotDuringExponentialBackoff) { |
| entry_->fake_time_now_ - TimeDelta::FromMilliseconds(1)); |
| EXPECT_FALSE(entry_->ShouldRejectRequest(request_)); |
| - CalculateHistogramDeltas(); |
| - ASSERT_EQ(2, samples_["Throttling.RequestThrottled"]->GetCount(0)); |
| - ASSERT_EQ(0, samples_["Throttling.RequestThrottled"]->GetCount(1)); |
| + scoped_ptr<base::HistogramSamples> samples( |
| + histogram_recorder_->GetHistogramSamplesSinceCreation( |
| + kRequestThrottledHistogramName)); |
| + ASSERT_EQ(2, samples->GetCount(0)); |
| + ASSERT_EQ(0, samples->GetCount(1)); |
| } |
| TEST_F(URLRequestThrottlerEntryTest, InterfaceUpdateFailure) { |