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

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

Issue 1424653002: Add access count and time-since-accessed histograms to temp storage eviction. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@quota_uma
Patch Set: fix test Created 5 years, 1 month 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 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 299
300 void OriginLastEvicted(const base::FilePath& kDbFile) { 300 void OriginLastEvicted(const base::FilePath& kDbFile) {
301 QuotaDatabase db(kDbFile); 301 QuotaDatabase db(kDbFile);
302 ASSERT_TRUE(db.LazyOpen(true)); 302 ASSERT_TRUE(db.LazyOpen(true));
303 303
304 const GURL kOrigin1("http://a/"); 304 const GURL kOrigin1("http://a/");
305 const GURL kOrigin2("http://b/"); 305 const GURL kOrigin2("http://b/");
306 const GURL kOrigin3("http://c/"); 306 const GURL kOrigin3("http://c/");
307 307
308 base::Time last_eviction_time; 308 base::Time last_eviction_time;
309 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin1, kStorageTypeTemporary, 309 EXPECT_FALSE(db.GetOriginLastEvictionTime(kOrigin1, kStorageTypeTemporary,
310 &last_eviction_time)); 310 &last_eviction_time));
311 EXPECT_EQ(base::Time(), last_eviction_time); 311 EXPECT_EQ(base::Time(), last_eviction_time);
312 312
313 // Report last eviction time for the test origins. 313 // Report last eviction time for the test origins.
314 EXPECT_TRUE(db.SetOriginLastEvictionTime( 314 EXPECT_TRUE(db.SetOriginLastEvictionTime(
315 kOrigin1, kStorageTypeTemporary, base::Time::FromInternalValue(10))); 315 kOrigin1, kStorageTypeTemporary, base::Time::FromInternalValue(10)));
316 EXPECT_TRUE(db.SetOriginLastEvictionTime( 316 EXPECT_TRUE(db.SetOriginLastEvictionTime(
317 kOrigin2, kStorageTypeTemporary, base::Time::FromInternalValue(20))); 317 kOrigin2, kStorageTypeTemporary, base::Time::FromInternalValue(20)));
318 EXPECT_TRUE(db.SetOriginLastEvictionTime( 318 EXPECT_TRUE(db.SetOriginLastEvictionTime(
319 kOrigin3, kStorageTypeTemporary, base::Time::FromInternalValue(30))); 319 kOrigin3, kStorageTypeTemporary, base::Time::FromInternalValue(30)));
320 320
321 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin1, kStorageTypeTemporary, 321 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin1, kStorageTypeTemporary,
322 &last_eviction_time)); 322 &last_eviction_time));
323 EXPECT_EQ(base::Time::FromInternalValue(10), last_eviction_time); 323 EXPECT_EQ(base::Time::FromInternalValue(10), last_eviction_time);
324 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin2, kStorageTypeTemporary, 324 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin2, kStorageTypeTemporary,
325 &last_eviction_time)); 325 &last_eviction_time));
326 EXPECT_EQ(base::Time::FromInternalValue(20), last_eviction_time); 326 EXPECT_EQ(base::Time::FromInternalValue(20), last_eviction_time);
327 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin3, kStorageTypeTemporary, 327 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin3, kStorageTypeTemporary,
328 &last_eviction_time)); 328 &last_eviction_time));
329 EXPECT_EQ(base::Time::FromInternalValue(30), last_eviction_time); 329 EXPECT_EQ(base::Time::FromInternalValue(30), last_eviction_time);
330 330
331 // Delete last eviction times for the test origins. 331 // Delete last eviction times for the test origins.
332 EXPECT_TRUE( 332 EXPECT_TRUE(
333 db.DeleteOriginLastEvictionTime(kOrigin1, kStorageTypeTemporary)); 333 db.DeleteOriginLastEvictionTime(kOrigin1, kStorageTypeTemporary));
334 EXPECT_TRUE( 334 EXPECT_TRUE(
335 db.DeleteOriginLastEvictionTime(kOrigin2, kStorageTypeTemporary)); 335 db.DeleteOriginLastEvictionTime(kOrigin2, kStorageTypeTemporary));
336 EXPECT_TRUE( 336 EXPECT_TRUE(
337 db.DeleteOriginLastEvictionTime(kOrigin3, kStorageTypeTemporary)); 337 db.DeleteOriginLastEvictionTime(kOrigin3, kStorageTypeTemporary));
338 338
339 last_eviction_time = base::Time(); 339 last_eviction_time = base::Time();
340 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin1, kStorageTypeTemporary, 340 EXPECT_FALSE(db.GetOriginLastEvictionTime(kOrigin1, kStorageTypeTemporary,
341 &last_eviction_time)); 341 &last_eviction_time));
342 EXPECT_EQ(base::Time(), last_eviction_time); 342 EXPECT_EQ(base::Time(), last_eviction_time);
343 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin2, kStorageTypeTemporary, 343 EXPECT_FALSE(db.GetOriginLastEvictionTime(kOrigin2, kStorageTypeTemporary,
344 &last_eviction_time)); 344 &last_eviction_time));
345 EXPECT_EQ(base::Time(), last_eviction_time); 345 EXPECT_EQ(base::Time(), last_eviction_time);
346 EXPECT_TRUE(db.GetOriginLastEvictionTime(kOrigin3, kStorageTypeTemporary, 346 EXPECT_FALSE(db.GetOriginLastEvictionTime(kOrigin3, kStorageTypeTemporary,
347 &last_eviction_time)); 347 &last_eviction_time));
348 EXPECT_EQ(base::Time(), last_eviction_time); 348 EXPECT_EQ(base::Time(), last_eviction_time);
349 349
350 // Deleting an origin that is not present should not fail. 350 // Deleting an origin that is not present should not fail.
351 EXPECT_TRUE(db.DeleteOriginLastEvictionTime(GURL("http://notpresent.com"), 351 EXPECT_TRUE(db.DeleteOriginLastEvictionTime(GURL("http://notpresent.com"),
352 kStorageTypeTemporary)); 352 kStorageTypeTemporary));
353 } 353 }
354 354
355 void RegisterInitialOriginInfo(const base::FilePath& kDbFile) { 355 void RegisterInitialOriginInfo(const base::FilePath& kDbFile) {
356 QuotaDatabase db(kDbFile); 356 QuotaDatabase db(kDbFile);
357 357
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 AssignOriginInfoTable(db.db_.get(), begin, end); 438 AssignOriginInfoTable(db.db_.get(), begin, end);
439 db.Commit(); 439 db.Commit();
440 440
441 typedef EntryVerifier<Entry> Verifier; 441 typedef EntryVerifier<Entry> Verifier;
442 Verifier verifier(begin, end); 442 Verifier verifier(begin, end);
443 EXPECT_TRUE(db.DumpOriginInfoTable( 443 EXPECT_TRUE(db.DumpOriginInfoTable(
444 base::Bind(&Verifier::Run, base::Unretained(&verifier)))); 444 base::Bind(&Verifier::Run, base::Unretained(&verifier))));
445 EXPECT_TRUE(verifier.table.empty()); 445 EXPECT_TRUE(verifier.table.empty());
446 } 446 }
447 447
448 void GetOriginInfo(const base::FilePath& kDbFile) {
449 const GURL kOrigin = GURL("http://go/");
450 typedef QuotaDatabase::OriginInfoTableEntry Entry;
451 Entry kTableEntries[] = {
452 Entry(kOrigin, kStorageTypeTemporary, 100, base::Time(), base::Time())};
453 Entry* begin = kTableEntries;
454 Entry* end = kTableEntries + arraysize(kTableEntries);
455
456 QuotaDatabase db(kDbFile);
457 EXPECT_TRUE(db.LazyOpen(true));
458 AssignOriginInfoTable(db.db_.get(), begin, end);
459 db.Commit();
460
461 {
462 Entry entry;
463 EXPECT_TRUE(db.GetOriginInfo(kOrigin, kStorageTypeTemporary, &entry));
464 EXPECT_EQ(kTableEntries[0].type, entry.type);
465 EXPECT_EQ(kTableEntries[0].origin, entry.origin);
466 EXPECT_EQ(kTableEntries[0].used_count, entry.used_count);
467 EXPECT_EQ(kTableEntries[0].last_access_time, entry.last_access_time);
468 EXPECT_EQ(kTableEntries[0].last_modified_time, entry.last_modified_time);
469 }
470
471 {
472 Entry entry;
473 EXPECT_FALSE(db.GetOriginInfo(GURL("http://notpresent.org/"),
474 kStorageTypeTemporary, &entry));
475 }
476 }
477
448 private: 478 private:
449 template <typename Iterator> 479 template <typename Iterator>
450 void AssignQuotaTable(sql::Connection* db, Iterator itr, Iterator end) { 480 void AssignQuotaTable(sql::Connection* db, Iterator itr, Iterator end) {
451 ASSERT_NE(db, (sql::Connection*)NULL); 481 ASSERT_NE(db, (sql::Connection*)NULL);
452 for (; itr != end; ++itr) { 482 for (; itr != end; ++itr) {
453 const char* kSql = 483 const char* kSql =
454 "INSERT INTO HostQuotaTable" 484 "INSERT INTO HostQuotaTable"
455 " (host, type, quota)" 485 " (host, type, quota)"
456 " VALUES (?, ?, ?)"; 486 " VALUES (?, ?, ?)";
457 sql::Statement statement; 487 sql::Statement statement;
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 } 668 }
639 669
640 TEST_F(QuotaDatabaseTest, DumpOriginInfoTable) { 670 TEST_F(QuotaDatabaseTest, DumpOriginInfoTable) {
641 base::ScopedTempDir data_dir; 671 base::ScopedTempDir data_dir;
642 ASSERT_TRUE(data_dir.CreateUniqueTempDir()); 672 ASSERT_TRUE(data_dir.CreateUniqueTempDir());
643 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName); 673 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName);
644 DumpOriginInfoTable(kDbFile); 674 DumpOriginInfoTable(kDbFile);
645 DumpOriginInfoTable(base::FilePath()); 675 DumpOriginInfoTable(base::FilePath());
646 } 676 }
647 677
678 TEST_F(QuotaDatabaseTest, GetOriginInfo) {
679 GetOriginInfo(base::FilePath());
680 }
681
648 TEST_F(QuotaDatabaseTest, OpenCorruptedDatabase) { 682 TEST_F(QuotaDatabaseTest, OpenCorruptedDatabase) {
649 base::ScopedTempDir data_dir; 683 base::ScopedTempDir data_dir;
650 ASSERT_TRUE(data_dir.CreateUniqueTempDir()); 684 ASSERT_TRUE(data_dir.CreateUniqueTempDir());
651 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName); 685 const base::FilePath kDbFile = data_dir.path().AppendASCII(kDBFileName);
652 LazyOpen(kDbFile); 686 LazyOpen(kDbFile);
653 ASSERT_TRUE(sql::test::CorruptSizeInHeader(kDbFile)); 687 ASSERT_TRUE(sql::test::CorruptSizeInHeader(kDbFile));
654 sql::ScopedErrorIgnorer ignore_errors; 688 sql::ScopedErrorIgnorer ignore_errors;
655 ignore_errors.IgnoreError(SQLITE_CORRUPT); 689 ignore_errors.IgnoreError(SQLITE_CORRUPT);
656 Reopen(kDbFile); 690 Reopen(kDbFile);
657 EXPECT_TRUE(ignore_errors.CheckIgnoredErrors()); 691 EXPECT_TRUE(ignore_errors.CheckIgnoredErrors());
658 } 692 }
659 693
660 } // namespace content 694 } // 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