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

Unified Diff: components/precache/core/precache_fetcher_unittest.cc

Issue 2707053005: precache: Fix top_resources_count + experiments. (Closed)
Patch Set: Rebase (again). Created 3 years, 10 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 | « components/precache/core/precache_fetcher.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/precache/core/precache_fetcher_unittest.cc
diff --git a/components/precache/core/precache_fetcher_unittest.cc b/components/precache/core/precache_fetcher_unittest.cc
index 374e0b092cb334ed4896c1e572c9ec9d2f741e35..ec5689ca1431e1be680aaeade0e2d517e3f5741c 100644
--- a/components/precache/core/precache_fetcher_unittest.cc
+++ b/components/precache/core/precache_fetcher_unittest.cc
@@ -1094,6 +1094,65 @@ TEST_F(PrecacheFetcherTest, TopResourcesCount) {
histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1);
}
+TEST_F(PrecacheFetcherTest, TopResourcesCount_ResourceBitset) {
+ SetDefaultFlags();
+
+ std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
+ new PrecacheUnfinishedWork());
+ unfinished_work->set_start_time(base::Time::UnixEpoch().ToInternalValue());
+ unfinished_work->add_top_host()->set_hostname("good-manifest.com");
+
+ PrecacheConfigurationSettings config;
+ config.set_top_resources_count(2);
+
+ PrecacheManifest good_manifest;
+ good_manifest.add_resource()->set_url("http://good-manifest.com/retrieved");
+ good_manifest.add_resource()->set_url("http://good-manifest.com/skipped");
+ good_manifest.add_resource()->set_url("http://good-manifest.com/retrieved");
+ good_manifest.add_resource()->set_url("http://good-manifest.com/skipped");
+ good_manifest.add_resource()->set_url("http://good-manifest.com/retrieved");
+ (*good_manifest.mutable_experiments()
+ ->mutable_resources_by_experiment_group())[kExperimentID]
+ .set_deprecated_bitset(0b10101);
+
+ factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(),
+ net::HTTP_OK, net::URLRequestStatus::SUCCESS);
+ factory_.SetFakeResponse(GURL(kGoodManifestURL),
+ good_manifest.SerializeAsString(), net::HTTP_OK,
+ net::URLRequestStatus::SUCCESS);
+ factory_.SetFakeResponse(GURL("http://good-manifest.com/retrieved"), "good",
+ net::HTTP_OK, net::URLRequestStatus::SUCCESS);
+
+ base::HistogramTester histogram;
+
+ {
+ PrecacheFetcher precache_fetcher(
+ request_context_.get(), GURL(), std::string(),
+ std::move(unfinished_work), kExperimentID,
+ precache_database_.GetWeakPtr(), task_runner(), &precache_delegate_);
+ precache_fetcher.Start();
+
+ base::RunLoop().RunUntilIdle();
+
+ // Destroy the PrecacheFetcher after it has finished, to record metrics.
+ }
+
+ std::vector<GURL> expected_requested_urls;
+ expected_requested_urls.emplace_back(kConfigURL);
+ expected_requested_urls.emplace_back(kGoodManifestURL);
+ expected_requested_urls.emplace_back("http://good-manifest.com/retrieved");
+ expected_requested_urls.emplace_back("http://good-manifest.com/retrieved");
+
+ EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
+
+ EXPECT_TRUE(precache_delegate_.was_on_done_called());
+
+ histogram.ExpectUniqueSample("Precache.Fetch.PercentCompleted", 100, 1);
+ histogram.ExpectUniqueSample("Precache.Fetch.ResponseBytes.Total",
+ url_callback_.total_response_bytes(), 1);
+ histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1);
+}
+
// MaxBytesPerResource is impossible to test with net::FakeURLFetcherFactory:
//
// - The PrecacheFetcher::Fetcher's max_bytes logic only applies to network
« no previous file with comments | « components/precache/core/precache_fetcher.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698