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

Unified Diff: net/disk_cache/backend_unittest.cc

Issue 2739007: Disk cache: Update the disk cache tools and tests to use... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/disk_cache/backend_impl.cc ('k') | net/disk_cache/disk_cache.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/disk_cache/backend_unittest.cc
===================================================================
--- net/disk_cache/backend_unittest.cc (revision 49603)
+++ net/disk_cache/backend_unittest.cc (working copy)
@@ -7,6 +7,7 @@
#include "base/path_service.h"
#include "base/platform_thread.h"
#include "base/string_util.h"
+#include "base/thread.h"
#include "net/base/io_buffer.h"
#include "net/base/net_errors.h"
#include "net/base/test_completion_callback.h"
@@ -15,6 +16,7 @@
#include "net/disk_cache/disk_cache_test_util.h"
#include "net/disk_cache/histogram_macros.h"
#include "net/disk_cache/mapped_file.h"
+#include "net/disk_cache/mem_backend_impl.h"
#include "testing/gtest/include/gtest/gtest.h"
using base::Time;
@@ -187,6 +189,49 @@
BackendKeying();
}
+TEST_F(DiskCacheTest, CreateBackend) {
+ TestCompletionCallback cb;
+
+ {
+ FilePath path = GetCacheFilePath();
+ ASSERT_TRUE(DeleteCache(path));
+ base::Thread cache_thread("CacheThread");
+ ASSERT_TRUE(cache_thread.StartWithOptions(
+ base::Thread::Options(MessageLoop::TYPE_IO, 0)));
+
+ // Test the private factory methods.
+ disk_cache::Backend* cache = NULL;
+ int rv = disk_cache::BackendImpl::CreateBackend(
+ path, false, 0, net::DISK_CACHE, disk_cache::kNoRandom,
+ cache_thread.message_loop_proxy(), &cache, &cb);
+ ASSERT_EQ(net::OK, cb.GetResult(rv));
+ ASSERT_TRUE(cache);
+ delete cache;
+
+ cache = disk_cache::MemBackendImpl::CreateBackend(0);
+ ASSERT_TRUE(cache);
+ delete cache;
+ cache = NULL;
+
+ // Now test the public API.
+ rv = disk_cache::CreateCacheBackend(net::DISK_CACHE, path, 0, false,
+ cache_thread.message_loop_proxy(),
+ &cache, &cb);
+ ASSERT_EQ(net::OK, cb.GetResult(rv));
+ ASSERT_TRUE(cache);
+ delete cache;
+ cache = NULL;
+
+ rv = disk_cache::CreateCacheBackend(net::MEMORY_CACHE, FilePath(), 0, false,
+ NULL, &cache, &cb);
+ ASSERT_EQ(net::OK, cb.GetResult(rv));
+ ASSERT_TRUE(cache);
+ delete cache;
+ }
+
+ MessageLoop::current()->RunAllPending();
+}
+
TEST_F(DiskCacheBackendTest, ExternalFiles) {
InitCache();
// First, lets create a file on the folder.
@@ -215,12 +260,19 @@
{
FilePath path = GetCacheFilePath();
ASSERT_TRUE(DeleteCache(path));
+ base::Thread cache_thread("CacheThread");
+ ASSERT_TRUE(cache_thread.StartWithOptions(
+ base::Thread::Options(MessageLoop::TYPE_IO, 0)));
- disk_cache::Backend* cache =
- disk_cache::CreateCacheBackend(path, false, 0, net::DISK_CACHE);
+ disk_cache::Backend* cache;
+ int rv = disk_cache::BackendImpl::CreateBackend(
+ path, false, 0, net::DISK_CACHE, disk_cache::kNoRandom,
+ cache_thread.message_loop_proxy(), &cache, &callback);
+ ASSERT_EQ(net::OK, callback.GetResult(rv));
disk_cache::Entry* entry;
- ASSERT_TRUE(cache->CreateEntry("some key", &entry));
+ rv = cache->CreateEntry("some key", &entry, &callback);
+ ASSERT_EQ(net::OK, callback.GetResult(rv));
const int kSize = 25000;
scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kSize);
@@ -247,11 +299,20 @@
ASSERT_TRUE(DeleteCache(path));
FilePath index = path.AppendASCII("index");
ASSERT_EQ(5, file_util::WriteFile(index, "hello", 5));
- scoped_ptr<disk_cache::Backend> backend;
- backend.reset(disk_cache::BackendImpl::CreateBackend(path, false, 0,
- net::DISK_CACHE,
- disk_cache::kNone));
- ASSERT_TRUE(backend.get() == NULL);
+
+ base::Thread cache_thread("CacheThread");
+ ASSERT_TRUE(cache_thread.StartWithOptions(
+ base::Thread::Options(MessageLoop::TYPE_IO, 0)));
+ TestCompletionCallback cb;
+
+ disk_cache::Backend* backend = NULL;
+ int rv = disk_cache::BackendImpl::CreateBackend(
+ path, false, 0, net::DISK_CACHE, disk_cache::kNone,
+ cache_thread.message_loop_proxy(), &backend, &cb);
+ ASSERT_NE(net::OK, cb.GetResult(rv));
+
+ ASSERT_TRUE(backend == NULL);
+ delete backend;
}
void DiskCacheBackendTest::BackendSetSize() {
@@ -1088,20 +1149,26 @@
}
// Tests dealing with cache files that cannot be recovered.
-TEST_F(DiskCacheTest, Backend_DeleteOld) {
+TEST_F(DiskCacheTest, DeleteOld) {
ASSERT_TRUE(CopyTestCache(L"wrong_version"));
FilePath path = GetCacheFilePath();
- scoped_ptr<disk_cache::Backend> cache;
- cache.reset(disk_cache::CreateCacheBackend(path, true, 0, net::DISK_CACHE));
+ base::Thread cache_thread("CacheThread");
+ ASSERT_TRUE(cache_thread.StartWithOptions(
+ base::Thread::Options(MessageLoop::TYPE_IO, 0)));
+ TestCompletionCallback cb;
+ disk_cache::Backend* cache;
+ int rv = disk_cache::BackendImpl::CreateBackend(
+ path, true, 0, net::DISK_CACHE, disk_cache::kNoRandom,
+ cache_thread.message_loop_proxy(), &cache, &cb);
+ ASSERT_EQ(net::OK, cb.GetResult(rv));
+
MessageLoopHelper helper;
- ASSERT_TRUE(NULL != cache.get());
+ ASSERT_TRUE(NULL != cache);
ASSERT_EQ(0, cache->GetEntryCount());
- // Wait for a callback that never comes... about 2 secs :). The message loop
- // has to run to allow destruction of the cleaner thread.
- helper.WaitUntilCacheIoFinished(1);
+ delete cache;
}
// We want to be able to deal with messed up entries on disk.
@@ -1443,7 +1510,8 @@
FilePath path = GetCacheFilePath();
ASSERT_TRUE(DeleteCache(path));
scoped_ptr<disk_cache::BackendImpl> cache;
- cache.reset(new disk_cache::BackendImpl(path));
+ cache.reset(new disk_cache::BackendImpl(
+ path, base::MessageLoopProxy::CreateForCurrentThread()));
ASSERT_TRUE(NULL != cache.get());
cache->SetUnitTestMode();
ASSERT_TRUE(cache->Init());
@@ -1546,23 +1614,34 @@
ScopedTestCache store1;
ScopedTestCache store2("cache_test2");
ScopedTestCache store3("cache_test3");
+ base::Thread cache_thread("CacheThread");
+ ASSERT_TRUE(cache_thread.StartWithOptions(
+ base::Thread::Options(MessageLoop::TYPE_IO, 0)));
+ TestCompletionCallback cb;
const int kNumberOfCaches = 2;
- scoped_ptr<disk_cache::Backend> cache[kNumberOfCaches];
+ disk_cache::Backend* cache[kNumberOfCaches];
- cache[0].reset(disk_cache::CreateCacheBackend(store1.path(), false, 0,
- net::DISK_CACHE));
- cache[1].reset(disk_cache::CreateCacheBackend(store2.path(), false, 0,
- net::MEDIA_CACHE));
+ int rv = disk_cache::BackendImpl::CreateBackend(
+ store1.path(), false, 0, net::DISK_CACHE, disk_cache::kNone,
+ cache_thread.message_loop_proxy(), &cache[0], &cb);
+ ASSERT_EQ(net::OK, cb.GetResult(rv));
+ rv = disk_cache::BackendImpl::CreateBackend(
+ store2.path(), false, 0, net::MEDIA_CACHE, disk_cache::kNone,
+ cache_thread.message_loop_proxy(), &cache[1], &cb);
+ ASSERT_EQ(net::OK, cb.GetResult(rv));
- ASSERT_TRUE(cache[0].get() != NULL && cache[1].get() != NULL);
+ ASSERT_TRUE(cache[0] != NULL && cache[1] != NULL);
std::string key("the first key");
disk_cache::Entry* entry;
for (int i = 0; i < kNumberOfCaches; i++) {
- ASSERT_TRUE(cache[i]->CreateEntry(key, &entry));
+ rv = cache[i]->CreateEntry(key, &entry, &cb);
+ ASSERT_EQ(net::OK, cb.GetResult(rv));
entry->Close();
}
+ delete cache[0];
+ delete cache[1];
}
// Test the six regions of the curve that determines the max cache size.
« no previous file with comments | « net/disk_cache/backend_impl.cc ('k') | net/disk_cache/disk_cache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698