Index: net/disk_cache/entry_unittest.cc |
=================================================================== |
--- net/disk_cache/entry_unittest.cc (revision 41901) |
+++ net/disk_cache/entry_unittest.cc (working copy) |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -34,7 +34,7 @@ |
void ZeroLengthIO(); |
void ReuseEntry(int size); |
void InvalidData(); |
- void DoomEntry(); |
+ void DoomNormalEntry(); |
void DoomedEntry(); |
void BasicSparseIO(bool async); |
void HugeSparseIO(bool async); |
@@ -45,7 +45,7 @@ |
void DiskCacheEntryTest::InternalSyncIO() { |
disk_cache::Entry *entry1 = NULL; |
- ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry("the first key", &entry1)); |
ASSERT_TRUE(NULL != entry1); |
const int kSize1 = 10; |
@@ -97,7 +97,7 @@ |
void DiskCacheEntryTest::InternalAsyncIO() { |
disk_cache::Entry *entry1 = NULL; |
- ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry("the first key", &entry1)); |
ASSERT_TRUE(NULL != entry1); |
// Avoid using internal buffers for the test. We have to write something to |
@@ -108,7 +108,7 @@ |
EXPECT_EQ(0, entry1->WriteData(0, 15 * 1024, NULL, 0, NULL, false)); |
EXPECT_EQ(0, entry1->WriteData(1, 15 * 1024, NULL, 0, NULL, false)); |
entry1->Close(); |
- ASSERT_TRUE(cache_->OpenEntry("the first key", &entry1)); |
+ ASSERT_EQ(net::OK, OpenEntry("the first key", &entry1)); |
// Let's verify that each IO goes to the right callback object. |
CallbackTest callback1(false); |
@@ -238,7 +238,7 @@ |
void DiskCacheEntryTest::ExternalSyncIO() { |
disk_cache::Entry *entry1; |
- ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry("the first key", &entry1)); |
const int kSize1 = 17000; |
const int kSize2 = 25000; |
@@ -284,7 +284,7 @@ |
void DiskCacheEntryTest::ExternalAsyncIO() { |
disk_cache::Entry *entry1; |
- ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry("the first key", &entry1)); |
// Let's verify that each IO goes to the right callback object. |
CallbackTest callback1(false); |
@@ -391,7 +391,7 @@ |
void DiskCacheEntryTest::StreamAccess() { |
disk_cache::Entry *entry = NULL; |
- ASSERT_TRUE(cache_->CreateEntry("the first key", &entry)); |
+ ASSERT_EQ(net::OK, CreateEntry("the first key", &entry)); |
ASSERT_TRUE(NULL != entry); |
const int kBufferSize = 1024; |
@@ -427,7 +427,7 @@ |
void DiskCacheEntryTest::GetKey() { |
std::string key1("the first key"); |
disk_cache::Entry *entry1; |
- ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); |
EXPECT_EQ(key1, entry1->GetKey()) << "short key"; |
entry1->Close(); |
@@ -439,14 +439,14 @@ |
key_buffer[1000] = '\0'; |
key1 = key_buffer; |
- ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); |
EXPECT_TRUE(key1 == entry1->GetKey()) << "1000 bytes key"; |
entry1->Close(); |
key_buffer[1000] = 'p'; |
key_buffer[3000] = '\0'; |
key1 = key_buffer; |
- ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); |
EXPECT_TRUE(key1 == entry1->GetKey()) << "medium size key"; |
entry1->Close(); |
@@ -454,7 +454,7 @@ |
key_buffer[19999] = '\0'; |
key1 = key_buffer; |
- ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); |
EXPECT_TRUE(key1 == entry1->GetKey()) << "long key"; |
entry1->Close(); |
} |
@@ -473,7 +473,7 @@ |
void DiskCacheEntryTest::GrowData() { |
std::string key1("the first key"); |
disk_cache::Entry *entry1, *entry2; |
- ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); |
const int kSize = 20000; |
scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize); |
@@ -499,13 +499,13 @@ |
entry1->Close(); |
memset(buffer2->data(), 0, kSize); |
- ASSERT_TRUE(cache_->CreateEntry("Second key", &entry2)); |
+ ASSERT_EQ(net::OK, CreateEntry("Second key", &entry2)); |
EXPECT_EQ(10, entry2->WriteData(0, 0, buffer1, 10, NULL, false)); |
EXPECT_EQ(10, entry2->GetDataSize(0)); |
entry2->Close(); |
// Go from an internal address to a bigger block size. |
- ASSERT_TRUE(cache_->OpenEntry("Second key", &entry2)); |
+ ASSERT_EQ(net::OK, OpenEntry("Second key", &entry2)); |
EXPECT_EQ(2000, entry2->WriteData(0, 0, buffer1, 2000, NULL, false)); |
EXPECT_EQ(2000, entry2->GetDataSize(0)); |
EXPECT_EQ(2000, entry2->ReadData(0, 0, buffer2, 2000, NULL)); |
@@ -514,7 +514,7 @@ |
memset(buffer2->data(), 0, kSize); |
// Go from an internal address to an external one. |
- ASSERT_TRUE(cache_->OpenEntry("Second key", &entry2)); |
+ ASSERT_EQ(net::OK, OpenEntry("Second key", &entry2)); |
EXPECT_EQ(20000, entry2->WriteData(0, 0, buffer1, kSize, NULL, false)); |
EXPECT_EQ(20000, entry2->GetDataSize(0)); |
EXPECT_EQ(20000, entry2->ReadData(0, 0, buffer2, kSize, NULL)); |
@@ -536,7 +536,7 @@ |
void DiskCacheEntryTest::TruncateData() { |
std::string key1("the first key"); |
disk_cache::Entry *entry1; |
- ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); |
const int kSize1 = 20000; |
const int kSize2 = 20000; |
@@ -558,7 +558,7 @@ |
EXPECT_EQ(0, entry1->WriteData(0, 0, buffer1, 0, NULL, true)); |
EXPECT_EQ(0, entry1->GetDataSize(0)); |
entry1->Close(); |
- ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, OpenEntry(key1, &entry1)); |
// Go to an external file. |
EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, 20000, NULL, true)); |
@@ -612,7 +612,7 @@ |
void DiskCacheEntryTest::ZeroLengthIO() { |
std::string key1("the first key"); |
disk_cache::Entry *entry1; |
- ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); |
EXPECT_EQ(0, entry1->ReadData(0, 0, NULL, 0, NULL)); |
EXPECT_EQ(0, entry1->WriteData(0, 0, NULL, 0, NULL, false)); |
@@ -641,11 +641,11 @@ |
void DiskCacheEntryTest::ReuseEntry(int size) { |
std::string key1("the first key"); |
disk_cache::Entry *entry; |
- ASSERT_TRUE(cache_->CreateEntry(key1, &entry)); |
+ ASSERT_EQ(net::OK, CreateEntry(key1, &entry)); |
entry->Close(); |
std::string key2("the second key"); |
- ASSERT_TRUE(cache_->CreateEntry(key2, &entry)); |
+ ASSERT_EQ(net::OK, CreateEntry(key2, &entry)); |
scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(size); |
CacheTestFillBuffer(buffer->data(), size, false); |
@@ -654,11 +654,11 @@ |
EXPECT_EQ(0, entry->WriteData(0, 0, buffer, 0, NULL, true)); |
EXPECT_EQ(size, entry->WriteData(0, 0, buffer, size, NULL, false)); |
entry->Close(); |
- ASSERT_TRUE(cache_->OpenEntry(key2, &entry)); |
+ ASSERT_EQ(net::OK, OpenEntry(key2, &entry)); |
} |
entry->Close(); |
- ASSERT_TRUE(cache_->OpenEntry(key1, &entry)) << "have not evicted this entry"; |
+ ASSERT_EQ(net::OK, OpenEntry(key1, &entry)) << "have not evicted this entry"; |
entry->Close(); |
} |
@@ -696,7 +696,7 @@ |
void DiskCacheEntryTest::InvalidData() { |
std::string key1("the first key"); |
disk_cache::Entry *entry1; |
- ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); |
const int kSize1 = 20000; |
const int kSize2 = 20000; |
@@ -714,7 +714,7 @@ |
EXPECT_EQ(100, entry1->ReadData(0, 300, buffer3, 100, NULL)); |
EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 100)); |
entry1->Close(); |
- ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, OpenEntry(key1, &entry1)); |
// The entry is now on disk. Load it and extend it. |
EXPECT_EQ(200, entry1->WriteData(0, 800, buffer1, 200, NULL, false)); |
@@ -722,7 +722,7 @@ |
EXPECT_EQ(100, entry1->ReadData(0, 700, buffer3, 100, NULL)); |
EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 100)); |
entry1->Close(); |
- ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, OpenEntry(key1, &entry1)); |
// This time using truncate. |
EXPECT_EQ(200, entry1->WriteData(0, 1800, buffer1, 200, NULL, true)); |
@@ -768,10 +768,10 @@ |
InvalidData(); |
} |
-void DiskCacheEntryTest::DoomEntry() { |
+void DiskCacheEntryTest::DoomNormalEntry() { |
std::string key1("the first key"); |
disk_cache::Entry *entry1; |
- ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); |
entry1->Doom(); |
entry1->Close(); |
@@ -781,7 +781,7 @@ |
buffer->data()[19999] = '\0'; |
key1 = buffer->data(); |
- ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); |
EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer, kSize, NULL, false)); |
EXPECT_EQ(20000, entry1->WriteData(1, 0, buffer, kSize, NULL, false)); |
entry1->Doom(); |
@@ -792,20 +792,20 @@ |
TEST_F(DiskCacheEntryTest, DoomEntry) { |
InitCache(); |
- DoomEntry(); |
+ DoomNormalEntry(); |
} |
TEST_F(DiskCacheEntryTest, MemoryOnlyDoomEntry) { |
SetMemoryOnlyMode(); |
InitCache(); |
- DoomEntry(); |
+ DoomNormalEntry(); |
} |
// Verify that basic operations work as expected with doomed entries. |
void DiskCacheEntryTest::DoomedEntry() { |
std::string key("the first key"); |
disk_cache::Entry *entry; |
- ASSERT_TRUE(cache_->CreateEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
entry->Doom(); |
EXPECT_EQ(0, cache_->GetEntryCount()); |
@@ -831,13 +831,13 @@ |
TEST_F(DiskCacheEntryTest, DoomedEntry) { |
InitCache(); |
- DoomEntry(); |
+ DoomedEntry(); |
} |
TEST_F(DiskCacheEntryTest, MemoryOnlyDoomedEntry) { |
SetMemoryOnlyMode(); |
InitCache(); |
- DoomEntry(); |
+ DoomedEntry(); |
} |
// Test that child entries in a memory cache backend are not visible from |
@@ -852,7 +852,7 @@ |
std::string key("the first key"); |
disk_cache::Entry* parent_entry; |
- ASSERT_TRUE(cache_->CreateEntry(key, &parent_entry)); |
+ ASSERT_EQ(net::OK, CreateEntry(key, &parent_entry)); |
// Writes to the parent entry. |
EXPECT_EQ(kSize, parent_entry->WriteSparseData(0, buf, kSize, NULL)); |
@@ -866,7 +866,7 @@ |
void* iter = NULL; |
disk_cache::Entry* entry = NULL; |
int count = 0; |
- while (cache_->OpenNextEntry(&iter, &entry)) { |
+ while (OpenNextEntry(&iter, &entry) == net::OK) { |
ASSERT_TRUE(entry != NULL); |
++count; |
disk_cache::MemEntryImpl* mem_entry = |
@@ -919,7 +919,7 @@ |
void DiskCacheEntryTest::BasicSparseIO(bool async) { |
std::string key("the first key"); |
disk_cache::Entry* entry; |
- ASSERT_TRUE(cache_->CreateEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
const int kSize = 2048; |
scoped_refptr<net::IOBuffer> buf_1 = new net::IOBuffer(kSize); |
@@ -938,7 +938,7 @@ |
entry->Close(); |
// Check everything again. |
- ASSERT_TRUE(cache_->OpenEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, OpenEntry(key, &entry)); |
VerifyContentSparseIO(entry, 0, buf_1->data(), kSize, async); |
VerifyContentSparseIO(entry, 0x400000, buf_1->data(), kSize, async); |
VerifyContentSparseIO(entry, 0x800000000LL, buf_1->data(), kSize, async); |
@@ -970,7 +970,7 @@ |
void DiskCacheEntryTest::HugeSparseIO(bool async) { |
std::string key("the first key"); |
disk_cache::Entry* entry; |
- ASSERT_TRUE(cache_->CreateEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
// Write 1.2 MB so that we cover multiple entries. |
const int kSize = 1200 * 1024; |
@@ -983,7 +983,7 @@ |
entry->Close(); |
// Check it again. |
- ASSERT_TRUE(cache_->OpenEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, OpenEntry(key, &entry)); |
VerifyContentSparseIO(entry, 0x20F0000, buf_1->data(), kSize, async); |
entry->Close(); |
} |
@@ -1013,7 +1013,7 @@ |
void DiskCacheEntryTest::GetAvailableRange() { |
std::string key("the first key"); |
disk_cache::Entry* entry; |
- ASSERT_TRUE(cache_->CreateEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
const int kSize = 16 * 1024; |
scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kSize); |
@@ -1074,7 +1074,7 @@ |
std::string key("the first key"); |
disk_cache::Entry* entry; |
- ASSERT_TRUE(cache_->CreateEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
// This loop writes back to back starting from offset 0 and 9000. |
for (int i = 0; i < kSize; i += 1024) { |
@@ -1104,7 +1104,7 @@ |
disk_cache::Entry* entry; |
std::string key("the first key"); |
- ASSERT_TRUE(cache_->CreateEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
// Writes in the middle of an entry. |
EXPECT_EQ(1024, entry->WriteSparseData(0, buf, 1024, NULL)); |
@@ -1149,8 +1149,8 @@ |
std::string key1("the first key"); |
std::string key2("the second key"); |
disk_cache::Entry *entry1, *entry2; |
- ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
- ASSERT_TRUE(cache_->CreateEntry(key2, &entry2)); |
+ ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); |
+ ASSERT_EQ(net::OK, CreateEntry(key2, &entry2)); |
const int kSize = 4 * 1024; |
scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kSize); |
@@ -1177,7 +1177,7 @@ |
entry2->Close(); |
// Doom the second entry after it's fully saved. |
- EXPECT_TRUE(cache_->DoomEntry(key2)); |
+ EXPECT_EQ(net::OK, DoomEntry(key2)); |
// Make sure we do all needed work. This may fail for entry2 if between Close |
// and DoomEntry the system decides to remove all traces of the file from the |
@@ -1212,7 +1212,7 @@ |
void DiskCacheEntryTest::PartialSparseEntry() { |
std::string key("the first key"); |
disk_cache::Entry* entry; |
- ASSERT_TRUE(cache_->CreateEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
// We should be able to deal with IO that is not aligned to the block size |
// of a sparse entry, at least to write a big range without leaving holes. |
@@ -1229,7 +1229,7 @@ |
EXPECT_EQ(kSmallSize, |
entry->WriteSparseData(1080321, buf1, kSmallSize, NULL)); |
entry->Close(); |
- ASSERT_TRUE(cache_->OpenEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, OpenEntry(key, &entry)); |
scoped_refptr<net::IOBuffer> buf2 = new net::IOBuffer(kSize); |
memset(buf2->data(), 0, kSize); |
@@ -1294,13 +1294,13 @@ |
PartialSparseEntry(); |
} |
+// Tests that corrupt sparse children are removed automatically. |
TEST_F(DiskCacheEntryTest, CleanupSparseEntry) { |
InitCache(); |
std::string key("the first key"); |
disk_cache::Entry* entry; |
- ASSERT_TRUE(cache_->CreateEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
- // Corrupt sparse children should be removed automatically. |
const int kSize = 4 * 1024; |
scoped_refptr<net::IOBuffer> buf1 = new net::IOBuffer(kSize); |
CacheTestFillBuffer(buf1->data(), kSize, false); |
@@ -1315,7 +1315,7 @@ |
void* iter = NULL; |
int count = 0; |
std::string child_key[2]; |
- while (cache_->OpenNextEntry(&iter, &entry)) { |
+ while (OpenNextEntry(&iter, &entry) == net::OK) { |
ASSERT_TRUE(entry != NULL); |
// Writing to an entry will alter the LRU list and invalidate the iterator. |
if (entry->GetKey() != key && count < 2) |
@@ -1323,14 +1323,14 @@ |
entry->Close(); |
} |
for (int i = 0; i < 2; i++) { |
- ASSERT_TRUE(cache_->OpenEntry(child_key[i], &entry)); |
+ ASSERT_EQ(net::OK, OpenEntry(child_key[i], &entry)); |
// Overwrite the header's magic and signature. |
EXPECT_EQ(12, entry->WriteData(2, 0, buf1, 12, NULL, false)); |
entry->Close(); |
} |
EXPECT_EQ(4, cache_->GetEntryCount()); |
- ASSERT_TRUE(cache_->OpenEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, OpenEntry(key, &entry)); |
// Two children should be gone. One while reading and one while writing. |
EXPECT_EQ(0, entry->ReadSparseData(2 * k1Meg + 8192, buf1, kSize, NULL)); |
@@ -1349,7 +1349,7 @@ |
InitCache(); |
std::string key("the first key"); |
disk_cache::Entry* entry; |
- ASSERT_TRUE(cache_->CreateEntry(key, &entry)); |
+ ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
const int kSize = 40 * 1024; |
scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kSize); |
@@ -1358,7 +1358,7 @@ |
TestCompletionCallback cb1, cb2, cb3, cb4; |
int64 offset = 0; |
int tries = 0; |
- const int maxtries = 100; // Avoid hang on infinitely fast disks |
+ const int maxtries = 100; // Avoid hang on infinitely fast disks. |
for (int ret = 0; ret != net::ERR_IO_PENDING; offset += kSize * 4) { |
ret = entry->WriteSparseData(offset, buf, kSize, &cb1); |
if (++tries > maxtries) { |