| Index: chrome/browser/chromeos/drive/file_cache_unittest.cc
|
| diff --git a/chrome/browser/chromeos/drive/file_cache_unittest.cc b/chrome/browser/chromeos/drive/file_cache_unittest.cc
|
| index 0f38245df2b5e81480efdd5a496f29938e0d8808..bbb9b883df895272d27f191cecb6a6485bcbe690 100644
|
| --- a/chrome/browser/chromeos/drive/file_cache_unittest.cc
|
| +++ b/chrome/browser/chromeos/drive/file_cache_unittest.cc
|
| @@ -60,12 +60,6 @@ class FileCacheTest : public testing::Test {
|
| return cache->RenameCacheFilesToNewFormat();
|
| }
|
|
|
| - FileError GetCacheEntry(FileCache* cache,
|
| - const std::string& id,
|
| - FileCacheEntry* cache_entry) {
|
| - return cache->storage_->GetCacheEntry(id, cache_entry);
|
| - }
|
| -
|
| content::TestBrowserThreadBundle thread_bundle_;
|
| base::ScopedTempDir temp_dir_;
|
| base::FilePath cache_files_dir_;
|
| @@ -83,6 +77,9 @@ TEST_F(FileCacheTest, RecoverFilesFromCacheDirectory) {
|
| dir_source_root.AppendASCII("chrome/test/data/chromeos/drive/image.png");
|
|
|
| // Store files. This file should not be moved.
|
| + ResourceEntry entry;
|
| + entry.set_local_id("id_foo");
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->Store("id_foo", "md5", src_path,
|
| FileCache::FILE_OPERATION_COPY));
|
|
|
| @@ -131,6 +128,10 @@ TEST_F(FileCacheTest, FreeDiskSpaceIfNeededFor) {
|
|
|
| // Store a file as a 'temporary' file and remember the path.
|
| const std::string id_tmp = "id_tmp", md5_tmp = "md5_tmp";
|
| +
|
| + ResourceEntry entry;
|
| + entry.set_local_id(id_tmp);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| ASSERT_EQ(FILE_ERROR_OK,
|
| cache_->Store(id_tmp, md5_tmp, src_file,
|
| FileCache::FILE_OPERATION_COPY));
|
| @@ -139,6 +140,9 @@ TEST_F(FileCacheTest, FreeDiskSpaceIfNeededFor) {
|
|
|
| // Store a file as a pinned file and remember the path.
|
| const std::string id_pinned = "id_pinned", md5_pinned = "md5_pinned";
|
| + entry.Clear();
|
| + entry.set_local_id(id_pinned);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| ASSERT_EQ(FILE_ERROR_OK,
|
| cache_->Store(id_pinned, md5_pinned, src_file,
|
| FileCache::FILE_OPERATION_COPY));
|
| @@ -153,11 +157,12 @@ TEST_F(FileCacheTest, FreeDiskSpaceIfNeededFor) {
|
| EXPECT_TRUE(cache_->FreeDiskSpaceIfNeededFor(kNeededBytes));
|
|
|
| // Only 'temporary' file gets removed.
|
| - FileCacheEntry entry;
|
| - EXPECT_EQ(FILE_ERROR_NOT_FOUND, GetCacheEntry(cache_.get(), id_tmp, &entry));
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id_tmp, &entry));
|
| + EXPECT_FALSE(entry.file_specific_info().cache_state().is_present());
|
| EXPECT_FALSE(base::PathExists(tmp_path));
|
|
|
| - EXPECT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id_pinned, &entry));
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id_pinned, &entry));
|
| + EXPECT_TRUE(entry.file_specific_info().cache_state().is_present());
|
| EXPECT_TRUE(base::PathExists(pinned_path));
|
|
|
| // Returns false when disk space cannot be freed.
|
| @@ -177,6 +182,9 @@ TEST_F(FileCacheTest, GetFile) {
|
| temp_dir_.path().AppendASCII(kCacheFileDirectory);
|
|
|
| // Try to get an existing file from cache.
|
| + ResourceEntry entry;
|
| + entry.set_local_id(id);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->Store(id, md5, src_file_path,
|
| FileCache::FILE_OPERATION_COPY));
|
| base::FilePath cache_file_path;
|
| @@ -191,6 +199,9 @@ TEST_F(FileCacheTest, GetFile) {
|
|
|
| // Get file from cache with different id.
|
| id = "id2";
|
| + entry.Clear();
|
| + entry.set_local_id(id);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| EXPECT_EQ(FILE_ERROR_NOT_FOUND, cache_->GetFile(id, &cache_file_path));
|
|
|
| // Pin a non-existent file.
|
| @@ -222,13 +233,15 @@ TEST_F(FileCacheTest, Store) {
|
| std::string md5(base::MD5String(src_contents));
|
|
|
| // Store a file.
|
| + ResourceEntry entry;
|
| + entry.set_local_id(id);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->Store(
|
| id, md5, src_file_path, FileCache::FILE_OPERATION_COPY));
|
|
|
| - FileCacheEntry cache_entry;
|
| - EXPECT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id, &cache_entry));
|
| - EXPECT_TRUE(cache_entry.is_present());
|
| - EXPECT_EQ(md5, cache_entry.md5());
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id, &entry));
|
| + EXPECT_TRUE(entry.file_specific_info().cache_state().is_present());
|
| + EXPECT_EQ(md5, entry.file_specific_info().cache_state().md5());
|
|
|
| base::FilePath cache_file_path;
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->GetFile(id, &cache_file_path));
|
| @@ -243,10 +256,10 @@ TEST_F(FileCacheTest, Store) {
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->Store(
|
| id, std::string(), src_file_path, FileCache::FILE_OPERATION_COPY));
|
|
|
| - EXPECT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id, &cache_entry));
|
| - EXPECT_TRUE(cache_entry.is_present());
|
| - EXPECT_TRUE(cache_entry.md5().empty());
|
| - EXPECT_TRUE(cache_entry.is_dirty());
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id, &entry));
|
| + EXPECT_TRUE(entry.file_specific_info().cache_state().is_present());
|
| + EXPECT_TRUE(entry.file_specific_info().cache_state().md5().empty());
|
| + EXPECT_TRUE(entry.file_specific_info().cache_state().is_dirty());
|
|
|
| // No free space available.
|
| fake_free_disk_space_getter_->set_default_value(0);
|
| @@ -264,38 +277,42 @@ TEST_F(FileCacheTest, PinAndUnpin) {
|
| std::string md5(base::MD5String(src_contents));
|
|
|
| // Store a file.
|
| + ResourceEntry entry;
|
| + entry.set_local_id(id);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->Store(
|
| id, md5, src_file_path, FileCache::FILE_OPERATION_COPY));
|
|
|
| - FileCacheEntry cache_entry;
|
| - EXPECT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id, &cache_entry));
|
| - EXPECT_FALSE(cache_entry.is_pinned());
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id, &entry));
|
| + EXPECT_FALSE(entry.file_specific_info().cache_state().is_pinned());
|
|
|
| // Pin the existing file.
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->Pin(id));
|
|
|
| - EXPECT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id, &cache_entry));
|
| - EXPECT_TRUE(cache_entry.is_pinned());
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id, &entry));
|
| + EXPECT_TRUE(entry.file_specific_info().cache_state().is_pinned());
|
|
|
| // Unpin the file.
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->Unpin(id));
|
|
|
| - EXPECT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id, &cache_entry));
|
| - EXPECT_FALSE(cache_entry.is_pinned());
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id, &entry));
|
| + EXPECT_FALSE(entry.file_specific_info().cache_state().is_pinned());
|
|
|
| // Pin a non-present file.
|
| std::string id_non_present = "id_non_present";
|
| + entry.Clear();
|
| + entry.set_local_id(id_non_present);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->Pin(id_non_present));
|
|
|
| - EXPECT_EQ(FILE_ERROR_OK,
|
| - GetCacheEntry(cache_.get(), id_non_present, &cache_entry));
|
| - EXPECT_TRUE(cache_entry.is_pinned());
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id_non_present, &entry));
|
| + EXPECT_TRUE(entry.file_specific_info().cache_state().is_pinned());
|
|
|
| // Unpin the previously pinned non-existent file.
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->Unpin(id_non_present));
|
|
|
| - EXPECT_EQ(FILE_ERROR_NOT_FOUND,
|
| - GetCacheEntry(cache_.get(), id_non_present, &cache_entry));
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id_non_present, &entry));
|
| + EXPECT_FALSE(entry.file_specific_info().has_cache_state());
|
|
|
| // Unpin a file that doesn't exist in cache and is not pinned.
|
| EXPECT_EQ(FILE_ERROR_NOT_FOUND, cache_->Unpin("id_non_existent"));
|
| @@ -310,6 +327,9 @@ TEST_F(FileCacheTest, MountUnmount) {
|
| std::string md5(base::MD5String(src_contents));
|
|
|
| // Store a file.
|
| + ResourceEntry entry;
|
| + entry.set_local_id(id);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->Store(
|
| id, md5, src_file_path, FileCache::FILE_OPERATION_COPY));
|
|
|
| @@ -333,14 +353,16 @@ TEST_F(FileCacheTest, OpenForWrite) {
|
| ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), &src_file));
|
|
|
| const std::string id = "id";
|
| + ResourceEntry entry;
|
| + entry.set_local_id(id);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| ASSERT_EQ(FILE_ERROR_OK, cache_->Store(id, "md5", src_file,
|
| FileCache::FILE_OPERATION_COPY));
|
|
|
| // Entry is not dirty nor opened.
|
| EXPECT_FALSE(cache_->IsOpenedForWrite(id));
|
| - FileCacheEntry entry;
|
| - EXPECT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id, &entry));
|
| - EXPECT_FALSE(entry.is_dirty());
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id, &entry));
|
| + EXPECT_FALSE(entry.file_specific_info().cache_state().is_dirty());
|
|
|
| // Open (1).
|
| scoped_ptr<base::ScopedClosureRunner> file_closer1;
|
| @@ -348,8 +370,8 @@ TEST_F(FileCacheTest, OpenForWrite) {
|
| EXPECT_TRUE(cache_->IsOpenedForWrite(id));
|
|
|
| // Entry is dirty.
|
| - EXPECT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id, &entry));
|
| - EXPECT_TRUE(entry.is_dirty());
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id, &entry));
|
| + EXPECT_TRUE(entry.file_specific_info().cache_state().is_dirty());
|
|
|
| // Open (2).
|
| scoped_ptr<base::ScopedClosureRunner> file_closer2;
|
| @@ -376,6 +398,9 @@ TEST_F(FileCacheTest, UpdateMd5) {
|
| EXPECT_TRUE(google_apis::test_util::WriteStringToFile(src_file_path,
|
| contents_before));
|
| std::string id("id1");
|
| + ResourceEntry entry;
|
| + entry.set_local_id(id);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->Store(id, base::MD5String(contents_before),
|
| src_file_path,
|
| FileCache::FILE_OPERATION_COPY));
|
| @@ -396,14 +421,14 @@ TEST_F(FileCacheTest, UpdateMd5) {
|
| file_closer.reset();
|
|
|
| // MD5 was cleared by OpenForWrite().
|
| - FileCacheEntry entry;
|
| - EXPECT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id, &entry));
|
| - EXPECT_TRUE(entry.md5().empty());
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id, &entry));
|
| + EXPECT_TRUE(entry.file_specific_info().cache_state().md5().empty());
|
|
|
| // Update MD5.
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->UpdateMd5(id));
|
| - EXPECT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id, &entry));
|
| - EXPECT_EQ(base::MD5String(contents_after), entry.md5());
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id, &entry));
|
| + EXPECT_EQ(base::MD5String(contents_after),
|
| + entry.file_specific_info().cache_state().md5());
|
| }
|
|
|
| TEST_F(FileCacheTest, ClearDirty) {
|
| @@ -412,6 +437,9 @@ TEST_F(FileCacheTest, ClearDirty) {
|
| ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), &src_file));
|
|
|
| const std::string id = "id";
|
| + ResourceEntry entry;
|
| + entry.set_local_id(id);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| ASSERT_EQ(FILE_ERROR_OK, cache_->Store(id, "md5", src_file,
|
| FileCache::FILE_OPERATION_COPY));
|
|
|
| @@ -420,9 +448,8 @@ TEST_F(FileCacheTest, ClearDirty) {
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->OpenForWrite(id, &file_closer));
|
|
|
| // Entry is dirty.
|
| - FileCacheEntry entry;
|
| - EXPECT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id, &entry));
|
| - EXPECT_TRUE(entry.is_dirty());
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id, &entry));
|
| + EXPECT_TRUE(entry.file_specific_info().cache_state().is_dirty());
|
|
|
| // Cannot clear the dirty bit of an opened entry.
|
| EXPECT_EQ(FILE_ERROR_IN_USE, cache_->ClearDirty(id));
|
| @@ -432,8 +459,8 @@ TEST_F(FileCacheTest, ClearDirty) {
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->ClearDirty(id));
|
|
|
| // Entry is not dirty.
|
| - EXPECT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id, &entry));
|
| - EXPECT_FALSE(entry.is_dirty());
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->GetEntry(id, &entry));
|
| + EXPECT_FALSE(entry.file_specific_info().cache_state().is_dirty());
|
| }
|
|
|
| TEST_F(FileCacheTest, Remove) {
|
| @@ -445,6 +472,9 @@ TEST_F(FileCacheTest, Remove) {
|
| std::string md5(base::MD5String(src_contents));
|
|
|
| // First store a file to cache.
|
| + ResourceEntry entry;
|
| + entry.set_local_id(id);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| base::FilePath src_file;
|
| ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), &src_file));
|
| EXPECT_EQ(FILE_ERROR_OK, cache_->Store(
|
| @@ -502,21 +532,18 @@ TEST_F(FileCacheTest, ClearAll) {
|
| const std::string md5("abcdef0123456789");
|
|
|
| // Store an existing file.
|
| + ResourceEntry entry;
|
| + entry.set_local_id(id);
|
| + EXPECT_EQ(FILE_ERROR_OK, metadata_storage_->PutEntry(entry));
|
| base::FilePath src_file;
|
| ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), &src_file));
|
| ASSERT_EQ(FILE_ERROR_OK,
|
| cache_->Store(id, md5, src_file, FileCache::FILE_OPERATION_COPY));
|
|
|
| - // Verify that the cache entry is created.
|
| - FileCacheEntry cache_entry;
|
| - ASSERT_EQ(FILE_ERROR_OK, GetCacheEntry(cache_.get(), id, &cache_entry));
|
| -
|
| // Clear cache.
|
| EXPECT_TRUE(cache_->ClearAll());
|
|
|
| // Verify that the cache is removed.
|
| - EXPECT_EQ(FILE_ERROR_NOT_FOUND,
|
| - GetCacheEntry(cache_.get(), id, &cache_entry));
|
| EXPECT_TRUE(base::IsDirectoryEmpty(cache_files_dir_));
|
| }
|
|
|
|
|