summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-26 17:00:31 +0000
committerrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-26 17:00:31 +0000
commit5897ea34708d4454d1492576a5983f189f0dcd2f (patch)
tree5110c082872ebb70f7e6167a9111d79aa46b9e41 /net
parent6cf0f62073918db69c7973bcbf083dd6200ba90b (diff)
downloadchromium_src-5897ea34708d4454d1492576a5983f189f0dcd2f.zip
chromium_src-5897ea34708d4454d1492576a5983f189f0dcd2f.tar.gz
chromium_src-5897ea34708d4454d1492576a5983f189f0dcd2f.tar.bz2
Disk cache: Add a unit test that instantiates three caches
at the same time (for media files). Review URL: http://codereview.chromium.org/45061 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12561 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/disk_cache/backend_unittest.cc28
-rw-r--r--net/disk_cache/disk_cache_test_util.cc28
-rw-r--r--net/disk_cache/disk_cache_test_util.h1
3 files changed, 50 insertions, 7 deletions
diff --git a/net/disk_cache/backend_unittest.cc b/net/disk_cache/backend_unittest.cc
index 1562621..9851203 100644
--- a/net/disk_cache/backend_unittest.cc
+++ b/net/disk_cache/backend_unittest.cc
@@ -995,3 +995,31 @@ TEST_F(DiskCacheBackendTest, MemoryOnlyDoomAll) {
InitCache();
BackendDoomAll();
}
+
+// We should be able to create the same entry on multiple simultaneous instances
+// of the cache.
+TEST_F(DiskCacheTest, MultipleInstances) {
+ ScopedTestCache store1;
+ ScopedTestCache store2(L"cache_test2");
+ ScopedTestCache store3(L"cache_test3");
+
+ const int kNumberOfCaches = 3;
+ scoped_ptr<disk_cache::Backend> cache[kNumberOfCaches];
+
+ cache[0].reset(disk_cache::CreateCacheBackend(store1.path_wstring(), false, 0,
+ net::DISK_CACHE));
+ cache[1].reset(disk_cache::CreateCacheBackend(store2.path_wstring(), false, 0,
+ net::MEDIA_CACHE));
+ cache[2].reset(disk_cache::CreateCacheBackend(store3.path_wstring(), false, 0,
+ net::TEMP_MEDIA_CACHE));
+
+ ASSERT_TRUE(cache[0].get() != NULL && cache[1].get() != NULL &&
+ cache[2].get() != 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));
+ entry->Close();
+ }
+}
diff --git a/net/disk_cache/disk_cache_test_util.cc b/net/disk_cache/disk_cache_test_util.cc
index 555b2e5..9744f74 100644
--- a/net/disk_cache/disk_cache_test_util.cc
+++ b/net/disk_cache/disk_cache_test_util.cc
@@ -14,6 +14,20 @@
using base::Time;
using base::TimeDelta;
+namespace {
+
+std::wstring BuildCachePath(const std::wstring& name) {
+ std::wstring path;
+ PathService::Get(base::DIR_TEMP, &path);
+ file_util::AppendToPath(&path, name);
+ if (!file_util::PathExists(path))
+ file_util::CreateDirectory(path);
+
+ return path;
+}
+
+} // namespace.
+
std::string GenerateKey(bool same_length) {
char key[200];
CacheTestFillBuffer(key, sizeof(key), same_length);
@@ -40,13 +54,7 @@ void CacheTestFillBuffer(char* buffer, size_t len, bool no_nulls) {
}
std::wstring GetCachePath() {
- std::wstring path;
- PathService::Get(base::DIR_TEMP, &path);
- file_util::AppendToPath(&path, L"cache_test");
- if (!file_util::PathExists(path))
- file_util::CreateDirectory(path);
-
- return path;
+ return BuildCachePath(L"cache_test");
}
bool CreateCacheTestFile(const wchar_t* name) {
@@ -83,6 +91,12 @@ ScopedTestCache::ScopedTestCache() : path_(GetCachePath()) {
DCHECK(result);
}
+ScopedTestCache::ScopedTestCache(const std::wstring& name)
+ : path_(BuildCachePath(name)) {
+ bool result = DeleteCache(path_.c_str());
+ DCHECK(result);
+}
+
ScopedTestCache::~ScopedTestCache() {
file_util::Delete(path(), true);
}
diff --git a/net/disk_cache/disk_cache_test_util.h b/net/disk_cache/disk_cache_test_util.h
index 05dce99..d715506 100644
--- a/net/disk_cache/disk_cache_test_util.h
+++ b/net/disk_cache/disk_cache_test_util.h
@@ -38,6 +38,7 @@ bool CheckCacheIntegrity(const std::wstring& path);
class ScopedTestCache {
public:
ScopedTestCache();
+ ScopedTestCache(const std::wstring& name); // Use a specific folder name.
~ScopedTestCache();
FilePath path() const { return FilePath::FromWStringHack(path_); }