| Index: chrome/browser/chromeos/drive/resource_metadata_storage_unittest.cc
|
| diff --git a/chrome/browser/chromeos/drive/resource_metadata_storage_unittest.cc b/chrome/browser/chromeos/drive/resource_metadata_storage_unittest.cc
|
| index 141456057bf757bcd7b596008d9a5b8459c0c2fc..100b6091cf2b7b4c6ebe4e43511c0565345485b4 100644
|
| --- a/chrome/browser/chromeos/drive/resource_metadata_storage_unittest.cc
|
| +++ b/chrome/browser/chromeos/drive/resource_metadata_storage_unittest.cc
|
| @@ -402,6 +402,48 @@ TEST_F(ResourceMetadataStorageTest, IncompatibleDB_Unknown) {
|
| EXPECT_EQ(FILE_ERROR_NOT_FOUND, storage_->GetEntry(key1, &entry));
|
| }
|
|
|
| +TEST_F(ResourceMetadataStorageTest, DeleteUnusedIDEntries) {
|
| + leveldb::WriteBatch batch;
|
| +
|
| + // Put an ID entry with a corresponding ResourceEntry.
|
| + ResourceEntry entry;
|
| + entry.set_local_id("id1");
|
| + entry.set_resource_id("resource_id1");
|
| +
|
| + std::string serialized_entry;
|
| + EXPECT_TRUE(entry.SerializeToString(&serialized_entry));
|
| + batch.Put("id1", serialized_entry);
|
| + batch.Put('\0' + std::string("ID") + '\0' + "resource_id1", "id1");
|
| +
|
| + // Put an ID entry with a corresponding FileCacheEntry.
|
| + FileCacheEntry cache_entry;
|
| + EXPECT_TRUE(cache_entry.SerializeToString(&serialized_entry));
|
| + batch.Put(std::string("id2") + '\0' + "CACHE", serialized_entry);
|
| + batch.Put('\0' + std::string("ID") + '\0' + "resource_id2", "id2");
|
| +
|
| + // Put an ID entry without any corresponding entries.
|
| + batch.Put('\0' + std::string("ID") + '\0' + "resource_id3", "id3");
|
| +
|
| + EXPECT_TRUE(resource_map()->Write(leveldb::WriteOptions(), &batch).ok());
|
| +
|
| + // Upgrade and reopen.
|
| + storage_.reset();
|
| + EXPECT_TRUE(ResourceMetadataStorage::UpgradeOldDB(
|
| + temp_dir_.path(), base::Bind(&util::CanonicalizeResourceId)));
|
| + storage_.reset(new ResourceMetadataStorage(
|
| + temp_dir_.path(), base::MessageLoopProxy::current().get()));
|
| + ASSERT_TRUE(storage_->Initialize());
|
| +
|
| + // Only the unused entry is deleted.
|
| + std::string id;
|
| + EXPECT_EQ(FILE_ERROR_OK, storage_->GetIdByResourceId("resource_id1", &id));
|
| + EXPECT_EQ("id1", id);
|
| + EXPECT_EQ(FILE_ERROR_OK, storage_->GetIdByResourceId("resource_id2", &id));
|
| + EXPECT_EQ("id2", id);
|
| + EXPECT_EQ(FILE_ERROR_NOT_FOUND,
|
| + storage_->GetIdByResourceId("resource_id3", &id));
|
| +}
|
| +
|
| TEST_F(ResourceMetadataStorageTest, WrongPath) {
|
| // Create a file.
|
| base::FilePath path;
|
|
|