Index: net/disk_cache/backend_unittest.cc |
=================================================================== |
--- net/disk_cache/backend_unittest.cc (revision 22579) |
+++ net/disk_cache/backend_unittest.cc (working copy) |
@@ -67,6 +67,7 @@ |
void BackendDisable(); |
void BackendDisable2(); |
void BackendDisable3(); |
+ void BackendDisable4(); |
}; |
void DiskCacheBackendTest::BackendBasics() { |
@@ -1324,6 +1325,71 @@ |
BackendDisable3(); |
} |
+// If we disable the cache, already open entries should work as far as possible. |
+void DiskCacheBackendTest::BackendDisable4() { |
+ disk_cache::Entry *entry1, *entry2, *entry3, *entry4; |
+ void* iter = NULL; |
+ ASSERT_TRUE(cache_->OpenNextEntry(&iter, &entry1)); |
+ |
+ char key2[2000]; |
+ char key3[20000]; |
+ CacheTestFillBuffer(key2, sizeof(key2), true); |
+ CacheTestFillBuffer(key3, sizeof(key3), true); |
+ key2[sizeof(key2) - 1] = '\0'; |
+ key3[sizeof(key3) - 1] = '\0'; |
+ ASSERT_TRUE(cache_->CreateEntry(key2, &entry2)); |
+ ASSERT_TRUE(cache_->CreateEntry(key3, &entry3)); |
+ |
+ const int kBufSize = 20000; |
+ scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kBufSize); |
+ memset(buf->data(), 0, kBufSize); |
+ EXPECT_EQ(100, entry2->WriteData(0, 0, buf, 100, NULL, false)); |
+ EXPECT_EQ(kBufSize, entry3->WriteData(0, 0, buf, kBufSize, NULL, false)); |
+ |
+ // This line should disable the cache but not delete it. |
+ EXPECT_FALSE(cache_->OpenNextEntry(&iter, &entry4)); |
+ EXPECT_EQ(4, cache_->GetEntryCount()); |
+ |
+ EXPECT_FALSE(cache_->CreateEntry("cache is disabled", &entry4)); |
+ |
+ EXPECT_EQ(100, entry2->ReadData(0, 0, buf, 100, NULL)); |
+ EXPECT_EQ(100, entry2->WriteData(0, 0, buf, 100, NULL, false)); |
+ EXPECT_EQ(100, entry2->WriteData(1, 0, buf, 100, NULL, false)); |
+ |
+ EXPECT_EQ(kBufSize, entry3->ReadData(0, 0, buf, kBufSize, NULL)); |
+ EXPECT_EQ(kBufSize, entry3->WriteData(0, 0, buf, kBufSize, NULL, false)); |
+ EXPECT_EQ(kBufSize, entry3->WriteData(1, 0, buf, kBufSize, NULL, false)); |
+ |
+ std::string key = entry2->GetKey(); |
+ EXPECT_EQ(sizeof(key2) - 1, key.size()); |
+ key = entry3->GetKey(); |
+ EXPECT_EQ(sizeof(key3) - 1, key.size()); |
+ |
+ entry1->Close(); |
+ entry2->Close(); |
+ entry3->Close(); |
+ MessageLoop::current()->RunAllPending(); |
+ |
+ EXPECT_EQ(0, cache_->GetEntryCount()); |
+} |
+ |
+TEST_F(DiskCacheBackendTest, DisableSuccess4) { |
+ ASSERT_TRUE(CopyTestCache(L"bad_rankings")); |
+ DisableFirstCleanup(); |
+ SetDirectMode(); |
+ InitCache(); |
+ BackendDisable4(); |
+} |
+ |
+TEST_F(DiskCacheBackendTest, NewEvictionDisableSuccess4) { |
+ ASSERT_TRUE(CopyTestCache(L"bad_rankings")); |
+ DisableFirstCleanup(); |
+ SetDirectMode(); |
+ SetNewEviction(); |
+ InitCache(); |
+ BackendDisable4(); |
+} |
+ |
TEST_F(DiskCacheTest, Backend_UsageStats) { |
MessageLoopHelper helper; |