summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorlpromero@chromium.org <lpromero@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-18 18:50:49 +0000
committerlpromero@chromium.org <lpromero@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-18 18:50:49 +0000
commit3a0e3d498cdd0be4659e03dd05888b4ae15f4993 (patch)
treeeadf56c3b27d928faf3e6f98373f6eb67bafe739 /net
parentead7fb005dfc43c7c82aeec569377cac227c0cdb (diff)
downloadchromium_src-3a0e3d498cdd0be4659e03dd05888b4ae15f4993.zip
chromium_src-3a0e3d498cdd0be4659e03dd05888b4ae15f4993.tar.gz
chromium_src-3a0e3d498cdd0be4659e03dd05888b4ae15f4993.tar.bz2
Add a HistogramRecorder class and use cases.
This CL adds a utility class to streamline the task of testing that metrics have been updated as expected. Specifically, the HistogramRecorder class allows a client to obtain the differential value of a given histogram in the interval since the given HistogramRecorder instance was created. BUG=232414 Review URL: https://chromiumcodereview.appspot.com/18337014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@212378 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/url_request/url_request_throttler_unittest.cc79
1 files changed, 15 insertions, 64 deletions
diff --git a/net/url_request/url_request_throttler_unittest.cc b/net/url_request/url_request_throttler_unittest.cc
index e47da30..d4f31f5 100644
--- a/net/url_request/url_request_throttler_unittest.cc
+++ b/net/url_request/url_request_throttler_unittest.cc
@@ -1,3 +1,4 @@
+
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -5,13 +6,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/test_completion_callback.h"
@@ -28,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,31 +173,17 @@ class URLRequestThrottlerEntryTest : public testing::Test {
}
virtual void SetUp();
- virtual void TearDown();
-
- // After calling this function, histogram snapshots in |samples_| contain
- // only the delta caused by the test case currently running.
- void CalculateHistogramDeltas();
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_;
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_.set_load_flags(0);
@@ -208,43 +191,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) {
@@ -260,9 +207,11 @@ TEST_F(URLRequestThrottlerEntryTest, InterfaceDuringExponentialBackoff) {
request_.set_load_flags(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) {
@@ -272,9 +221,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) {