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

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

Issue 2186803003: Add UMA Precache.CacheStatus.NonPrefetch (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed PrecacheManagerTests 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
« no previous file with comments | « components/precache/core/precache_database.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 19 matching lines...) Expand all
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 base::TimeDelta kLatency = base::TimeDelta::FromMilliseconds(5); 35 const base::TimeDelta kLatency = base::TimeDelta::FromMilliseconds(5);
36 const base::Time kFetchTime = base::Time() + base::TimeDelta::FromHours(1000); 36 const base::Time kFetchTime = base::Time() + base::TimeDelta::FromHours(1000);
37 const base::Time kOldFetchTime = kFetchTime - base::TimeDelta::FromDays(1); 37 const base::Time kOldFetchTime = kFetchTime - base::TimeDelta::FromDays(1);
38 const int64_t kSize = 5000; 38 const int64_t kSize = 5000;
39 const int64_t kFreshnessBucket10K = 9089; 39 const int64_t kFreshnessBucket10K = 9089;
40 // One of the possible CacheEntryStatus for when the fetch was served from the
41 // network.
42 const HttpResponseInfo::CacheEntryStatus kFromNetwork =
43 HttpResponseInfo::CacheEntryStatus::ENTRY_UPDATED;
40 44
41 std::map<GURL, base::Time> BuildURLTableMap(const GURL& url, 45 std::map<GURL, base::Time> BuildURLTableMap(const GURL& url,
42 const base::Time& precache_time) { 46 const base::Time& precache_time) {
43 std::map<GURL, base::Time> url_table_map; 47 std::map<GURL, base::Time> url_table_map;
44 url_table_map[url] = precache_time; 48 url_table_map[url] = precache_time;
45 return url_table_map; 49 return url_table_map;
46 } 50 }
47 51
48 HttpResponseInfo CreateHttpResponseInfo(bool was_cached, 52 HttpResponseInfo CreateHttpResponseInfo(bool was_cached,
49 bool network_accessed) { 53 bool network_accessed) {
50 HttpResponseInfo result; 54 HttpResponseInfo result;
51 result.was_cached = was_cached; 55 result.was_cached = was_cached;
52 result.network_accessed = network_accessed; 56 result.network_accessed = network_accessed;
57 if (was_cached) {
58 if (network_accessed) {
59 result.cache_entry_status =
60 HttpResponseInfo::CacheEntryStatus::ENTRY_VALIDATED;
61 } else {
62 result.cache_entry_status =
63 HttpResponseInfo::CacheEntryStatus::ENTRY_USED;
64 }
65 } else { // !was_cached.
66 result.cache_entry_status = kFromNetwork;
67 }
53 std::string header( 68 std::string header(
54 "HTTP/1.1 200 OK\n" 69 "HTTP/1.1 200 OK\n"
55 "cache-control: max-age=10000\n\n"); 70 "cache-control: max-age=10000\n\n");
56 result.headers = new net::HttpResponseHeaders( 71 result.headers = new net::HttpResponseHeaders(
57 net::HttpUtil::AssembleRawHeaders(header.c_str(), header.size())); 72 net::HttpUtil::AssembleRawHeaders(header.c_str(), header.size()));
58 DCHECK_EQ( 73 DCHECK_EQ(
59 10000, 74 10000,
60 result.headers->GetFreshnessLifetimes(base::Time()).freshness.InSeconds()) 75 result.headers->GetFreshnessLifetimes(base::Time()).freshness.InSeconds())
61 << "Error parsing the test headers: " << header; 76 << "Error parsing the test headers: " << header;
62 return result; 77 return result;
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 ExpectNewSample("Precache.Freshness.Prefetch", kFreshnessBucket10K); 271 ExpectNewSample("Precache.Freshness.Prefetch", kFreshnessBucket10K);
257 ExpectNoOtherSamples(); 272 ExpectNoOtherSamples();
258 } 273 }
259 274
260 TEST_F(PrecacheDatabaseTest, FetchOverNetwork_NonCellular) { 275 TEST_F(PrecacheDatabaseTest, FetchOverNetwork_NonCellular) {
261 RecordFetchFromNetwork(kURL, kLatency, kFetchTime, kSize); 276 RecordFetchFromNetwork(kURL, kLatency, kFetchTime, kSize);
262 277
263 EXPECT_TRUE(GetActualURLTableMap().empty()); 278 EXPECT_TRUE(GetActualURLTableMap().empty());
264 279
265 ExpectNewSample("Precache.DownloadedNonPrecache", kSize); 280 ExpectNewSample("Precache.DownloadedNonPrecache", kSize);
281 ExpectNewSample("Precache.CacheStatus.NonPrefetch", kFromNetwork);
266 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); 282 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds());
267 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 283 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts",
268 kLatency.InMilliseconds()); 284 kLatency.InMilliseconds());
269 ExpectNoOtherSamples(); 285 ExpectNoOtherSamples();
270 } 286 }
271 287
272 TEST_F(PrecacheDatabaseTest, FetchOverNetwork_NonCellular_TopHosts) { 288 TEST_F(PrecacheDatabaseTest, FetchOverNetwork_NonCellular_TopHosts) {
273 RecordFetchFromNetwork(kURL, kLatency, kFetchTime, kSize, 0 /* host_rank */); 289 RecordFetchFromNetwork(kURL, kLatency, kFetchTime, kSize, 0 /* host_rank */);
274 290
275 EXPECT_TRUE(GetActualURLTableMap().empty()); 291 EXPECT_TRUE(GetActualURLTableMap().empty());
276 292
277 ExpectNewSample("Precache.DownloadedNonPrecache", kSize); 293 ExpectNewSample("Precache.DownloadedNonPrecache", kSize);
294 ExpectNewSample("Precache.CacheStatus.NonPrefetch", kFromNetwork);
278 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); 295 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds());
279 ExpectNewSample("Precache.Latency.NonPrefetch.TopHosts", 296 ExpectNewSample("Precache.Latency.NonPrefetch.TopHosts",
280 kLatency.InMilliseconds()); 297 kLatency.InMilliseconds());
281 ExpectNoOtherSamples(); 298 ExpectNoOtherSamples();
282 } 299 }
283 300
284 TEST_F(PrecacheDatabaseTest, FetchOverNetwork_Cellular) { 301 TEST_F(PrecacheDatabaseTest, FetchOverNetwork_Cellular) {
285 RecordFetchFromNetworkCellular(kURL, kLatency, kFetchTime, kSize); 302 RecordFetchFromNetworkCellular(kURL, kLatency, kFetchTime, kSize);
286 303
287 EXPECT_TRUE(GetActualURLTableMap().empty()); 304 EXPECT_TRUE(GetActualURLTableMap().empty());
288 305
289 ExpectNewSample("Precache.DownloadedNonPrecache", kSize); 306 ExpectNewSample("Precache.DownloadedNonPrecache", kSize);
290 ExpectNewSample("Precache.DownloadedNonPrecache.Cellular", kSize); 307 ExpectNewSample("Precache.DownloadedNonPrecache.Cellular", kSize);
308 ExpectNewSample("Precache.CacheStatus.NonPrefetch", kFromNetwork);
291 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); 309 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds());
292 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 310 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts",
293 kLatency.InMilliseconds()); 311 kLatency.InMilliseconds());
294 ExpectNoOtherSamples(); 312 ExpectNoOtherSamples();
295 } 313 }
296 314
297 TEST_F(PrecacheDatabaseTest, FetchOverNetworkWithURLTableEntry) { 315 TEST_F(PrecacheDatabaseTest, FetchOverNetworkWithURLTableEntry) {
298 precache_url_table()->AddURL(kURL, kOldFetchTime); 316 precache_url_table()->AddURL(kURL, kOldFetchTime);
299 RecordFetchFromNetwork(kURL, kLatency, kFetchTime, kSize); 317 RecordFetchFromNetwork(kURL, kLatency, kFetchTime, kSize);
300 318
301 // The URL table entry should have been deleted. 319 // The URL table entry should have been deleted.
302 EXPECT_TRUE(GetActualURLTableMap().empty()); 320 EXPECT_TRUE(GetActualURLTableMap().empty());
303 321
304 ExpectNewSample("Precache.DownloadedNonPrecache", kSize); 322 ExpectNewSample("Precache.DownloadedNonPrecache", kSize);
305 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds()); 323 ExpectNewSample("Precache.Latency.NonPrefetch", kLatency.InMilliseconds());
306 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 324 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts",
307 kLatency.InMilliseconds()); 325 kLatency.InMilliseconds());
326 ExpectNewSample("Precache.CacheStatus.NonPrefetch", kFromNetwork);
308 ExpectNoOtherSamples(); 327 ExpectNoOtherSamples();
309 } 328 }
310 329
311 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_NonCellular) { 330 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_NonCellular) {
312 precache_url_table()->AddURL(kURL, kOldFetchTime); 331 precache_url_table()->AddURL(kURL, kOldFetchTime);
313 RecordFetchFromCache(kURL, kFetchTime, kSize); 332 RecordFetchFromCache(kURL, kFetchTime, kSize);
314 333
315 // The URL table entry should have been deleted. 334 // The URL table entry should have been deleted.
316 EXPECT_TRUE(GetActualURLTableMap().empty()); 335 EXPECT_TRUE(GetActualURLTableMap().empty());
317 336
318 ExpectNewSample("Precache.Latency.NonPrefetch", 0); 337 ExpectNewSample("Precache.Latency.NonPrefetch", 0);
319 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0); 338 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0);
339 ExpectNewSample("Precache.CacheStatus.NonPrefetch",
340 HttpResponseInfo::CacheEntryStatus::ENTRY_USED);
320 ExpectNewSample("Precache.Saved", kSize); 341 ExpectNewSample("Precache.Saved", kSize);
321 ExpectNewSample("Precache.Saved.Freshness", kFreshnessBucket10K); 342 ExpectNewSample("Precache.Saved.Freshness", kFreshnessBucket10K);
322 ExpectNoOtherSamples(); 343 ExpectNoOtherSamples();
323 } 344 }
324 345
325 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_Cellular) { 346 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithURLTableEntry_Cellular) {
326 precache_url_table()->AddURL(kURL, kOldFetchTime); 347 precache_url_table()->AddURL(kURL, kOldFetchTime);
327 RecordFetchFromCacheCellular(kURL, kFetchTime, kSize); 348 RecordFetchFromCacheCellular(kURL, kFetchTime, kSize);
328 349
329 // The URL table entry should have been deleted. 350 // The URL table entry should have been deleted.
330 EXPECT_TRUE(GetActualURLTableMap().empty()); 351 EXPECT_TRUE(GetActualURLTableMap().empty());
331 352
332 ExpectNewSample("Precache.Latency.NonPrefetch", 0); 353 ExpectNewSample("Precache.Latency.NonPrefetch", 0);
333 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0); 354 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0);
355 ExpectNewSample("Precache.CacheStatus.NonPrefetch",
356 HttpResponseInfo::CacheEntryStatus::ENTRY_USED);
334 ExpectNewSample("Precache.Saved", kSize); 357 ExpectNewSample("Precache.Saved", kSize);
335 ExpectNewSample("Precache.Saved.Cellular", kSize); 358 ExpectNewSample("Precache.Saved.Cellular", kSize);
336 ExpectNewSample("Precache.Saved.Freshness", kFreshnessBucket10K); 359 ExpectNewSample("Precache.Saved.Freshness", kFreshnessBucket10K);
337 ExpectNoOtherSamples(); 360 ExpectNoOtherSamples();
338 } 361 }
339 362
340 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithoutURLTableEntry) { 363 TEST_F(PrecacheDatabaseTest, FetchFromCacheWithoutURLTableEntry) {
341 RecordFetchFromCache(kURL, kFetchTime, kSize); 364 RecordFetchFromCache(kURL, kFetchTime, kSize);
342 365
343 EXPECT_TRUE(GetActualURLTableMap().empty()); 366 EXPECT_TRUE(GetActualURLTableMap().empty());
344 367
345 ExpectNewSample("Precache.Latency.NonPrefetch", 0); 368 ExpectNewSample("Precache.Latency.NonPrefetch", 0);
346 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0); 369 ExpectNewSample("Precache.Latency.NonPrefetch.NonTopHosts", 0);
370 ExpectNewSample("Precache.CacheStatus.NonPrefetch",
371 HttpResponseInfo::CacheEntryStatus::ENTRY_USED);
347 ExpectNoOtherSamples(); 372 ExpectNoOtherSamples();
348 } 373 }
349 374
350 TEST_F(PrecacheDatabaseTest, DeleteExpiredPrecacheHistory) { 375 TEST_F(PrecacheDatabaseTest, DeleteExpiredPrecacheHistory) {
351 const base::Time kToday = base::Time() + base::TimeDelta::FromDays(1000); 376 const base::Time kToday = base::Time() + base::TimeDelta::FromDays(1000);
352 const base::Time k59DaysAgo = kToday - base::TimeDelta::FromDays(59); 377 const base::Time k59DaysAgo = kToday - base::TimeDelta::FromDays(59);
353 const base::Time k61DaysAgo = kToday - base::TimeDelta::FromDays(61); 378 const base::Time k61DaysAgo = kToday - base::TimeDelta::FromDays(61);
354 379
355 precache_url_table()->AddURL(GURL("http://expired-precache.com"), k61DaysAgo); 380 precache_url_table()->AddURL(GURL("http://expired-precache.com"), k61DaysAgo);
356 precache_url_table()->AddURL(GURL("http://old-precache.com"), k59DaysAgo); 381 precache_url_table()->AddURL(GURL("http://old-precache.com"), k59DaysAgo);
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 false /* network_accessed */); 477 false /* network_accessed */);
453 RecordPrecacheFromNetwork(kURL, kLatency, kFetchTime, kSize); 478 RecordPrecacheFromNetwork(kURL, kLatency, kFetchTime, kSize);
454 479
455 EXPECT_THAT(histograms_.GetAllSamples("Precache.Freshness.Prefetch"), 480 EXPECT_THAT(histograms_.GetAllSamples("Precache.Freshness.Prefetch"),
456 ElementsAre(Bucket(kFreshnessBucket10K, 1))); 481 ElementsAre(Bucket(kFreshnessBucket10K, 1)));
457 } 482 }
458 483
459 } // namespace 484 } // namespace
460 485
461 } // namespace precache 486 } // namespace precache
OLDNEW
« no previous file with comments | « components/precache/core/precache_database.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698