Chromium Code Reviews| 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 |