Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5944)

Unified Diff: chrome/browser/predictors/resource_prefetch_predictor_unittest.cc

Issue 2640343002: predictors: Add precision / recall histograms for speculative prefetch. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/predictors/resource_prefetch_predictor.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
diff --git a/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc b/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
index 77d9ed4e0a3372b7e6679640bec49314bab8bc0e..b21c918b8eb356b135f376a00e4f3762e6ac0379 100644
--- a/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
+++ b/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
@@ -11,6 +11,7 @@
#include "base/memory/ptr_util.h"
#include "base/memory/ref_counted.h"
#include "base/run_loop.h"
+#include "base/test/histogram_tester.h"
#include "base/time/time.h"
#include "chrome/browser/history/history_service_factory.h"
#include "chrome/browser/predictors/resource_prefetch_predictor_tables.h"
@@ -265,6 +266,8 @@ class ResourcePrefetchPredictorTest : public testing::Test {
MockURLRequestJobFactory url_request_job_factory_;
EmptyURLRequestDelegate url_request_delegate_;
+
+ std::unique_ptr<base::HistogramTester> histogram_tester_;
};
ResourcePrefetchPredictorTest::ResourcePrefetchPredictorTest()
@@ -301,6 +304,8 @@ void ResourcePrefetchPredictorTest::SetUp() {
ResourcePrefetchPredictor::INITIALIZED);
url_request_context_.set_job_factory(&url_request_job_factory_);
+
+ histogram_tester_.reset(new base::HistogramTester());
}
void ResourcePrefetchPredictorTest::TearDown() {
@@ -1553,4 +1558,49 @@ TEST_F(ResourcePrefetchPredictorTest, GetPrefetchData) {
EXPECT_THAT(urls, UnorderedElementsAre(GURL(font_url)));
}
+TEST_F(ResourcePrefetchPredictorTest, TestPrecisionRecallHistograms) {
+ using testing::_;
+ EXPECT_CALL(*mock_tables_.get(), UpdateData(_, _, _, _));
+
+ // Fill the database with 3 resources: 1 useful, 2 useless.
+ const std::string main_frame_url = "http://google.com/?query=cats";
+ PrefetchData google = CreatePrefetchData("google.com", 1);
+
+ const std::string script_url = "https://cdn.google.com/script.js";
+ InitializeResourceData(google.add_resources(), script_url,
+ content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1,
+ net::MEDIUM, false, false);
+ InitializeResourceData(google.add_resources(), script_url + "foo",
+ content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1,
+ net::MEDIUM, false, false);
+ InitializeResourceData(google.add_resources(), script_url + "bar",
+ content::RESOURCE_TYPE_SCRIPT, 10, 0, 1, 2.1,
+ net::MEDIUM, false, false);
+ predictor_->host_table_cache_->insert(
+ std::make_pair(google.primary_key(), google));
+
+ std::vector<GURL> urls;
+ EXPECT_TRUE(predictor_->GetPrefetchData(GURL(main_frame_url), &urls));
+
+ // Simulate a navigation with 2 resources, one we know, one we don't.
+ URLRequestSummary main_frame = CreateURLRequestSummary(1, main_frame_url);
+ predictor_->RecordURLRequest(main_frame);
+
+ URLRequestSummary script = CreateURLRequestSummary(
+ 1, main_frame_url, script_url, content::RESOURCE_TYPE_SCRIPT);
+ predictor_->RecordURLResponse(script);
+
+ URLRequestSummary new_script = CreateURLRequestSummary(
+ 1, main_frame_url, script_url + "2", content::RESOURCE_TYPE_SCRIPT);
+ predictor_->RecordURLResponse(new_script);
+
+ predictor_->RecordMainFrameLoadComplete(main_frame.navigation_id);
+ profile_->BlockUntilHistoryProcessesPendingRequests();
+
+ histogram_tester_->ExpectBucketCount(
+ internal::kResourcePrefetchPredictorRecallHistogram, 50, 1);
+ histogram_tester_->ExpectBucketCount(
+ internal::kResourcePrefetchPredictorPrecisionHistogram, 33, 1);
+}
+
} // namespace predictors
« no previous file with comments | « chrome/browser/predictors/resource_prefetch_predictor.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698