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

Unified Diff: chrome/browser/chromeos/drive/resource_metadata_storage_unittest.cc

Issue 299623012: drive: Delete unused ID entries from an already updated DB (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | « chrome/browser/chromeos/drive/resource_metadata_storage.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « chrome/browser/chromeos/drive/resource_metadata_storage.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698