diff options
author | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-02 18:17:18 +0000 |
---|---|---|
committer | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-02 18:17:18 +0000 |
commit | ffd77f7a08e63b7bc531f6c463c39a794a21b6d1 (patch) | |
tree | 02efef3f71d5cca8cd0837dab1738585b2ed128c /net/disk_cache/entry_unittest.cc | |
parent | a23f3031457f6518580a976204c099bb43069dd2 (diff) | |
download | chromium_src-ffd77f7a08e63b7bc531f6c463c39a794a21b6d1.zip chromium_src-ffd77f7a08e63b7bc531f6c463c39a794a21b6d1.tar.gz chromium_src-ffd77f7a08e63b7bc531f6c463c39a794a21b6d1.tar.bz2 |
If a disk cache entry is stored as an external file, and it is reused (open/truncate/write/close), the current cache size should be modified accordingly. I'm also bumping up the version number for the cache files, to force re-creation with this revision.
BUG=1305909
TEST=Unit test.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@291 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/disk_cache/entry_unittest.cc')
-rw-r--r-- | net/disk_cache/entry_unittest.cc | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/net/disk_cache/entry_unittest.cc b/net/disk_cache/entry_unittest.cc index d2eea79..b61c657 100644 --- a/net/disk_cache/entry_unittest.cc +++ b/net/disk_cache/entry_unittest.cc @@ -48,6 +48,7 @@ class DiskCacheEntryTest : public DiskCacheTestBase { void GetKey(); void GrowData(); void TruncateData(); + void ReuseEntry(); void InvalidData(); void DoomEntry(); void DoomedEntry(); @@ -571,6 +572,46 @@ TEST_F(DiskCacheEntryTest, MemoryOnlyTruncateData) { TruncateData(); } +// Write more than the total cache capacity but to a single entry. +void DiskCacheEntryTest::ReuseEntry() { + std::string key1("the first key"); + disk_cache::Entry *entry; + ASSERT_TRUE(cache_->CreateEntry(key1, &entry)); + + entry->Close(); + std::string key2("the second key"); + ASSERT_TRUE(cache_->CreateEntry(key2, &entry)); + + char buffer[20000]; + CacheTestFillBuffer(buffer, sizeof(buffer), false); + + for (int i = 0; i < 15; i++) { + EXPECT_EQ(0, entry->WriteData(0, 0, buffer, 0, NULL, true)); + EXPECT_EQ(20000, entry->WriteData(0, 0, buffer, 20000, NULL, false)); + entry->Close(); + ASSERT_TRUE(cache_->OpenEntry(key2, &entry)); + } + + entry->Close(); + ASSERT_TRUE(cache_->OpenEntry(key1, &entry)) << "have not evicted this entry"; + entry->Close(); +} + +TEST_F(DiskCacheEntryTest, ReuseEntry) { + SetDirectMode(); + SetMaxSize(200 * 1024); + InitCache(); + ReuseEntry(); +} + +TEST_F(DiskCacheEntryTest, MemoryOnlyReuseEntry) { + SetDirectMode(); + SetMemoryOnlyMode(); + SetMaxSize(200 * 1024); + InitCache(); + ReuseEntry(); +} + // Reading somewhere that was not written should return zeros. void DiskCacheEntryTest::InvalidData() { std::string key1("the first key"); |