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

Side by Side Diff: content/browser/quota/quota_database_unittest.cc

Issue 1403673002: Add Quota.TimeSinceOriginEvicted UMA histogram. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 2 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 | « no previous file | content/browser/quota/quota_manager_unittest.cc » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <algorithm> 5 #include <algorithm>
6 #include <iterator> 6 #include <iterator>
7 #include <set> 7 #include <set>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 EXPECT_TRUE(kDbFile.empty() || base::PathExists(kDbFile)); 49 EXPECT_TRUE(kDbFile.empty() || base::PathExists(kDbFile));
50 } 50 }
51 51
52 void Reopen(const base::FilePath& kDbFile) { 52 void Reopen(const base::FilePath& kDbFile) {
53 QuotaDatabase db(kDbFile); 53 QuotaDatabase db(kDbFile);
54 ASSERT_TRUE(db.LazyOpen(false)); 54 ASSERT_TRUE(db.LazyOpen(false));
55 EXPECT_TRUE(db.db_.get()); 55 EXPECT_TRUE(db.db_.get());
56 EXPECT_TRUE(kDbFile.empty() || base::PathExists(kDbFile)); 56 EXPECT_TRUE(kDbFile.empty() || base::PathExists(kDbFile));
57 } 57 }
58 58
59 void UpgradeSchemaV2toV3(const base::FilePath& kDbFile) { 59 void UpgradeSchemaV2toV5(const base::FilePath& kDbFile) {
60 const QuotaTableEntry entries[] = { 60 const QuotaTableEntry entries[] = {
61 QuotaTableEntry("a", kStorageTypeTemporary, 1), 61 QuotaTableEntry("a", kStorageTypeTemporary, 1),
62 QuotaTableEntry("b", kStorageTypeTemporary, 2), 62 QuotaTableEntry("b", kStorageTypeTemporary, 2),
63 QuotaTableEntry("c", kStorageTypePersistent, 3), 63 QuotaTableEntry("c", kStorageTypePersistent, 3),
64 }; 64 };
65 65
66 CreateV2Database(kDbFile, entries, arraysize(entries)); 66 CreateV2Database(kDbFile, entries, arraysize(entries));
67 67
68 QuotaDatabase db(kDbFile); 68 QuotaDatabase db(kDbFile);
69 EXPECT_TRUE(db.LazyOpen(true)); 69 EXPECT_TRUE(db.LazyOpen(true));
70 EXPECT_TRUE(db.db_.get()); 70 EXPECT_TRUE(db.db_.get());
71 71
72 typedef EntryVerifier<QuotaTableEntry> Verifier; 72 typedef EntryVerifier<QuotaTableEntry> Verifier;
73 Verifier verifier(entries, entries + arraysize(entries)); 73 Verifier verifier(entries, entries + arraysize(entries));
74 EXPECT_TRUE(db.DumpQuotaTable( 74 EXPECT_TRUE(db.DumpQuotaTable(
75 base::Bind(&Verifier::Run, base::Unretained(&verifier)))); 75 base::Bind(&Verifier::Run, base::Unretained(&verifier))));
76 EXPECT_TRUE(verifier.table.empty()); 76 EXPECT_TRUE(verifier.table.empty());
77
78 EXPECT_TRUE(db.db_->DoesTableExist("EvictionInfoTable"));
79 EXPECT_TRUE(db.db_->DoesIndexExist("sqlite_autoindex_EvictionInfoTable_1"));
77 } 80 }
78 81
79 void HostQuota(const base::FilePath& kDbFile) { 82 void HostQuota(const base::FilePath& kDbFile) {
80 QuotaDatabase db(kDbFile); 83 QuotaDatabase db(kDbFile);
81 ASSERT_TRUE(db.LazyOpen(true)); 84 ASSERT_TRUE(db.LazyOpen(true));
82 85
83 const char* kHost = "foo.com"; 86 const char* kHost = "foo.com";
84 const int kQuota1 = 13579; 87 const int kQuota1 = 13579;
85 const int kQuota2 = kQuota1 + 1024; 88 const int kQuota2 = kQuota1 + 1024;
86 89
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 EXPECT_EQ(0U, origins.count(kOrigin3)); 290 EXPECT_EQ(0U, origins.count(kOrigin3));
288 291
289 EXPECT_TRUE(db.GetOriginsModifiedSince( 292 EXPECT_TRUE(db.GetOriginsModifiedSince(
290 kStorageTypePersistent, &origins, base::Time::FromInternalValue(35))); 293 kStorageTypePersistent, &origins, base::Time::FromInternalValue(35)));
291 EXPECT_EQ(1U, origins.size()); 294 EXPECT_EQ(1U, origins.size());
292 EXPECT_EQ(0U, origins.count(kOrigin1)); 295 EXPECT_EQ(0U, origins.count(kOrigin1));
293 EXPECT_EQ(1U, origins.count(kOrigin2)); 296 EXPECT_EQ(1U, origins.count(kOrigin2));
294 EXPECT_EQ(0U, origins.count(kOrigin3)); 297 EXPECT_EQ(0U, origins.count(kOrigin3));
295 } 298 }
296 299
300 void OriginLastEvicted(const base::FilePath& kDbFile) {
301 QuotaDatabase db(kDbFile);
302 ASSERT_TRUE(db.LazyOpen(true));
303
304 const GURL kOrigin1("http://a/");
305 const GURL kOrigin2("http://b/");
306 const GURL kOrigin3("http://c/");
307
308 base::Time last_eviction_time;
309 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin1, kStorageTypeTemporary,
310 &last_eviction_time));
311 EXPECT_EQ(base::Time(), last_eviction_time);
312
313 // Report last eviction time for the test origins.
314 EXPECT_TRUE(db.SetOriginLastEvictionTime(
315 kOrigin1, kStorageTypeTemporary, base::Time::FromInternalValue(10)));
316 EXPECT_TRUE(db.SetOriginLastEvictionTime(
317 kOrigin2, kStorageTypeTemporary, base::Time::FromInternalValue(20)));
318 EXPECT_TRUE(db.SetOriginLastEvictionTime(
319 kOrigin3, kStorageTypeTemporary, base::Time::FromInternalValue(30)));
320
321 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin1, kStorageTypeTemporary,
322 &last_eviction_time));
323 EXPECT_EQ(base::Time::FromInternalValue(10), last_eviction_time);
324 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin2, kStorageTypeTemporary,
325 &last_eviction_time));
326 EXPECT_EQ(base::Time::FromInternalValue(20), last_eviction_time);
327 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin3, kStorageTypeTemporary,
328 &last_eviction_time));
329 EXPECT_EQ(base::Time::FromInternalValue(30), last_eviction_time);
330
331 // Delete last eviction times for the test origins.
332 EXPECT_TRUE(
333 db.DeleteOriginLastEvictionTime(kOrigin1, kStorageTypeTemporary));
334 EXPECT_TRUE(
335 db.DeleteOriginLastEvictionTime(kOrigin2, kStorageTypeTemporary));
336 EXPECT_TRUE(
337 db.DeleteOriginLastEvictionTime(kOrigin3, kStorageTypeTemporary));
338
339 last_eviction_time = base::Time();
340 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin1, kStorageTypeTemporary,
341 &last_eviction_time));
342 EXPECT_EQ(base::Time(), last_eviction_time);
343 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin2, kStorageTypeTemporary,
344 &last_eviction_time));
345 EXPECT_EQ(base::Time(), last_eviction_time);
346 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin3, kStorageTypeTemporary,
347 &last_eviction_time));
348 EXPECT_EQ(base::Time(), last_eviction_time);
349
350 // Deleting an origin that is not present should not fail.
351 EXPECT_TRUE(db.DeleteOriginLastEvictionTime(GURL("http://notpresent.com"),
352 kStorageTypeTemporary));
353 }
354
297 void RegisterInitialOriginInfo(const base::FilePath& kDbFile) { 355 void RegisterInitialOriginInfo(const base::FilePath& kDbFile) {
298 QuotaDatabase db(kDbFile); 356 QuotaDatabase db(kDbFile);
299 357
300 const GURL kOrigins[] = { 358 const GURL kOrigins[] = {
301 GURL("http://a/"), 359 GURL("http://a/"),
302 GURL("http://b/"), 360 GURL("http://b/"),
303 GURL("http://c/") }; 361 GURL("http://c/") };
304 std::set<GURL> origins(kOrigins, kOrigins + arraysize(kOrigins)); 362 std::set<GURL> origins(kOrigins, kOrigins + arraysize(kOrigins));
305 363
306 EXPECT_TRUE(db.RegisterInitialOriginInfo(origins, kStorageTypeTemporary)); 364 EXPECT_TRUE(db.RegisterInitialOriginInfo(origins, kStorageTypeTemporary));
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 ASSERT_TRUE(data_dir.CreateUniqueTempDir()); 557 ASSERT_TRUE(data_dir.CreateUniqueTempDir());
500 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName); 558 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName);
501 LazyOpen(kDbFile); 559 LazyOpen(kDbFile);
502 LazyOpen(base::FilePath()); 560 LazyOpen(base::FilePath());
503 } 561 }
504 562
505 TEST_F(QuotaDatabaseTest, UpgradeSchema) { 563 TEST_F(QuotaDatabaseTest, UpgradeSchema) {
506 base::ScopedTempDir data_dir; 564 base::ScopedTempDir data_dir;
507 ASSERT_TRUE(data_dir.CreateUniqueTempDir()); 565 ASSERT_TRUE(data_dir.CreateUniqueTempDir());
508 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName); 566 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName);
509 UpgradeSchemaV2toV3(kDbFile); 567 UpgradeSchemaV2toV5(kDbFile);
510 } 568 }
511 569
512 TEST_F(QuotaDatabaseTest, HostQuota) { 570 TEST_F(QuotaDatabaseTest, HostQuota) {
513 base::ScopedTempDir data_dir; 571 base::ScopedTempDir data_dir;
514 ASSERT_TRUE(data_dir.CreateUniqueTempDir()); 572 ASSERT_TRUE(data_dir.CreateUniqueTempDir());
515 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName); 573 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName);
516 HostQuota(kDbFile); 574 HostQuota(kDbFile);
517 HostQuota(base::FilePath()); 575 HostQuota(base::FilePath());
518 } 576 }
519 577
(...skipping 14 matching lines...) Expand all
534 } 592 }
535 593
536 TEST_F(QuotaDatabaseTest, OriginLastModifiedSince) { 594 TEST_F(QuotaDatabaseTest, OriginLastModifiedSince) {
537 base::ScopedTempDir data_dir; 595 base::ScopedTempDir data_dir;
538 ASSERT_TRUE(data_dir.CreateUniqueTempDir()); 596 ASSERT_TRUE(data_dir.CreateUniqueTempDir());
539 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName); 597 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName);
540 OriginLastModifiedSince(kDbFile); 598 OriginLastModifiedSince(kDbFile);
541 OriginLastModifiedSince(base::FilePath()); 599 OriginLastModifiedSince(base::FilePath());
542 } 600 }
543 601
602 TEST_F(QuotaDatabaseTest, OriginLastEvicted) {
603 base::ScopedTempDir data_dir;
604 ASSERT_TRUE(data_dir.CreateUniqueTempDir());
605 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName);
606 OriginLastEvicted(kDbFile);
607 OriginLastEvicted(base::FilePath());
608 }
609
544 TEST_F(QuotaDatabaseTest, BootstrapFlag) { 610 TEST_F(QuotaDatabaseTest, BootstrapFlag) {
545 base::ScopedTempDir data_dir; 611 base::ScopedTempDir data_dir;
546 ASSERT_TRUE(data_dir.CreateUniqueTempDir()); 612 ASSERT_TRUE(data_dir.CreateUniqueTempDir());
547 613
548 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName); 614 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName);
549 QuotaDatabase db(kDbFile); 615 QuotaDatabase db(kDbFile);
550 616
551 EXPECT_FALSE(db.IsOriginDatabaseBootstrapped()); 617 EXPECT_FALSE(db.IsOriginDatabaseBootstrapped());
552 EXPECT_TRUE(db.SetOriginDatabaseBootstrapped(true)); 618 EXPECT_TRUE(db.SetOriginDatabaseBootstrapped(true));
553 EXPECT_TRUE(db.IsOriginDatabaseBootstrapped()); 619 EXPECT_TRUE(db.IsOriginDatabaseBootstrapped());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName); 651 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName);
586 LazyOpen(kDbFile); 652 LazyOpen(kDbFile);
587 ASSERT_TRUE(sql::test::CorruptSizeInHeader(kDbFile)); 653 ASSERT_TRUE(sql::test::CorruptSizeInHeader(kDbFile));
588 sql::ScopedErrorIgnorer ignore_errors; 654 sql::ScopedErrorIgnorer ignore_errors;
589 ignore_errors.IgnoreError(SQLITE_CORRUPT); 655 ignore_errors.IgnoreError(SQLITE_CORRUPT);
590 Reopen(kDbFile); 656 Reopen(kDbFile);
591 EXPECT_TRUE(ignore_errors.CheckIgnoredErrors()); 657 EXPECT_TRUE(ignore_errors.CheckIgnoredErrors());
592 } 658 }
593 659
594 } // namespace content 660 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/quota/quota_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698