summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorharuki@chromium.org <haruki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-10 09:41:28 +0000
committerharuki@chromium.org <haruki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-10 09:41:28 +0000
commitd310bfc838eae95ce9284b579b48a7554ae0ffe8 (patch)
treef289f30c76af7602c026fdd2e5070ca6fd2e7143 /chrome
parent69d5bdee70781481d224bf5562305d3b68708c41 (diff)
downloadchromium_src-d310bfc838eae95ce9284b579b48a7554ae0ffe8.zip
chromium_src-d310bfc838eae95ce9284b579b48a7554ae0ffe8.tar.gz
chromium_src-d310bfc838eae95ce9284b579b48a7554ae0ffe8.tar.bz2
Implement initialization for GDataCache to use in-memory metadata for tests.
Use the in-memory version for GDataFileSystemTest. BUG=137945 TEST=unit_tests --gtest_filter='GDataFileSystemTest*' Review URL: https://chromiumcodereview.appspot.com/10830181 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@151013 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/chromeos/gdata/gdata_cache.cc17
-rw-r--r--chrome/browser/chromeos/gdata/gdata_cache.h7
-rw-r--r--chrome/browser/chromeos/gdata/gdata_cache_metadata.cc35
-rw-r--r--chrome/browser/chromeos/gdata/gdata_cache_metadata.h11
-rw-r--r--chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc2
5 files changed, 53 insertions, 19 deletions
diff --git a/chrome/browser/chromeos/gdata/gdata_cache.cc b/chrome/browser/chromeos/gdata/gdata_cache.cc
index 3af5532..036e33b 100644
--- a/chrome/browser/chromeos/gdata/gdata_cache.cc
+++ b/chrome/browser/chromeos/gdata/gdata_cache.cc
@@ -697,6 +697,14 @@ void GDataCache::RequestInitializeOnUIThread() {
base::Bind(&GDataCache::Initialize, base::Unretained(this)));
}
+void GDataCache::RequestInitializeOnUIThreadForTesting() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ blocking_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&GDataCache::InitializeForTesting, base::Unretained(this)));
+}
+
void GDataCache::ForceRescanOnUIThreadForTesting() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
@@ -743,6 +751,15 @@ void GDataCache::Initialize() {
metadata_->Initialize(cache_paths_);
}
+void GDataCache::InitializeForTesting() {
+ AssertOnSequencedWorkerPool();
+
+ InitCachePaths(cache_paths_);
+ metadata_ = GDataCacheMetadata::CreateGDataCacheMetadataForTesting(
+ blocking_task_runner_).Pass();
+ metadata_->Initialize(cache_paths_);
+}
+
void GDataCache::Destroy() {
AssertOnSequencedWorkerPool();
delete this;
diff --git a/chrome/browser/chromeos/gdata/gdata_cache.h b/chrome/browser/chromeos/gdata/gdata_cache.h
index c9eb8d4..2c67f0e 100644
--- a/chrome/browser/chromeos/gdata/gdata_cache.h
+++ b/chrome/browser/chromeos/gdata/gdata_cache.h
@@ -272,6 +272,9 @@ class GDataCache {
// Utility method to call Initialize on UI thread.
void RequestInitializeOnUIThread();
+ // Utility method to call InitializeForTesting on UI thread.
+ void RequestInitializeOnUIThreadForTesting();
+
// Force a rescan of cache files, for testing.
void ForceRescanOnUIThreadForTesting();
@@ -329,6 +332,10 @@ class GDataCache {
// Initializes the cache.
void Initialize();
+ // Initializes the cache with in-memory cache for testing.
+ // The in-memory cache is used since it's faster than the db.
+ void InitializeForTesting();
+
// Deletes the cache.
void Destroy();
diff --git a/chrome/browser/chromeos/gdata/gdata_cache_metadata.cc b/chrome/browser/chromeos/gdata/gdata_cache_metadata.cc
index d10829e..0736af9 100644
--- a/chrome/browser/chromeos/gdata/gdata_cache_metadata.cc
+++ b/chrome/browser/chromeos/gdata/gdata_cache_metadata.cc
@@ -287,14 +287,15 @@ bool CheckIfMd5Matches(
////////////////////////////////////////////////////////////////////////////////
// GDataCacheMetadata implementation with std::map.
+// Used for testing.
-class GDataCacheMetadataMap : public GDataCacheMetadata {
+class FakeGDataCacheMetadata : public GDataCacheMetadata {
public:
- explicit GDataCacheMetadataMap(
+ explicit FakeGDataCacheMetadata(
base::SequencedTaskRunner* blocking_task_runner);
private:
- virtual ~GDataCacheMetadataMap();
+ virtual ~FakeGDataCacheMetadata();
// GDataCacheMetadata overrides:
virtual void Initialize(const std::vector<FilePath>& cache_paths) OVERRIDE;
@@ -312,27 +313,27 @@ class GDataCacheMetadataMap : public GDataCacheMetadata {
CacheMap cache_map_;
- DISALLOW_COPY_AND_ASSIGN(GDataCacheMetadataMap);
+ DISALLOW_COPY_AND_ASSIGN(FakeGDataCacheMetadata);
};
-GDataCacheMetadataMap::GDataCacheMetadataMap(
+FakeGDataCacheMetadata::FakeGDataCacheMetadata(
base::SequencedTaskRunner* blocking_task_runner)
: GDataCacheMetadata(blocking_task_runner) {
AssertOnSequencedWorkerPool();
}
-GDataCacheMetadataMap::~GDataCacheMetadataMap() {
+FakeGDataCacheMetadata::~FakeGDataCacheMetadata() {
AssertOnSequencedWorkerPool();
}
-void GDataCacheMetadataMap::Initialize(
+void FakeGDataCacheMetadata::Initialize(
const std::vector<FilePath>& cache_paths) {
AssertOnSequencedWorkerPool();
ScanCachePaths(cache_paths, &cache_map_);
}
-void GDataCacheMetadataMap::AddOrUpdateCacheEntry(
+void FakeGDataCacheMetadata::AddOrUpdateCacheEntry(
const std::string& resource_id,
const GDataCacheEntry& cache_entry) {
AssertOnSequencedWorkerPool();
@@ -345,7 +346,7 @@ void GDataCacheMetadataMap::AddOrUpdateCacheEntry(
}
}
-void GDataCacheMetadataMap::RemoveCacheEntry(const std::string& resource_id) {
+void FakeGDataCacheMetadata::RemoveCacheEntry(const std::string& resource_id) {
AssertOnSequencedWorkerPool();
CacheMap::iterator iter = cache_map_.find(resource_id);
@@ -355,7 +356,7 @@ void GDataCacheMetadataMap::RemoveCacheEntry(const std::string& resource_id) {
}
}
-bool GDataCacheMetadataMap::GetCacheEntry(const std::string& resource_id,
+bool FakeGDataCacheMetadata::GetCacheEntry(const std::string& resource_id,
const std::string& md5,
GDataCacheEntry* entry) {
DCHECK(entry);
@@ -377,7 +378,7 @@ bool GDataCacheMetadataMap::GetCacheEntry(const std::string& resource_id,
return true;
}
-void GDataCacheMetadataMap::RemoveTemporaryFiles() {
+void FakeGDataCacheMetadata::RemoveTemporaryFiles() {
AssertOnSequencedWorkerPool();
CacheMap::iterator iter = cache_map_.begin();
@@ -391,7 +392,7 @@ void GDataCacheMetadataMap::RemoveTemporaryFiles() {
}
}
-void GDataCacheMetadataMap::Iterate(const IterateCallback& callback) {
+void FakeGDataCacheMetadata::Iterate(const IterateCallback& callback) {
AssertOnSequencedWorkerPool();
for (CacheMap::const_iterator iter = cache_map_.begin();
@@ -400,7 +401,7 @@ void GDataCacheMetadataMap::Iterate(const IterateCallback& callback) {
}
}
-void GDataCacheMetadataMap::ForceRescanForTesting(
+void FakeGDataCacheMetadata::ForceRescanForTesting(
const std::vector<FilePath>& cache_paths) {
AssertOnSequencedWorkerPool();
@@ -596,6 +597,14 @@ scoped_ptr<GDataCacheMetadata> GDataCacheMetadata::CreateGDataCacheMetadata(
new GDataCacheMetadataDB(blocking_task_runner));
}
+// static
+scoped_ptr<GDataCacheMetadata>
+GDataCacheMetadata::CreateGDataCacheMetadataForTesting(
+ base::SequencedTaskRunner* blocking_task_runner) {
+ return scoped_ptr<GDataCacheMetadata>(
+ new FakeGDataCacheMetadata(blocking_task_runner));
+}
+
void GDataCacheMetadata::AssertOnSequencedWorkerPool() {
DCHECK(!blocking_task_runner_ ||
blocking_task_runner_->RunsTasksOnCurrentThread());
diff --git a/chrome/browser/chromeos/gdata/gdata_cache_metadata.h b/chrome/browser/chromeos/gdata/gdata_cache_metadata.h
index d6bebd5..281497a 100644
--- a/chrome/browser/chromeos/gdata/gdata_cache_metadata.h
+++ b/chrome/browser/chromeos/gdata/gdata_cache_metadata.h
@@ -31,14 +31,15 @@ class GDataCacheMetadata {
virtual ~GDataCacheMetadata();
- // |pool| and |sequence_token| are used to assert that the functions are
- // called on the right sequenced worker pool with the right sequence token.
- //
- // For testing, the thread assertion can be disabled by passing NULL and
- // the default value of SequenceToken.
+ // Creates GDataCacheMetadata instance.
static scoped_ptr<GDataCacheMetadata> CreateGDataCacheMetadata(
base::SequencedTaskRunner* blocking_task_runner);
+ // Creates GDataCacheMetadata instance. This uses FakeGDataCacheMetadata,
+ // which is an in-memory implmentation and faster than GDataCacheMetadataDB.
+ static scoped_ptr<GDataCacheMetadata> CreateGDataCacheMetadataForTesting(
+ base::SequencedTaskRunner* blocking_task_runner);
+
// Initialize the cache metadata store.
virtual void Initialize(const std::vector<FilePath>& cache_paths) = 0;
// Adds a new cache entry corresponding to |resource_id| if it doesn't
diff --git a/chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc b/chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc
index ada502e..f22c0e5 100644
--- a/chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc
+++ b/chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc
@@ -257,7 +257,7 @@ class GDataFileSystemTest : public testing::Test {
file_system_->AddObserver(mock_directory_observer_.get());
file_system_->Initialize();
- cache_->RequestInitializeOnUIThread();
+ cache_->RequestInitializeOnUIThreadForTesting();
test_util::RunBlockingPoolTask();
}