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

Unified Diff: components/precache/content/precache_manager_unittest.cc

Issue 2596093002: Create a synthetic field trial for precache. (Closed)
Patch Set: Rebase. 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 | « components/precache/content/precache_manager.cc ('k') | components/precache/core/precache_database.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/precache/content/precache_manager_unittest.cc
diff --git a/components/precache/content/precache_manager_unittest.cc b/components/precache/content/precache_manager_unittest.cc
index 10c8cb6ff2983e3b21808712b329c5fc4bad7029..8fdbe6b9d1013104e5ce68288a8c8a933bf4a93d 100644
--- a/components/precache/content/precache_manager_unittest.cc
+++ b/components/precache/content/precache_manager_unittest.cc
@@ -182,26 +182,44 @@ class PrecacheManagerTest : public testing::Test {
switches::kPrecacheConfigSettingsURL, kConfigURL);
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
switches::kPrecacheManifestURLPrefix, kManifestURLPrefix);
- std::unique_ptr<PrecacheDatabase> precache_database(
- new PrecacheDatabase());
- precache_database_ = precache_database.get();
ASSERT_TRUE(scoped_temp_dir_.CreateUniqueTempDir());
- base::FilePath db_path = scoped_temp_dir_.GetPath().Append(
- base::FilePath(FILE_PATH_LITERAL("precache_database")));
+ precache_database_ = new PrecacheDatabase;
+ Reset(precache_database_);
+ base::RunLoop().RunUntilIdle();
// Make the fetch of the precache configuration settings fail. Precaching
// should still complete normally in this case.
factory_.SetFakeResponse(GURL(kConfigURL), "",
net::HTTP_INTERNAL_SERVER_ERROR,
net::URLRequestStatus::FAILED);
+ info_.headers = new net::HttpResponseHeaders("");
+ }
+
+ // precache_manager_ assumes ownership of precache_database.
+ void Reset(PrecacheDatabase* precache_database) {
+ base::FilePath db_path = scoped_temp_dir_.GetPath().Append(
+ base::FilePath(FILE_PATH_LITERAL("precache_database")));
precache_manager_.reset(new PrecacheManagerUnderTest(
&browser_context_, nullptr /* sync_service */, &history_service_,
nullptr /* data_reduction_proxy_settings */, db_path,
- std::move(precache_database)));
- base::RunLoop().RunUntilIdle();
+ base::WrapUnique(precache_database)));
+ }
- info_.headers = new net::HttpResponseHeaders("");
+ void Flush() { precache_database_->Flush(); }
+
+ void RecordStatsForFetch(const GURL& url,
+ const std::string& referrer_host,
+ const base::TimeDelta& latency,
+ const base::Time& fetch_time,
+ const net::HttpResponseInfo& info,
+ int64_t size,
+ base::Time last_precache_time) {
+ precache_manager_->RecordStatsForFetch(
+ url, GURL(referrer_host), latency, fetch_time, info, size,
+ base::Bind(&PrecacheManagerTest::RegisterSyntheticFieldTrial,
+ base::Unretained(this)),
+ last_precache_time);
}
void RecordStatsForPrecacheFetch(const GURL& url,
@@ -209,13 +227,17 @@ class PrecacheManagerTest : public testing::Test {
const base::TimeDelta& latency,
const base::Time& fetch_time,
const net::HttpResponseInfo& info,
- int64_t size) {
- precache_manager_->RecordStatsForFetch(url, GURL(referrer_host), latency,
- fetch_time, info, size);
+ int64_t size,
+ base::Time last_precache_time) {
+ RecordStatsForFetch(url, referrer_host, latency, fetch_time, info, size,
+ last_precache_time);
precache_database_->RecordURLPrefetch(url, referrer_host, fetch_time,
info.was_cached, size);
}
+ MOCK_METHOD1(RegisterSyntheticFieldTrial,
+ void(base::Time last_precache_time));
+
// Must be declared first so that it is destroyed last.
content::TestBrowserThreadBundle test_browser_thread_bundle_;
base::ScopedTempDir scoped_temp_dir_;
@@ -455,28 +477,29 @@ TEST_F(PrecacheManagerTest, StartAndCancelPrecachingAfterURLsReceived) {
// PrecacheUtil::UpdatePrecacheMetricsAndState() for more test coverage.
TEST_F(PrecacheManagerTest, RecordStatsForFetchWithSizeZero) {
// Fetches with size 0 should be ignored.
- precache_manager_->RecordStatsForFetch(GURL("http://url.com"), GURL(),
- base::TimeDelta(), base::Time(), info_,
- 0);
+ RecordStatsForPrecacheFetch(GURL("http://url.com"), "", base::TimeDelta(),
+ base::Time(), info_, 0, base::Time());
base::RunLoop().RunUntilIdle();
- EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), IsEmpty());
+ histograms_.ExpectTotalCount("Precache.Latency.Prefetch", 0);
+ histograms_.ExpectTotalCount("Precache.Freshness.Prefetch", 0);
}
TEST_F(PrecacheManagerTest, RecordStatsForFetchWithNonHTTP) {
// Fetches for URLs with schemes other than HTTP or HTTPS should be ignored.
- precache_manager_->RecordStatsForFetch(GURL("ftp://ftp.com"), GURL(),
- base::TimeDelta(), base::Time(), info_,
- 1000);
+ RecordStatsForPrecacheFetch(GURL("ftp://ftp.com"), "", base::TimeDelta(),
+ base::Time(), info_, 1000, base::Time());
base::RunLoop().RunUntilIdle();
- EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), IsEmpty());
+ histograms_.ExpectTotalCount("Precache.Latency.Prefetch", 0);
+ histograms_.ExpectTotalCount("Precache.Freshness.Prefetch", 0);
}
TEST_F(PrecacheManagerTest, RecordStatsForFetchWithEmptyURL) {
// Fetches for empty URLs should be ignored.
- precache_manager_->RecordStatsForFetch(GURL(), GURL(), base::TimeDelta(),
- base::Time(), info_, 1000);
+ RecordStatsForPrecacheFetch(GURL(), "", base::TimeDelta(), base::Time(),
+ info_, 1000, base::Time());
base::RunLoop().RunUntilIdle();
- EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), IsEmpty());
+ histograms_.ExpectTotalCount("Precache.Latency.Prefetch", 0);
+ histograms_.ExpectTotalCount("Precache.Freshness.Prefetch", 0);
}
TEST_F(PrecacheManagerTest, RecordStatsForFetchDuringPrecaching) {
@@ -487,7 +510,8 @@ TEST_F(PrecacheManagerTest, RecordStatsForFetchDuringPrecaching) {
EXPECT_TRUE(precache_manager_->IsPrecaching());
RecordStatsForPrecacheFetch(GURL("http://url.com"), std::string(),
- base::TimeDelta(), base::Time(), info_, 1000);
+ base::TimeDelta(), base::Time(), info_, 1000,
+ base::Time());
base::RunLoop().RunUntilIdle();
precache_manager_->CancelPrecaching();
@@ -506,10 +530,26 @@ TEST_F(PrecacheManagerTest, RecordStatsForFetchDuringPrecaching) {
Pair("Precache.Freshness.Prefetch", 1)));
}
+TEST_F(PrecacheManagerTest, RegistersSyntheticFieldTrial) {
+ base::Time now = base::Time::Now();
+
+ EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _))
+ .WillOnce(ReturnHosts(history::TopHostsList()));
+ EXPECT_CALL(*this, RegisterSyntheticFieldTrial(now));
+
+ precache_manager_->StartPrecaching(precache_callback_.GetCallback());
+
+ EXPECT_TRUE(precache_manager_->IsPrecaching());
+ RecordStatsForPrecacheFetch(GURL("http://url.com"), std::string(),
+ base::TimeDelta(), base::Time(), info_, 1000,
+ now /* last_precache_time */);
+ base::RunLoop().RunUntilIdle();
+ precache_manager_->CancelPrecaching();
+}
+
TEST_F(PrecacheManagerTest, RecordStatsForFetchHTTP) {
- precache_manager_->RecordStatsForFetch(GURL("http://http-url.com"), GURL(),
- base::TimeDelta(), base::Time(), info_,
- 1000);
+ RecordStatsForFetch(GURL("http://http-url.com"), "", base::TimeDelta(),
+ base::Time(), info_, 1000, base::Time());
base::RunLoop().RunUntilIdle();
EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."),
@@ -521,9 +561,8 @@ TEST_F(PrecacheManagerTest, RecordStatsForFetchHTTP) {
}
TEST_F(PrecacheManagerTest, RecordStatsForFetchHTTPS) {
- precache_manager_->RecordStatsForFetch(GURL("https://https-url.com"), GURL(),
- base::TimeDelta(), base::Time(), info_,
- 1000);
+ RecordStatsForFetch(GURL("https://https-url.com"), "", base::TimeDelta(),
+ base::Time(), info_, 1000, base::Time());
base::RunLoop().RunUntilIdle();
EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."),
@@ -541,9 +580,9 @@ TEST_F(PrecacheManagerTest, RecordStatsForFetchInTopHosts) {
[](const GURL& url, const base::Callback<void(int)>& callback) {
callback.Run(0);
}));
- precache_manager_->RecordStatsForFetch(
- GURL("http://http-url.com"), GURL("http://referrer.com"),
- base::TimeDelta(), base::Time(), info_, 1000);
+ RecordStatsForFetch(GURL("http://http-url.com"), "http://referrer.com",
+ base::TimeDelta(), base::Time(), info_, 1000,
+ base::Time());
base::RunLoop().RunUntilIdle();
EXPECT_THAT(
@@ -570,13 +609,13 @@ TEST_F(PrecacheManagerTest, DeleteExpiredPrecacheHistory) {
// Precache a bunch of URLs, with different fetch times.
RecordStatsForPrecacheFetch(
GURL("http://old-fetch.com"), std::string(), base::TimeDelta(),
- kCurrentTime - base::TimeDelta::FromDays(61), info_, 1000);
+ kCurrentTime - base::TimeDelta::FromDays(61), info_, 1000, base::Time());
RecordStatsForPrecacheFetch(
GURL("http://recent-fetch.com"), std::string(), base::TimeDelta(),
- kCurrentTime - base::TimeDelta::FromDays(59), info_, 1000);
+ kCurrentTime - base::TimeDelta::FromDays(59), info_, 1000, base::Time());
RecordStatsForPrecacheFetch(
GURL("http://yesterday-fetch.com"), std::string(), base::TimeDelta(),
- kCurrentTime - base::TimeDelta::FromDays(1), info_, 1000);
+ kCurrentTime - base::TimeDelta::FromDays(1), info_, 1000, base::Time());
expected_histogram_count_map["Precache.CacheStatus.Prefetch"] += 3;
expected_histogram_count_map["Precache.CacheSize.AllEntries"]++;
expected_histogram_count_map["Precache.DownloadedPrecacheMotivated"] += 3;
@@ -620,9 +659,8 @@ TEST_F(PrecacheManagerTest, DeleteExpiredPrecacheHistory) {
// but it isn't reported as saved bytes because it had expired in the precache
// history.
info_.was_cached = true; // From now on all fetches are cached.
- precache_manager_->RecordStatsForFetch(GURL("http://old-fetch.com"), GURL(),
- base::TimeDelta(), kCurrentTime, info_,
- 1000);
+ RecordStatsForFetch(GURL("http://old-fetch.com"), "", base::TimeDelta(),
+ kCurrentTime, info_, 1000, base::Time());
expected_histogram_count_map["Precache.Fetch.TimeToComplete"]++;
expected_histogram_count_map["Precache.CacheStatus.NonPrefetch"]++;
expected_histogram_count_map["Precache.Latency.NonPrefetch"]++;
@@ -635,12 +673,10 @@ TEST_F(PrecacheManagerTest, DeleteExpiredPrecacheHistory) {
// The other precaches should not have expired, so the following fetches from
// the cache should count as saved bytes.
- precache_manager_->RecordStatsForFetch(GURL("http://recent-fetch.com"),
- GURL(), base::TimeDelta(),
- kCurrentTime, info_, 1000);
- precache_manager_->RecordStatsForFetch(GURL("http://yesterday-fetch.com"),
- GURL(), base::TimeDelta(),
- kCurrentTime, info_, 1000);
+ RecordStatsForFetch(GURL("http://recent-fetch.com"), "", base::TimeDelta(),
+ kCurrentTime, info_, 1000, base::Time());
+ RecordStatsForFetch(GURL("http://yesterday-fetch.com"), "", base::TimeDelta(),
+ kCurrentTime, info_, 1000, base::Time());
expected_histogram_count_map["Precache.CacheStatus.NonPrefetch"] += 2;
expected_histogram_count_map
["Precache.CacheStatus.NonPrefetch.FromPrecache"] += 2;
« no previous file with comments | « components/precache/content/precache_manager.cc ('k') | components/precache/core/precache_database.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698