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

Side by Side Diff: components/precache/core/precache_database_unittest.cc

Issue 2229983002: Send the list of used and unused resources for precache (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/precache/core/precache_database.h" 5 #include "components/precache/core/precache_database.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
(...skipping 14 matching lines...) Expand all
25 #include "url/gurl.h" 25 #include "url/gurl.h"
26 26
27 namespace { 27 namespace {
28 28
29 using ::testing::ContainerEq; 29 using ::testing::ContainerEq;
30 using ::testing::ElementsAre; 30 using ::testing::ElementsAre;
31 using base::Bucket; 31 using base::Bucket;
32 using net::HttpResponseInfo; 32 using net::HttpResponseInfo;
33 33
34 const GURL kURL("http://url.com"); 34 const GURL kURL("http://url.com");
35 const int kReferrerID = 1;
35 const base::TimeDelta kLatency = base::TimeDelta::FromMilliseconds(5); 36 const base::TimeDelta kLatency = base::TimeDelta::FromMilliseconds(5);
36 const base::Time kFetchTime = base::Time() + base::TimeDelta::FromHours(1000); 37 const base::Time kFetchTime = base::Time() + base::TimeDelta::FromHours(1000);
37 const base::Time kOldFetchTime = kFetchTime - base::TimeDelta::FromDays(1); 38 const base::Time kOldFetchTime = kFetchTime - base::TimeDelta::FromDays(1);
38 const int64_t kSize = 5000; 39 const int64_t kSize = 5000;
39 const int64_t kFreshnessBucket10K = 9089; 40 const int64_t kFreshnessBucket10K = 9089;
40 // One of the possible CacheEntryStatus for when the fetch was served from the 41 // One of the possible CacheEntryStatus for when the fetch was served from the
41 // network. 42 // network.
42 const HttpResponseInfo::CacheEntryStatus kFromNetwork = 43 const HttpResponseInfo::CacheEntryStatus kFromNetwork =
43 HttpResponseInfo::CacheEntryStatus::ENTRY_UPDATED; 44 HttpResponseInfo::CacheEntryStatus::ENTRY_UPDATED;
44 45
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 } 162 }
162 }; 163 };
163 164
164 void PrecacheDatabaseTest::RecordPrecacheFromNetwork( 165 void PrecacheDatabaseTest::RecordPrecacheFromNetwork(
165 const GURL& url, 166 const GURL& url,
166 base::TimeDelta latency, 167 base::TimeDelta latency,
167 const base::Time& fetch_time, 168 const base::Time& fetch_time,
168 int64_t size) { 169 int64_t size) {
169 const HttpResponseInfo info = CreateHttpResponseInfo( 170 const HttpResponseInfo info = CreateHttpResponseInfo(
170 false /* was_cached */, false /* network_accessed */); 171 false /* was_cached */, false /* network_accessed */);
171 precache_database_->RecordURLPrefetch(url, latency, fetch_time, info, size); 172 precache_database_->RecordURLPrefetchMetrics(info, latency);
173 precache_database_->RecordURLPrefetch(url, std::string(), fetch_time,
174 info.was_cached, size);
172 } 175 }
173 176
174 void PrecacheDatabaseTest::RecordPrecacheFromCache(const GURL& url, 177 void PrecacheDatabaseTest::RecordPrecacheFromCache(const GURL& url,
175 const base::Time& fetch_time, 178 const base::Time& fetch_time,
176 int64_t size) { 179 int64_t size) {
177 const HttpResponseInfo info = CreateHttpResponseInfo( 180 const HttpResponseInfo info = CreateHttpResponseInfo(
178 true /* was_cached */, false /* network_accessed */); 181 true /* was_cached */, false /* network_accessed */);
179 precache_database_->RecordURLPrefetch(url, base::TimeDelta() /* latency */, 182 precache_database_->RecordURLPrefetchMetrics(info,
180 fetch_time, info, size); 183 base::TimeDelta() /* latency */);
184 precache_database_->RecordURLPrefetch(url, std::string(), fetch_time,
185 info.was_cached, size);
181 } 186 }
182 187
183 void PrecacheDatabaseTest::RecordFetchFromNetwork(const GURL& url, 188 void PrecacheDatabaseTest::RecordFetchFromNetwork(const GURL& url,
184 base::TimeDelta latency, 189 base::TimeDelta latency,
185 const base::Time& fetch_time, 190 const base::Time& fetch_time,
186 int64_t size) { 191 int64_t size) {
187 const HttpResponseInfo info = CreateHttpResponseInfo( 192 const HttpResponseInfo info = CreateHttpResponseInfo(
188 false /* was_cached */, false /* network_accessed */); 193 false /* was_cached */, false /* network_accessed */);
189 precache_database_->RecordURLNonPrefetch(url, latency, fetch_time, info, size, 194 precache_database_->RecordURLNonPrefetch(url, latency, fetch_time, info, size,
190 history::kMaxTopHosts, 195 history::kMaxTopHosts,
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 248
244 EXPECT_EQ(BuildURLTableMap(kURL, kFetchTime), GetActualURLTableMap()); 249 EXPECT_EQ(BuildURLTableMap(kURL, kFetchTime), GetActualURLTableMap());
245 250
246 ExpectNewSample("Precache.DownloadedPrecacheMotivated", kSize); 251 ExpectNewSample("Precache.DownloadedPrecacheMotivated", kSize);
247 ExpectNewSample("Precache.Latency.Prefetch", kLatency.InMilliseconds()); 252 ExpectNewSample("Precache.Latency.Prefetch", kLatency.InMilliseconds());
248 ExpectNewSample("Precache.Freshness.Prefetch", kFreshnessBucket10K); 253 ExpectNewSample("Precache.Freshness.Prefetch", kFreshnessBucket10K);
249 ExpectNoOtherSamples(); 254 ExpectNoOtherSamples();
250 } 255 }
251 256
252 TEST_F(PrecacheDatabaseTest, PrecacheFromCacheWithURLTableEntry) { 257 TEST_F(PrecacheDatabaseTest, PrecacheFromCacheWithURLTableEntry) {
253 precache_url_table()->AddURL(kURL, kOldFetchTime); 258 precache_url_table()->AddURL(kURL, kReferrerID, true, kOldFetchTime);
254 RecordPrecacheFromCache(kURL, kFetchTime, kSize); 259 RecordPrecacheFromCache(kURL, kFetchTime, kSize);
255 260
256 // The URL table entry should have been updated to have |kFetchTime| as the 261 // The URL table entry should have been updated to have |kFetchTime| as the
257 // timestamp. 262 // timestamp.
258 EXPECT_EQ(BuildURLTableMap(kURL, kFetchTime), GetActualURLTableMap()); 263 EXPECT_EQ(BuildURLTableMap(kURL, kFetchTime), GetActualURLTableMap());
259 264
260 ExpectNewSample("Precache.Latency.Prefetch", 0); 265 ExpectNewSample("Precache.Latency.Prefetch", 0);
261 ExpectNewSample("Precache.Freshness.Prefetch", kFreshnessBucket10K); 266 ExpectNewSample("Precache.Freshness.Prefetch", kFreshnessBucket10K);
262 ExpectNoOtherSamples(); 267 ExpectNoOtherSamples();
263 } 268 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 ExpectNewSample("Precache.DownloadedNonPrecache", kSize); 311 ExpectNewSample("Precache.DownloadedNonPrecache", kSize);
307 ExpectNewSample("Precache.DownloadedNonPrecache.Cellular", kSize); 312 ExpectNewSample("Precache.DownloadedNonPrecache.Cellular", kSize);
308 ExpectNewSample("Precache.CacheStatus.NonPrefetch", kFromNetwork); 313 ExpectNewSample("Precache.CacheStatus.NonPrefetch", kFromNetwork);
309 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); 314 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds());
310 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 315 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts",
311 kLatency.InMilliseconds()); 316 kLatency.InMilliseconds());
312 ExpectNoOtherSamples(); 317 ExpectNoOtherSamples();
313 } 318 }
314 319
315 TEST_F(PrecacheDatabaseTest, FetchOverNetworkWithURLTableEntry) { 320 TEST_F(PrecacheDatabaseTest, FetchOverNetworkWithURLTableEntry) {
316 precache_url_table()->AddURL(kURL, kOldFetchTime); 321 precache_url_table()->AddURL(kURL, kReferrerID, true, kOldFetchTime);
317 RecordFetchFromNetwork(kURL, kLatency, kFetchTime, kSize); 322 RecordFetchFromNetwork(kURL, kLatency, kFetchTime, kSize);
318 323
319 // The URL table entry should have been deleted. 324 // The URL table entry should have been deleted.
320 EXPECT_TRUE(GetActualURLTableMap().empty()); 325 EXPECT_TRUE(GetActualURLTableMap().empty());
321 326
322 ExpectNewSample("Precache.DownloadedNonPrecache", kSize); 327 ExpectNewSample("Precache.DownloadedNonPrecache", kSize);
323 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); 328 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds());
324 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 329 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts",
325 kLatency.InMilliseconds()); 330 kLatency.InMilliseconds());
326 ExpectNewSample("Precache.CacheStatus.NonPrefetch", kFromNetwork); 331 ExpectNewSample("Precache.CacheStatus.NonPrefetch", kFromNetwork);
327 ExpectNoOtherSamples(); 332 ExpectNoOtherSamples();
328 } 333 }
329 334
330 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_NonCellular) { 335 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_NonCellular) {
331 precache_url_table()->AddURL(kURL, kOldFetchTime); 336 precache_url_table()->AddURL(kURL, kReferrerID, true, kOldFetchTime);
332 RecordFetchFromCache(kURL, kFetchTime, kSize); 337 RecordFetchFromCache(kURL, kFetchTime, kSize);
333 338
334 // The URL table entry should have been deleted. 339 // The URL table entry should have been deleted.
335 EXPECT_TRUE(GetActualURLTableMap().empty()); 340 EXPECT_TRUE(GetActualURLTableMap().empty());
336 341
337 ExpectNewSample("Precache.Latency.NonPrefetch", 0); 342 ExpectNewSample("Precache.Latency.NonPrefetch", 0);
338 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0); 343 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0);
339 ExpectNewSample("Precache.CacheStatus.NonPrefetch", 344 ExpectNewSample("Precache.CacheStatus.NonPrefetch",
340 HttpResponseInfo::CacheEntryStatus::ENTRY_USED); 345 HttpResponseInfo::CacheEntryStatus::ENTRY_USED);
341 ExpectNewSample("Precache.Saved", kSize); 346 ExpectNewSample("Precache.Saved", kSize);
342 ExpectNewSample("Precache.Saved.Freshness", kFreshnessBucket10K); 347 ExpectNewSample("Precache.Saved.Freshness", kFreshnessBucket10K);
343 ExpectNoOtherSamples(); 348 ExpectNoOtherSamples();
344 } 349 }
345 350
346 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_Cellular) { 351 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_Cellular) {
347 precache_url_table()->AddURL(kURL, kOldFetchTime); 352 precache_url_table()->AddURL(kURL, kReferrerID, true, kOldFetchTime);
348 RecordFetchFromCacheCellular(kURL, kFetchTime, kSize); 353 RecordFetchFromCacheCellular(kURL, kFetchTime, kSize);
349 354
350 // The URL table entry should have been deleted. 355 // The URL table entry should have been deleted.
351 EXPECT_TRUE(GetActualURLTableMap().empty()); 356 EXPECT_TRUE(GetActualURLTableMap().empty());
352 357
353 ExpectNewSample("Precache.Latency.NonPrefetch", 0); 358 ExpectNewSample("Precache.Latency.NonPrefetch", 0);
354 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0); 359 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0);
355 ExpectNewSample("Precache.CacheStatus.NonPrefetch", 360 ExpectNewSample("Precache.CacheStatus.NonPrefetch",
356 HttpResponseInfo::CacheEntryStatus::ENTRY_USED); 361 HttpResponseInfo::CacheEntryStatus::ENTRY_USED);
357 ExpectNewSample("Precache.Saved", kSize); 362 ExpectNewSample("Precache.Saved", kSize);
(...skipping 12 matching lines...) Expand all
370 ExpectNewSample("Precache.CacheStatus.NonPrefetch", 375 ExpectNewSample("Precache.CacheStatus.NonPrefetch",
371 HttpResponseInfo::CacheEntryStatus::ENTRY_USED); 376 HttpResponseInfo::CacheEntryStatus::ENTRY_USED);
372 ExpectNoOtherSamples(); 377 ExpectNoOtherSamples();
373 } 378 }
374 379
375 TEST_F(PrecacheDatabaseTest, DeleteExpiredPrecacheHistory) { 380 TEST_F(PrecacheDatabaseTest, DeleteExpiredPrecacheHistory) {
376 const base::Time kToday = base::Time() + base::TimeDelta::FromDays(1000); 381 const base::Time kToday = base::Time() + base::TimeDelta::FromDays(1000);
377 const base::Time k59DaysAgo = kToday - base::TimeDelta::FromDays(59); 382 const base::Time k59DaysAgo = kToday - base::TimeDelta::FromDays(59);
378 const base::Time k61DaysAgo = kToday - base::TimeDelta::FromDays(61); 383 const base::Time k61DaysAgo = kToday - base::TimeDelta::FromDays(61);
379 384
380 precache_url_table()->AddURL(GURL("http://expired-precache.com"), k61DaysAgo); 385 precache_url_table()->AddURL(GURL("http://expired-precache.com"), kReferrerID,
381 precache_url_table()->AddURL(GURL("http://old-precache.com"), k59DaysAgo); 386 true, k61DaysAgo);
387 precache_url_table()->AddURL(GURL("http://old-precache.com"), kReferrerID,
388 true, k59DaysAgo);
382 389
383 precache_database_->DeleteExpiredPrecacheHistory(kToday); 390 precache_database_->DeleteExpiredPrecacheHistory(kToday);
384 391
385 EXPECT_EQ(BuildURLTableMap(GURL("http://old-precache.com"), k59DaysAgo), 392 EXPECT_EQ(BuildURLTableMap(GURL("http://old-precache.com"), k59DaysAgo),
386 GetActualURLTableMap()); 393 GetActualURLTableMap());
387 } 394 }
388 395
389 TEST_F(PrecacheDatabaseTest, SampleInteraction) { 396 TEST_F(PrecacheDatabaseTest, SampleInteraction) {
390 const GURL kURL1("http://url1.com"); 397 const GURL kURL1("http://url1.com");
391 const int64_t kSize1 = 1; 398 const int64_t kSize1 = 1;
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 false /* network_accessed */); 484 false /* network_accessed */);
478 RecordPrecacheFromNetwork(kURL, kLatency, kFetchTime, kSize); 485 RecordPrecacheFromNetwork(kURL, kLatency, kFetchTime, kSize);
479 486
480 EXPECT_THAT(histograms_.GetAllSamples("Precache.Freshness.Prefetch"), 487 EXPECT_THAT(histograms_.GetAllSamples("Precache.Freshness.Prefetch"),
481 ElementsAre(Bucket(kFreshnessBucket10K, 1))); 488 ElementsAre(Bucket(kFreshnessBucket10K, 1)));
482 } 489 }
483 490
484 } // namespace 491 } // namespace
485 492
486 } // namespace precache 493 } // namespace precache
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698