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

Unified Diff: chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc

Issue 552723002: [SyncFS] Test MetadataDatabaseTest using both on-memory and on-disk indexes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
Index: chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc
index 17d3f69a27572e2996d4bb42abf446e4ca83d877..046a7b9f3a675add2c306413c61aa0a03661f743 100644
--- a/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc
+++ b/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc
@@ -167,6 +167,14 @@ base::FilePath CreateNormalizedPath(const base::FilePath::StringType& path) {
return base::FilePath(path).NormalizePathSeparators();
}
+struct IndexType {
+ bool enable_on_disk;
+ const char* scope;
+} index_types[] = {
+ {false, "Using index on memory"},
+ {true, "Using index on disk"}
+};
+
} // namespace
class MetadataDatabaseTest : public testing::Test {
@@ -179,12 +187,17 @@ class MetadataDatabaseTest : public testing::Test {
virtual ~MetadataDatabaseTest() {}
- virtual void SetUp() OVERRIDE {
+ // TODO(peria): Change these methods to SetUp() and TearDown(),
+ // after deleting on-memory index.
+ void SetUpEnv() {
ASSERT_TRUE(database_dir_.CreateUniqueTempDir());
in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default()));
}
-
- virtual void TearDown() OVERRIDE { DropDatabase(); }
+ void TearDownEnv() {
+ DropDatabase();
+ in_memory_env_.reset();
+ EXPECT_TRUE(database_dir_.Delete());
+ }
protected:
std::string GenerateFileID() {
@@ -200,13 +213,14 @@ class MetadataDatabaseTest : public testing::Test {
return 0;
}
- SyncStatusCode InitializeMetadataDatabase() {
+ SyncStatusCode InitializeMetadataDatabase(bool enable_on_disk_index) {
SyncStatusCode status = SYNC_STATUS_UNKNOWN;
- MetadataDatabase::Create(base::ThreadTaskRunnerHandle::Get(),
- database_dir_.path(),
- in_memory_env_.get(),
- CreateResultReceiver(&status,
- &metadata_database_));
+ MetadataDatabase::CreateOnWorkerForTesting(
+ base::ThreadTaskRunnerHandle::Get(),
+ database_dir_.path(),
+ enable_on_disk_index,
+ in_memory_env_.get(),
+ CreateResultReceiver(&status, &metadata_database_));
message_loop_.RunUntilIdle();
return status;
}
@@ -655,538 +669,640 @@ class MetadataDatabaseTest : public testing::Test {
};
TEST_F(MetadataDatabaseTest, InitializationTest_Empty) {
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
- DropDatabase();
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
+ for (size_t i = 0; i < arraysize(index_types); ++i) {
tzik 2014/09/09 08:29:50 Could you split these tests to two?
peria 2014/09/10 05:40:12 Used parameterized test.
+ SetUpEnv();
+ SCOPED_TRACE(index_types[i].scope);
+
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
+ DropDatabase();
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
+
+ DropDatabase();
- DropDatabase();
+ scoped_ptr<LevelDBWrapper> db = InitializeLevelDB();
+ db->Put(kServiceMetadataKey, "Unparsable string");
+ EXPECT_TRUE(db->Commit().ok());
+ db.reset();
- scoped_ptr<LevelDBWrapper> db = InitializeLevelDB();
- db->Put(kServiceMetadataKey, "Unparsable string");
- EXPECT_TRUE(db->Commit().ok());
- db.reset();
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
+ TearDownEnv();
+ }
}
TEST_F(MetadataDatabaseTest, InitializationTest_SimpleTree) {
- TrackedFile sync_root(CreateTrackedSyncRoot());
- TrackedFile app_root(CreateTrackedFolder(sync_root, "app_id"));
- app_root.tracker.set_app_id(app_root.metadata.details().title());
- app_root.tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT);
-
- TrackedFile file(CreateTrackedFile(app_root, "file"));
- TrackedFile folder(CreateTrackedFolder(app_root, "folder"));
- TrackedFile file_in_folder(CreateTrackedFile(folder, "file_in_folder"));
- TrackedFile orphaned_file(CreateTrackedFile(sync_root, "orphaned_file"));
- orphaned_file.metadata.mutable_details()->clear_parent_folder_ids();
- orphaned_file.tracker.set_parent_tracker_id(0);
-
- const TrackedFile* tracked_files[] = {
- &sync_root, &app_root, &file, &folder, &file_in_folder, &orphaned_file
- };
-
- SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
-
- orphaned_file.should_be_absent = true;
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ for (size_t i = 0; i < arraysize(index_types); ++i) {
+ SetUpEnv();
+ SCOPED_TRACE(index_types[i].scope);
+
+ TrackedFile sync_root(CreateTrackedSyncRoot());
+ TrackedFile app_root(CreateTrackedFolder(sync_root, "app_id"));
+ app_root.tracker.set_app_id(app_root.metadata.details().title());
+ app_root.tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT);
+
+ TrackedFile file(CreateTrackedFile(app_root, "file"));
+ TrackedFile folder(CreateTrackedFolder(app_root, "folder"));
+ TrackedFile file_in_folder(CreateTrackedFile(folder, "file_in_folder"));
+ TrackedFile orphaned_file(CreateTrackedFile(sync_root, "orphaned_file"));
+ orphaned_file.metadata.mutable_details()->clear_parent_folder_ids();
+ orphaned_file.tracker.set_parent_tracker_id(0);
+
+ const TrackedFile* tracked_files[] = {
+ &sync_root, &app_root, &file, &folder, &file_in_folder, &orphaned_file
+ };
+
+ SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
+
+ orphaned_file.should_be_absent = true;
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+
+ TearDownEnv();
+ }
}
TEST_F(MetadataDatabaseTest, AppManagementTest) {
- TrackedFile sync_root(CreateTrackedSyncRoot());
- TrackedFile app_root(CreateTrackedFolder(sync_root, "app_id"));
- app_root.tracker.set_app_id(app_root.metadata.details().title());
- app_root.tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT);
-
- TrackedFile file(CreateTrackedFile(app_root, "file"));
- TrackedFile folder(CreateTrackedFolder(sync_root, "folder"));
- folder.tracker.set_active(false);
-
- const TrackedFile* tracked_files[] = {
- &sync_root, &app_root, &file, &folder,
- };
- SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
-
- folder.tracker.set_app_id("foo");
- EXPECT_EQ(SYNC_STATUS_OK, RegisterApp(
- folder.tracker.app_id(), folder.metadata.file_id()));
- folder.tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT);
- folder.tracker.set_active(true);
- folder.tracker.set_dirty(true);
- folder.tracker.set_needs_folder_listing(true);
- VerifyTrackedFile(folder);
- VerifyReloadConsistency();
-
- EXPECT_EQ(SYNC_STATUS_OK, DisableApp(folder.tracker.app_id()));
- folder.tracker.set_tracker_kind(TRACKER_KIND_DISABLED_APP_ROOT);
- VerifyTrackedFile(folder);
- VerifyReloadConsistency();
-
- EXPECT_EQ(SYNC_STATUS_OK, EnableApp(folder.tracker.app_id()));
- folder.tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT);
- VerifyTrackedFile(folder);
- VerifyReloadConsistency();
-
- EXPECT_EQ(SYNC_STATUS_OK, UnregisterApp(folder.tracker.app_id()));
- folder.tracker.set_app_id(std::string());
- folder.tracker.set_tracker_kind(TRACKER_KIND_REGULAR);
- folder.tracker.set_active(false);
- VerifyTrackedFile(folder);
- VerifyReloadConsistency();
-
- EXPECT_EQ(SYNC_STATUS_OK, UnregisterApp(app_root.tracker.app_id()));
- app_root.tracker.set_app_id(std::string());
- app_root.tracker.set_tracker_kind(TRACKER_KIND_REGULAR);
- app_root.tracker.set_active(false);
- app_root.tracker.set_dirty(true);
- file.should_be_absent = true;
- VerifyTrackedFile(app_root);
- VerifyTrackedFile(file);
- VerifyReloadConsistency();
+ for (size_t i = 0; i < arraysize(index_types); ++i) {
+ SetUpEnv();
+ SCOPED_TRACE(index_types[i].scope);
+
+ TrackedFile sync_root(CreateTrackedSyncRoot());
+ TrackedFile app_root(CreateTrackedFolder(sync_root, "app_id"));
+ app_root.tracker.set_app_id(app_root.metadata.details().title());
+ app_root.tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT);
+
+ TrackedFile file(CreateTrackedFile(app_root, "file"));
+ TrackedFile folder(CreateTrackedFolder(sync_root, "folder"));
+ folder.tracker.set_active(false);
+
+ const TrackedFile* tracked_files[] = {
+ &sync_root, &app_root, &file, &folder,
+ };
+ SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+
+ folder.tracker.set_app_id("foo");
+ EXPECT_EQ(SYNC_STATUS_OK, RegisterApp(
+ folder.tracker.app_id(), folder.metadata.file_id()));
+ folder.tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT);
+ folder.tracker.set_active(true);
+ folder.tracker.set_dirty(true);
+ folder.tracker.set_needs_folder_listing(true);
+ VerifyTrackedFile(folder);
+ VerifyReloadConsistency();
+
+ EXPECT_EQ(SYNC_STATUS_OK, DisableApp(folder.tracker.app_id()));
+ folder.tracker.set_tracker_kind(TRACKER_KIND_DISABLED_APP_ROOT);
+ VerifyTrackedFile(folder);
+ VerifyReloadConsistency();
+
+ EXPECT_EQ(SYNC_STATUS_OK, EnableApp(folder.tracker.app_id()));
+ folder.tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT);
+ VerifyTrackedFile(folder);
+ VerifyReloadConsistency();
+
+ EXPECT_EQ(SYNC_STATUS_OK, UnregisterApp(folder.tracker.app_id()));
+ folder.tracker.set_app_id(std::string());
+ folder.tracker.set_tracker_kind(TRACKER_KIND_REGULAR);
+ folder.tracker.set_active(false);
+ VerifyTrackedFile(folder);
+ VerifyReloadConsistency();
+
+ EXPECT_EQ(SYNC_STATUS_OK, UnregisterApp(app_root.tracker.app_id()));
+ app_root.tracker.set_app_id(std::string());
+ app_root.tracker.set_tracker_kind(TRACKER_KIND_REGULAR);
+ app_root.tracker.set_active(false);
+ app_root.tracker.set_dirty(true);
+ file.should_be_absent = true;
+ VerifyTrackedFile(app_root);
+ VerifyTrackedFile(file);
+ VerifyReloadConsistency();
+
+ TearDownEnv();
+ }
}
TEST_F(MetadataDatabaseTest, BuildPathTest) {
- FileMetadata sync_root(CreateSyncRootMetadata());
- FileTracker sync_root_tracker(CreateSyncRootTracker(sync_root));
+ for (size_t i = 0; i < arraysize(index_types); ++i) {
+ SetUpEnv();
+ SCOPED_TRACE(index_types[i].scope);
- FileMetadata app_root(CreateFolderMetadata(sync_root, "app_id"));
- FileTracker app_root_tracker(
- CreateTracker(sync_root_tracker, app_root));
- app_root_tracker.set_app_id(app_root.details().title());
- app_root_tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT);
+ FileMetadata sync_root(CreateSyncRootMetadata());
+ FileTracker sync_root_tracker(CreateSyncRootTracker(sync_root));
- FileMetadata folder(CreateFolderMetadata(app_root, "folder"));
- FileTracker folder_tracker(CreateTracker(app_root_tracker, folder));
+ FileMetadata app_root(CreateFolderMetadata(sync_root, "app_id"));
+ FileTracker app_root_tracker(
+ CreateTracker(sync_root_tracker, app_root));
+ app_root_tracker.set_app_id(app_root.details().title());
+ app_root_tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT);
- FileMetadata file(CreateFileMetadata(folder, "file"));
- FileTracker file_tracker(CreateTracker(folder_tracker, file));
+ FileMetadata folder(CreateFolderMetadata(app_root, "folder"));
+ FileTracker folder_tracker(CreateTracker(app_root_tracker, folder));
- FileMetadata inactive_folder(CreateFolderMetadata(app_root, "folder"));
- FileTracker inactive_folder_tracker(CreateTracker(app_root_tracker,
- inactive_folder));
- inactive_folder_tracker.set_active(false);
+ FileMetadata file(CreateFileMetadata(folder, "file"));
+ FileTracker file_tracker(CreateTracker(folder_tracker, file));
- {
- scoped_ptr<LevelDBWrapper> db = InitializeLevelDB();
- ASSERT_TRUE(db);
+ FileMetadata inactive_folder(CreateFolderMetadata(app_root, "folder"));
+ FileTracker inactive_folder_tracker(CreateTracker(app_root_tracker,
+ inactive_folder));
+ inactive_folder_tracker.set_active(false);
- EXPECT_TRUE(PutFileToDB(db.get(), sync_root).ok());
- EXPECT_TRUE(PutTrackerToDB(db.get(), sync_root_tracker).ok());
- EXPECT_TRUE(PutFileToDB(db.get(), app_root).ok());
- EXPECT_TRUE(PutTrackerToDB(db.get(), app_root_tracker).ok());
- EXPECT_TRUE(PutFileToDB(db.get(), folder).ok());
- EXPECT_TRUE(PutTrackerToDB(db.get(), folder_tracker).ok());
- EXPECT_TRUE(PutFileToDB(db.get(), file).ok());
- EXPECT_TRUE(PutTrackerToDB(db.get(), file_tracker).ok());
- }
+ {
+ scoped_ptr<LevelDBWrapper> db = InitializeLevelDB();
+ ASSERT_TRUE(db);
+
+ EXPECT_TRUE(PutFileToDB(db.get(), sync_root).ok());
+ EXPECT_TRUE(PutTrackerToDB(db.get(), sync_root_tracker).ok());
+ EXPECT_TRUE(PutFileToDB(db.get(), app_root).ok());
+ EXPECT_TRUE(PutTrackerToDB(db.get(), app_root_tracker).ok());
+ EXPECT_TRUE(PutFileToDB(db.get(), folder).ok());
+ EXPECT_TRUE(PutTrackerToDB(db.get(), folder_tracker).ok());
+ EXPECT_TRUE(PutFileToDB(db.get(), file).ok());
+ EXPECT_TRUE(PutTrackerToDB(db.get(), file_tracker).ok());
+ }
+
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
-
- base::FilePath path;
- EXPECT_FALSE(metadata_database()->BuildPathForTracker(
- sync_root_tracker.tracker_id(), &path));
- EXPECT_TRUE(metadata_database()->BuildPathForTracker(
- app_root_tracker.tracker_id(), &path));
- EXPECT_EQ(base::FilePath(FPL("/")).NormalizePathSeparators(), path);
- EXPECT_TRUE(metadata_database()->BuildPathForTracker(
- file_tracker.tracker_id(), &path));
- EXPECT_EQ(base::FilePath(FPL("/folder/file")).NormalizePathSeparators(),
- path);
+ base::FilePath path;
+ EXPECT_FALSE(metadata_database()->BuildPathForTracker(
+ sync_root_tracker.tracker_id(), &path));
+ EXPECT_TRUE(metadata_database()->BuildPathForTracker(
+ app_root_tracker.tracker_id(), &path));
+ EXPECT_EQ(base::FilePath(FPL("/")).NormalizePathSeparators(), path);
+ EXPECT_TRUE(metadata_database()->BuildPathForTracker(
+ file_tracker.tracker_id(), &path));
+ EXPECT_EQ(base::FilePath(FPL("/folder/file")).NormalizePathSeparators(),
+ path);
+
+ TearDownEnv();
+ }
}
TEST_F(MetadataDatabaseTest, FindNearestActiveAncestorTest) {
- const std::string kAppID = "app_id";
-
- FileMetadata sync_root(CreateSyncRootMetadata());
- FileTracker sync_root_tracker(CreateSyncRootTracker(sync_root));
-
- FileMetadata app_root(CreateFolderMetadata(sync_root, kAppID));
- FileTracker app_root_tracker(
- CreateTracker(sync_root_tracker, app_root));
- app_root_tracker.set_app_id(app_root.details().title());
- app_root_tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT);
-
- // Create directory structure like this: "/folder1/folder2/file"
- FileMetadata folder1(CreateFolderMetadata(app_root, "folder1"));
- FileTracker folder_tracker1(CreateTracker(app_root_tracker, folder1));
- FileMetadata folder2(CreateFolderMetadata(folder1, "folder2"));
- FileTracker folder_tracker2(CreateTracker(folder_tracker1, folder2));
- FileMetadata file(CreateFileMetadata(folder2, "file"));
- FileTracker file_tracker(CreateTracker(folder_tracker2, file));
-
- FileMetadata inactive_folder(CreateFolderMetadata(app_root, "folder1"));
- FileTracker inactive_folder_tracker(CreateTracker(app_root_tracker,
- inactive_folder));
- inactive_folder_tracker.set_active(false);
+ for (size_t i = 0; i < arraysize(index_types); ++i) {
+ SetUpEnv();
+ SCOPED_TRACE(index_types[i].scope);
+
+ const std::string kAppID = "app_id";
+
+ FileMetadata sync_root(CreateSyncRootMetadata());
+ FileTracker sync_root_tracker(CreateSyncRootTracker(sync_root));
+
+ FileMetadata app_root(CreateFolderMetadata(sync_root, kAppID));
+ FileTracker app_root_tracker(
+ CreateTracker(sync_root_tracker, app_root));
+ app_root_tracker.set_app_id(app_root.details().title());
+ app_root_tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT);
+
+ // Create directory structure like this: "/folder1/folder2/file"
+ FileMetadata folder1(CreateFolderMetadata(app_root, "folder1"));
+ FileTracker folder_tracker1(CreateTracker(app_root_tracker, folder1));
+ FileMetadata folder2(CreateFolderMetadata(folder1, "folder2"));
+ FileTracker folder_tracker2(CreateTracker(folder_tracker1, folder2));
+ FileMetadata file(CreateFileMetadata(folder2, "file"));
+ FileTracker file_tracker(CreateTracker(folder_tracker2, file));
+
+ FileMetadata inactive_folder(CreateFolderMetadata(app_root, "folder1"));
+ FileTracker inactive_folder_tracker(CreateTracker(app_root_tracker,
+ inactive_folder));
+ inactive_folder_tracker.set_active(false);
- {
- scoped_ptr<LevelDBWrapper> db = InitializeLevelDB();
- ASSERT_TRUE(db);
+ {
+ scoped_ptr<LevelDBWrapper> db = InitializeLevelDB();
+ ASSERT_TRUE(db);
+
+ EXPECT_TRUE(PutFileToDB(db.get(), sync_root).ok());
+ EXPECT_TRUE(PutTrackerToDB(db.get(), sync_root_tracker).ok());
+ EXPECT_TRUE(PutFileToDB(db.get(), app_root).ok());
+ EXPECT_TRUE(PutTrackerToDB(db.get(), app_root_tracker).ok());
+ EXPECT_TRUE(PutFileToDB(db.get(), folder1).ok());
+ EXPECT_TRUE(PutTrackerToDB(db.get(), folder_tracker1).ok());
+ EXPECT_TRUE(PutFileToDB(db.get(), folder2).ok());
+ EXPECT_TRUE(PutTrackerToDB(db.get(), folder_tracker2).ok());
+ EXPECT_TRUE(PutFileToDB(db.get(), file).ok());
+ EXPECT_TRUE(PutTrackerToDB(db.get(), file_tracker).ok());
+ EXPECT_TRUE(PutFileToDB(db.get(), inactive_folder).ok());
+ EXPECT_TRUE(PutTrackerToDB(db.get(), inactive_folder_tracker).ok());
+ }
- EXPECT_TRUE(PutFileToDB(db.get(), sync_root).ok());
- EXPECT_TRUE(PutTrackerToDB(db.get(), sync_root_tracker).ok());
- EXPECT_TRUE(PutFileToDB(db.get(), app_root).ok());
- EXPECT_TRUE(PutTrackerToDB(db.get(), app_root_tracker).ok());
- EXPECT_TRUE(PutFileToDB(db.get(), folder1).ok());
- EXPECT_TRUE(PutTrackerToDB(db.get(), folder_tracker1).ok());
- EXPECT_TRUE(PutFileToDB(db.get(), folder2).ok());
- EXPECT_TRUE(PutTrackerToDB(db.get(), folder_tracker2).ok());
- EXPECT_TRUE(PutFileToDB(db.get(), file).ok());
- EXPECT_TRUE(PutTrackerToDB(db.get(), file_tracker).ok());
- EXPECT_TRUE(PutFileToDB(db.get(), inactive_folder).ok());
- EXPECT_TRUE(PutTrackerToDB(db.get(), inactive_folder_tracker).ok());
- }
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
+ {
+ base::FilePath path;
+ FileTracker tracker;
+ EXPECT_FALSE(metadata_database()->FindNearestActiveAncestor(
+ "non_registered_app_id",
+ CreateNormalizedPath(FPL("folder1/folder2/file")),
+ &tracker, &path));
+ }
- {
- base::FilePath path;
- FileTracker tracker;
- EXPECT_FALSE(metadata_database()->FindNearestActiveAncestor(
- "non_registered_app_id",
- CreateNormalizedPath(FPL("folder1/folder2/file")),
- &tracker, &path));
- }
+ {
+ base::FilePath path;
+ FileTracker tracker;
+ EXPECT_TRUE(metadata_database()->FindNearestActiveAncestor(
+ kAppID, CreateNormalizedPath(FPL("")), &tracker, &path));
+ EXPECT_EQ(app_root_tracker.tracker_id(), tracker.tracker_id());
+ EXPECT_EQ(CreateNormalizedPath(FPL("")), path);
+ }
- {
- base::FilePath path;
- FileTracker tracker;
- EXPECT_TRUE(metadata_database()->FindNearestActiveAncestor(
- kAppID, CreateNormalizedPath(FPL("")), &tracker, &path));
- EXPECT_EQ(app_root_tracker.tracker_id(), tracker.tracker_id());
- EXPECT_EQ(CreateNormalizedPath(FPL("")), path);
- }
+ {
+ base::FilePath path;
+ FileTracker tracker;
+ EXPECT_TRUE(metadata_database()->FindNearestActiveAncestor(
+ kAppID, CreateNormalizedPath(FPL("folder1/folder2")),
+ &tracker, &path));
+ EXPECT_EQ(folder_tracker2.tracker_id(), tracker.tracker_id());
+ EXPECT_EQ(CreateNormalizedPath(FPL("folder1/folder2")), path);
+ }
- {
- base::FilePath path;
- FileTracker tracker;
- EXPECT_TRUE(metadata_database()->FindNearestActiveAncestor(
- kAppID, CreateNormalizedPath(FPL("folder1/folder2")),
- &tracker, &path));
- EXPECT_EQ(folder_tracker2.tracker_id(), tracker.tracker_id());
- EXPECT_EQ(CreateNormalizedPath(FPL("folder1/folder2")), path);
- }
+ {
+ base::FilePath path;
+ FileTracker tracker;
+ EXPECT_TRUE(metadata_database()->FindNearestActiveAncestor(
+ kAppID, CreateNormalizedPath(FPL("folder1/folder2/file")),
+ &tracker, &path));
+ EXPECT_EQ(file_tracker.tracker_id(), tracker.tracker_id());
+ EXPECT_EQ(CreateNormalizedPath(FPL("folder1/folder2/file")), path);
+ }
- {
- base::FilePath path;
- FileTracker tracker;
- EXPECT_TRUE(metadata_database()->FindNearestActiveAncestor(
- kAppID, CreateNormalizedPath(FPL("folder1/folder2/file")),
- &tracker, &path));
- EXPECT_EQ(file_tracker.tracker_id(), tracker.tracker_id());
- EXPECT_EQ(CreateNormalizedPath(FPL("folder1/folder2/file")), path);
- }
+ {
+ base::FilePath path;
+ FileTracker tracker;
+ EXPECT_TRUE(metadata_database()->FindNearestActiveAncestor(
+ kAppID,
+ CreateNormalizedPath(FPL("folder1/folder2/folder3/folder4/file")),
+ &tracker, &path));
+ EXPECT_EQ(folder_tracker2.tracker_id(), tracker.tracker_id());
+ EXPECT_EQ(CreateNormalizedPath(FPL("folder1/folder2")), path);
+ }
- {
- base::FilePath path;
- FileTracker tracker;
- EXPECT_TRUE(metadata_database()->FindNearestActiveAncestor(
- kAppID,
- CreateNormalizedPath(FPL("folder1/folder2/folder3/folder4/file")),
- &tracker, &path));
- EXPECT_EQ(folder_tracker2.tracker_id(), tracker.tracker_id());
- EXPECT_EQ(CreateNormalizedPath(FPL("folder1/folder2")), path);
- }
+ {
+ base::FilePath path;
+ FileTracker tracker;
+ EXPECT_TRUE(metadata_database()->FindNearestActiveAncestor(
+ kAppID,
+ CreateNormalizedPath(FPL("folder1/folder2/file/folder4/file")),
+ &tracker, &path));
+ EXPECT_EQ(folder_tracker2.tracker_id(), tracker.tracker_id());
+ EXPECT_EQ(CreateNormalizedPath(FPL("folder1/folder2")), path);
+ }
- {
- base::FilePath path;
- FileTracker tracker;
- EXPECT_TRUE(metadata_database()->FindNearestActiveAncestor(
- kAppID, CreateNormalizedPath(FPL("folder1/folder2/file/folder4/file")),
- &tracker, &path));
- EXPECT_EQ(folder_tracker2.tracker_id(), tracker.tracker_id());
- EXPECT_EQ(CreateNormalizedPath(FPL("folder1/folder2")), path);
+ TearDownEnv();
}
}
TEST_F(MetadataDatabaseTest, UpdateByChangeListTest) {
- TrackedFile sync_root(CreateTrackedSyncRoot());
- TrackedFile app_root(CreateTrackedFolder(sync_root, "app_id"));
- TrackedFile disabled_app_root(CreateTrackedFolder(sync_root, "disabled_app"));
- TrackedFile file(CreateTrackedFile(app_root, "file"));
- TrackedFile renamed_file(CreateTrackedFile(app_root, "to be renamed"));
- TrackedFile folder(CreateTrackedFolder(app_root, "folder"));
- TrackedFile reorganized_file(
- CreateTrackedFile(app_root, "to be reorganized"));
- TrackedFile updated_file(
- CreateTrackedFile(app_root, "to be updated"));
- TrackedFile noop_file(CreateTrackedFile(app_root, "has noop change"));
- TrackedFile new_file(CreateTrackedFile(app_root, "to be added later"));
- new_file.should_be_absent = true;
-
- const TrackedFile* tracked_files[] = {
- &sync_root, &app_root, &disabled_app_root,
- &file, &renamed_file, &folder, &reorganized_file, &updated_file, &noop_file,
- &new_file,
- };
-
- SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
-
- ApplyRenameChangeToMetadata("renamed", &renamed_file.metadata);
- ApplyReorganizeChangeToMetadata(folder.metadata.file_id(),
- &reorganized_file.metadata);
- ApplyContentChangeToMetadata(&updated_file.metadata);
-
- // Update change ID.
- ApplyNoopChangeToMetadata(&noop_file.metadata);
-
- ScopedVector<google_apis::ChangeResource> changes;
- PushToChangeList(
- CreateChangeResourceFromMetadata(renamed_file.metadata), &changes);
- PushToChangeList(
- CreateChangeResourceFromMetadata(reorganized_file.metadata), &changes);
- PushToChangeList(
- CreateChangeResourceFromMetadata(updated_file.metadata), &changes);
- PushToChangeList(
- CreateChangeResourceFromMetadata(noop_file.metadata), &changes);
- PushToChangeList(
- CreateChangeResourceFromMetadata(new_file.metadata), &changes);
- EXPECT_EQ(SYNC_STATUS_OK, UpdateByChangeList(changes.Pass()));
-
- renamed_file.tracker.set_dirty(true);
- reorganized_file.tracker.set_dirty(true);
- updated_file.tracker.set_dirty(true);
- noop_file.tracker.set_dirty(true);
- new_file.tracker.mutable_synced_details()->set_missing(true);
- new_file.tracker.mutable_synced_details()->clear_md5();
- new_file.tracker.set_active(false);
- new_file.tracker.set_dirty(true);
- ResetTrackerID(&new_file.tracker);
- EXPECT_NE(0, new_file.tracker.tracker_id());
-
- new_file.should_be_absent = false;
-
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
- VerifyReloadConsistency();
+ for (size_t i = 0; i < arraysize(index_types); ++i) {
+ SetUpEnv();
+ SCOPED_TRACE(index_types[i].scope);
+
+ TrackedFile sync_root(CreateTrackedSyncRoot());
+ TrackedFile app_root(CreateTrackedFolder(sync_root, "app_id"));
+ TrackedFile disabled_app_root(
+ CreateTrackedFolder(sync_root, "disabled_app"));
+ TrackedFile file(CreateTrackedFile(app_root, "file"));
+ TrackedFile renamed_file(CreateTrackedFile(app_root, "to be renamed"));
+ TrackedFile folder(CreateTrackedFolder(app_root, "folder"));
+ TrackedFile reorganized_file(
+ CreateTrackedFile(app_root, "to be reorganized"));
+ TrackedFile updated_file(
+ CreateTrackedFile(app_root, "to be updated"));
+ TrackedFile noop_file(CreateTrackedFile(app_root, "has noop change"));
+ TrackedFile new_file(CreateTrackedFile(app_root, "to be added later"));
+ new_file.should_be_absent = true;
+
+ const TrackedFile* tracked_files[] = {
+ &sync_root, &app_root, &disabled_app_root,
+ &file, &renamed_file, &folder, &reorganized_file, &updated_file,
+ &noop_file, &new_file,
+ };
+
+ SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
+
+ ApplyRenameChangeToMetadata("renamed", &renamed_file.metadata);
+ ApplyReorganizeChangeToMetadata(folder.metadata.file_id(),
+ &reorganized_file.metadata);
+ ApplyContentChangeToMetadata(&updated_file.metadata);
+
+ // Update change ID.
+ ApplyNoopChangeToMetadata(&noop_file.metadata);
+
+ ScopedVector<google_apis::ChangeResource> changes;
+ PushToChangeList(
+ CreateChangeResourceFromMetadata(renamed_file.metadata), &changes);
+ PushToChangeList(
+ CreateChangeResourceFromMetadata(reorganized_file.metadata), &changes);
+ PushToChangeList(
+ CreateChangeResourceFromMetadata(updated_file.metadata), &changes);
+ PushToChangeList(
+ CreateChangeResourceFromMetadata(noop_file.metadata), &changes);
+ PushToChangeList(
+ CreateChangeResourceFromMetadata(new_file.metadata), &changes);
+ EXPECT_EQ(SYNC_STATUS_OK, UpdateByChangeList(changes.Pass()));
+
+ renamed_file.tracker.set_dirty(true);
+ reorganized_file.tracker.set_dirty(true);
+ updated_file.tracker.set_dirty(true);
+ noop_file.tracker.set_dirty(true);
+ new_file.tracker.mutable_synced_details()->set_missing(true);
+ new_file.tracker.mutable_synced_details()->clear_md5();
+ new_file.tracker.set_active(false);
+ new_file.tracker.set_dirty(true);
+ ResetTrackerID(&new_file.tracker);
+ EXPECT_NE(0, new_file.tracker.tracker_id());
+
+ new_file.should_be_absent = false;
+
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+
+ TearDownEnv();
+ }
}
TEST_F(MetadataDatabaseTest, PopulateFolderTest_RegularFolder) {
- TrackedFile sync_root(CreateTrackedSyncRoot());
- TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_id"));
- app_root.tracker.set_app_id(app_root.metadata.details().title());
-
- TrackedFile folder_to_populate(
- CreateTrackedFolder(app_root, "folder_to_populate"));
- folder_to_populate.tracker.set_needs_folder_listing(true);
- folder_to_populate.tracker.set_dirty(true);
-
- TrackedFile known_file(CreateTrackedFile(folder_to_populate, "known_file"));
- TrackedFile new_file(CreateTrackedFile(folder_to_populate, "new_file"));
- new_file.should_be_absent = true;
-
- const TrackedFile* tracked_files[] = {
- &sync_root, &app_root, &folder_to_populate, &known_file, &new_file
- };
-
- SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
-
- FileIDList listed_children;
- listed_children.push_back(known_file.metadata.file_id());
- listed_children.push_back(new_file.metadata.file_id());
-
- EXPECT_EQ(SYNC_STATUS_OK,
- PopulateFolder(folder_to_populate.metadata.file_id(),
- listed_children));
-
- folder_to_populate.tracker.set_dirty(false);
- folder_to_populate.tracker.set_needs_folder_listing(false);
- ResetTrackerID(&new_file.tracker);
- new_file.tracker.set_dirty(true);
- new_file.tracker.set_active(false);
- new_file.tracker.clear_synced_details();
- new_file.should_be_absent = false;
- new_file.tracker_only = true;
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
- VerifyReloadConsistency();
+ for (size_t i = 0; i < arraysize(index_types); ++i) {
+ SetUpEnv();
+ SCOPED_TRACE(index_types[i].scope);
+
+ TrackedFile sync_root(CreateTrackedSyncRoot());
+ TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_id"));
+ app_root.tracker.set_app_id(app_root.metadata.details().title());
+
+ TrackedFile folder_to_populate(
+ CreateTrackedFolder(app_root, "folder_to_populate"));
+ folder_to_populate.tracker.set_needs_folder_listing(true);
+ folder_to_populate.tracker.set_dirty(true);
+
+ TrackedFile known_file(CreateTrackedFile(folder_to_populate, "known_file"));
+ TrackedFile new_file(CreateTrackedFile(folder_to_populate, "new_file"));
+ new_file.should_be_absent = true;
+
+ const TrackedFile* tracked_files[] = {
+ &sync_root, &app_root, &folder_to_populate, &known_file, &new_file
+ };
+
+ SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+
+ FileIDList listed_children;
+ listed_children.push_back(known_file.metadata.file_id());
+ listed_children.push_back(new_file.metadata.file_id());
+
+ EXPECT_EQ(SYNC_STATUS_OK,
+ PopulateFolder(folder_to_populate.metadata.file_id(),
+ listed_children));
+
+ folder_to_populate.tracker.set_dirty(false);
+ folder_to_populate.tracker.set_needs_folder_listing(false);
+ ResetTrackerID(&new_file.tracker);
+ new_file.tracker.set_dirty(true);
+ new_file.tracker.set_active(false);
+ new_file.tracker.clear_synced_details();
+ new_file.should_be_absent = false;
+ new_file.tracker_only = true;
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+
+ TearDownEnv();
+ }
}
TEST_F(MetadataDatabaseTest, PopulateFolderTest_InactiveFolder) {
- TrackedFile sync_root(CreateTrackedSyncRoot());
- TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_id"));
+ for (size_t i = 0; i < arraysize(index_types); ++i) {
+ SetUpEnv();
+ SCOPED_TRACE(index_types[i].scope);
+
+ TrackedFile sync_root(CreateTrackedSyncRoot());
+ TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_id"));
- TrackedFile inactive_folder(CreateTrackedFolder(app_root, "inactive_folder"));
- inactive_folder.tracker.set_active(false);
- inactive_folder.tracker.set_dirty(true);
+ TrackedFile inactive_folder(
+ CreateTrackedFolder(app_root, "inactive_folder"));
+ inactive_folder.tracker.set_active(false);
+ inactive_folder.tracker.set_dirty(true);
- TrackedFile new_file(
- CreateTrackedFile(inactive_folder, "file_in_inactive_folder"));
- new_file.should_be_absent = true;
+ TrackedFile new_file(
+ CreateTrackedFile(inactive_folder, "file_in_inactive_folder"));
+ new_file.should_be_absent = true;
- const TrackedFile* tracked_files[] = {
- &sync_root, &app_root, &inactive_folder, &new_file,
- };
+ const TrackedFile* tracked_files[] = {
+ &sync_root, &app_root, &inactive_folder, &new_file,
+ };
- SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
- FileIDList listed_children;
- listed_children.push_back(new_file.metadata.file_id());
+ FileIDList listed_children;
+ listed_children.push_back(new_file.metadata.file_id());
- EXPECT_EQ(SYNC_STATUS_OK,
- PopulateFolder(inactive_folder.metadata.file_id(),
- listed_children));
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
- VerifyReloadConsistency();
+ EXPECT_EQ(SYNC_STATUS_OK,
+ PopulateFolder(inactive_folder.metadata.file_id(),
+ listed_children));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+
+ TearDownEnv();
+ }
}
TEST_F(MetadataDatabaseTest, PopulateFolderTest_DisabledAppRoot) {
- TrackedFile sync_root(CreateTrackedSyncRoot());
- TrackedFile disabled_app_root(
- CreateTrackedAppRoot(sync_root, "disabled_app"));
- disabled_app_root.tracker.set_dirty(true);
- disabled_app_root.tracker.set_needs_folder_listing(true);
-
- TrackedFile known_file(CreateTrackedFile(disabled_app_root, "known_file"));
- TrackedFile file(CreateTrackedFile(disabled_app_root, "file"));
- file.should_be_absent = true;
-
- const TrackedFile* tracked_files[] = {
- &sync_root, &disabled_app_root, &disabled_app_root, &known_file, &file,
- };
-
- SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
-
- FileIDList disabled_app_children;
- disabled_app_children.push_back(file.metadata.file_id());
- EXPECT_EQ(SYNC_STATUS_OK, PopulateFolder(
- disabled_app_root.metadata.file_id(), disabled_app_children));
- ResetTrackerID(&file.tracker);
- file.tracker.clear_synced_details();
- file.tracker.set_dirty(true);
- file.tracker.set_active(false);
- file.should_be_absent = false;
- file.tracker_only = true;
-
- disabled_app_root.tracker.set_dirty(false);
- disabled_app_root.tracker.set_needs_folder_listing(false);
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
- VerifyReloadConsistency();
+ for (size_t i = 0; i < arraysize(index_types); ++i) {
+ SetUpEnv();
+ SCOPED_TRACE(index_types[i].scope);
+
+ TrackedFile sync_root(CreateTrackedSyncRoot());
+ TrackedFile disabled_app_root(
+ CreateTrackedAppRoot(sync_root, "disabled_app"));
+ disabled_app_root.tracker.set_dirty(true);
+ disabled_app_root.tracker.set_needs_folder_listing(true);
+
+ TrackedFile known_file(CreateTrackedFile(disabled_app_root, "known_file"));
+ TrackedFile file(CreateTrackedFile(disabled_app_root, "file"));
+ file.should_be_absent = true;
+
+ const TrackedFile* tracked_files[] = {
+ &sync_root, &disabled_app_root, &disabled_app_root, &known_file, &file,
+ };
+
+ SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+
+ FileIDList disabled_app_children;
+ disabled_app_children.push_back(file.metadata.file_id());
+ EXPECT_EQ(SYNC_STATUS_OK, PopulateFolder(
+ disabled_app_root.metadata.file_id(), disabled_app_children));
+ ResetTrackerID(&file.tracker);
+ file.tracker.clear_synced_details();
+ file.tracker.set_dirty(true);
+ file.tracker.set_active(false);
+ file.should_be_absent = false;
+ file.tracker_only = true;
+
+ disabled_app_root.tracker.set_dirty(false);
+ disabled_app_root.tracker.set_needs_folder_listing(false);
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+
+ TearDownEnv();
+ }
}
// TODO(tzik): Fix expectation and re-enable this test.
TEST_F(MetadataDatabaseTest, DISABLED_UpdateTrackerTest) {
- TrackedFile sync_root(CreateTrackedSyncRoot());
- TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_root"));
- TrackedFile file(CreateTrackedFile(app_root, "file"));
- file.tracker.set_dirty(true);
- file.metadata.mutable_details()->set_title("renamed file");
-
- TrackedFile inactive_file(CreateTrackedFile(app_root, "inactive_file"));
- inactive_file.tracker.set_active(false);
- inactive_file.tracker.set_dirty(true);
- inactive_file.metadata.mutable_details()->set_title("renamed inactive file");
- inactive_file.metadata.mutable_details()->set_md5("modified_md5");
-
- TrackedFile new_conflict(CreateTrackedFile(app_root, "new conflict file"));
- new_conflict.tracker.set_dirty(true);
- new_conflict.metadata.mutable_details()->set_title("renamed file");
-
- const TrackedFile* tracked_files[] = {
- &sync_root, &app_root, &file, &inactive_file, &new_conflict
- };
-
- SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
- VerifyReloadConsistency();
-
- *file.tracker.mutable_synced_details() = file.metadata.details();
- file.tracker.set_dirty(false);
- EXPECT_EQ(SYNC_STATUS_OK, UpdateTracker(file.tracker));
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
- VerifyReloadConsistency();
-
- *inactive_file.tracker.mutable_synced_details() =
- inactive_file.metadata.details();
- inactive_file.tracker.set_dirty(false);
- inactive_file.tracker.set_active(true);
- EXPECT_EQ(SYNC_STATUS_OK, UpdateTracker(inactive_file.tracker));
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
- VerifyReloadConsistency();
-
- *new_conflict.tracker.mutable_synced_details() =
- new_conflict.metadata.details();
- new_conflict.tracker.set_dirty(false);
- new_conflict.tracker.set_active(true);
- file.tracker.set_dirty(true);
- file.tracker.set_active(false);
- EXPECT_EQ(SYNC_STATUS_OK, UpdateTracker(new_conflict.tracker));
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
- VerifyReloadConsistency();
+ for (size_t i = 0; i < arraysize(index_types); ++i) {
+ SetUpEnv();
+ SCOPED_TRACE(index_types[i].scope);
+
+ TrackedFile sync_root(CreateTrackedSyncRoot());
+ TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_root"));
+ TrackedFile file(CreateTrackedFile(app_root, "file"));
+ file.tracker.set_dirty(true);
+ file.metadata.mutable_details()->set_title("renamed file");
+
+ TrackedFile inactive_file(CreateTrackedFile(app_root, "inactive_file"));
+ inactive_file.tracker.set_active(false);
+ inactive_file.tracker.set_dirty(true);
+ inactive_file.metadata.mutable_details()->set_title(
+ "renamed inactive file");
+ inactive_file.metadata.mutable_details()->set_md5("modified_md5");
+
+ TrackedFile new_conflict(CreateTrackedFile(app_root, "new conflict file"));
+ new_conflict.tracker.set_dirty(true);
+ new_conflict.metadata.mutable_details()->set_title("renamed file");
+
+ const TrackedFile* tracked_files[] = {
+ &sync_root, &app_root, &file, &inactive_file, &new_conflict
+ };
+
+ SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+
+ *file.tracker.mutable_synced_details() = file.metadata.details();
+ file.tracker.set_dirty(false);
+ EXPECT_EQ(SYNC_STATUS_OK, UpdateTracker(file.tracker));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+
+ *inactive_file.tracker.mutable_synced_details() =
+ inactive_file.metadata.details();
+ inactive_file.tracker.set_dirty(false);
+ inactive_file.tracker.set_active(true);
+ EXPECT_EQ(SYNC_STATUS_OK, UpdateTracker(inactive_file.tracker));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+
+ *new_conflict.tracker.mutable_synced_details() =
+ new_conflict.metadata.details();
+ new_conflict.tracker.set_dirty(false);
+ new_conflict.tracker.set_active(true);
+ file.tracker.set_dirty(true);
+ file.tracker.set_active(false);
+ EXPECT_EQ(SYNC_STATUS_OK, UpdateTracker(new_conflict.tracker));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+
+ TearDownEnv();
+ }
}
TEST_F(MetadataDatabaseTest, PopulateInitialDataTest) {
- TrackedFile sync_root(CreateTrackedSyncRoot());
- TrackedFile app_root(CreateTrackedFolder(sync_root, "app_root"));
- app_root.tracker.set_active(false);
-
- const TrackedFile* tracked_files[] = {
- &sync_root, &app_root
- };
-
- scoped_ptr<google_apis::FileResource> sync_root_folder(
- CreateFileResourceFromMetadata(sync_root.metadata));
- scoped_ptr<google_apis::FileResource> app_root_folder(
- CreateFileResourceFromMetadata(app_root.metadata));
-
- ScopedVector<google_apis::FileResource> app_root_folders;
- app_root_folders.push_back(app_root_folder.release());
-
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
- EXPECT_EQ(SYNC_STATUS_OK, PopulateInitialData(
- current_change_id(),
- *sync_root_folder,
- app_root_folders));
-
- ResetTrackerID(&sync_root.tracker);
- ResetTrackerID(&app_root.tracker);
- app_root.tracker.set_parent_tracker_id(sync_root.tracker.tracker_id());
-
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
- VerifyReloadConsistency();
+ for (size_t i = 0; i < arraysize(index_types); ++i) {
+ SetUpEnv();
+ SCOPED_TRACE(index_types[i].scope);
+
+ TrackedFile sync_root(CreateTrackedSyncRoot());
+ TrackedFile app_root(CreateTrackedFolder(sync_root, "app_root"));
+ app_root.tracker.set_active(false);
+
+ const TrackedFile* tracked_files[] = {
+ &sync_root, &app_root
+ };
+
+ scoped_ptr<google_apis::FileResource> sync_root_folder(
+ CreateFileResourceFromMetadata(sync_root.metadata));
+ scoped_ptr<google_apis::FileResource> app_root_folder(
+ CreateFileResourceFromMetadata(app_root.metadata));
+
+ ScopedVector<google_apis::FileResource> app_root_folders;
+ app_root_folders.push_back(app_root_folder.release());
+
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
+ EXPECT_EQ(SYNC_STATUS_OK, PopulateInitialData(
+ current_change_id(),
+ *sync_root_folder,
+ app_root_folders));
+
+ ResetTrackerID(&sync_root.tracker);
+ ResetTrackerID(&app_root.tracker);
+ app_root.tracker.set_parent_tracker_id(sync_root.tracker.tracker_id());
+
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ VerifyReloadConsistency();
+
+ TearDownEnv();
+ }
}
TEST_F(MetadataDatabaseTest, DumpFiles) {
- TrackedFile sync_root(CreateTrackedSyncRoot());
- TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_id"));
- app_root.tracker.set_app_id(app_root.metadata.details().title());
+ for (size_t i = 0; i < arraysize(index_types); ++i) {
+ SetUpEnv();
+ SCOPED_TRACE(index_types[i].scope);
+
+ TrackedFile sync_root(CreateTrackedSyncRoot());
+ TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_id"));
+ app_root.tracker.set_app_id(app_root.metadata.details().title());
- TrackedFile folder_0(CreateTrackedFolder(app_root, "folder_0"));
- TrackedFile file_0(CreateTrackedFile(folder_0, "file_0"));
+ TrackedFile folder_0(CreateTrackedFolder(app_root, "folder_0"));
+ TrackedFile file_0(CreateTrackedFile(folder_0, "file_0"));
- const TrackedFile* tracked_files[] = {
- &sync_root, &app_root, &folder_0, &file_0
- };
+ const TrackedFile* tracked_files[] = {
+ &sync_root, &app_root, &folder_0, &file_0
+ };
- SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
- EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase());
- VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
+ SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files));
+ EXPECT_EQ(SYNC_STATUS_OK,
+ InitializeMetadataDatabase(index_types[i].enable_on_disk));
+ VerifyTrackedFiles(tracked_files, arraysize(tracked_files));
- scoped_ptr<base::ListValue> files =
- metadata_database()->DumpFiles(app_root.tracker.app_id());
- ASSERT_EQ(2u, files->GetSize());
+ scoped_ptr<base::ListValue> files =
+ metadata_database()->DumpFiles(app_root.tracker.app_id());
+ ASSERT_EQ(2u, files->GetSize());
- base::DictionaryValue* file = NULL;
- std::string str;
+ base::DictionaryValue* file = NULL;
+ std::string str;
- ASSERT_TRUE(files->GetDictionary(0, &file));
- EXPECT_TRUE(file->GetString("title", &str) && str == "folder_0");
- EXPECT_TRUE(file->GetString("type", &str) && str == "folder");
- EXPECT_TRUE(file->HasKey("details"));
+ ASSERT_TRUE(files->GetDictionary(0, &file));
+ EXPECT_TRUE(file->GetString("title", &str) && str == "folder_0");
+ EXPECT_TRUE(file->GetString("type", &str) && str == "folder");
+ EXPECT_TRUE(file->HasKey("details"));
- ASSERT_TRUE(files->GetDictionary(1, &file));
- EXPECT_TRUE(file->GetString("title", &str) && str == "file_0");
- EXPECT_TRUE(file->GetString("type", &str) && str == "file");
- EXPECT_TRUE(file->HasKey("details"));
+ ASSERT_TRUE(files->GetDictionary(1, &file));
+ EXPECT_TRUE(file->GetString("title", &str) && str == "file_0");
+ EXPECT_TRUE(file->GetString("type", &str) && str == "file");
+ EXPECT_TRUE(file->HasKey("details"));
+
+ TearDownEnv();
+ }
}
} // namespace drive_backend

Powered by Google App Engine
This is Rietveld 408576698