Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" | 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/files/scoped_temp_dir.h" | 8 #include "base/files/scoped_temp_dir.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 162 ++right_itr; | 162 ++right_itr; |
| 163 } | 163 } |
| 164 } | 164 } |
| 165 | 165 |
| 166 base::FilePath CreateNormalizedPath(const base::FilePath::StringType& path) { | 166 base::FilePath CreateNormalizedPath(const base::FilePath::StringType& path) { |
| 167 return base::FilePath(path).NormalizePathSeparators(); | 167 return base::FilePath(path).NormalizePathSeparators(); |
| 168 } | 168 } |
| 169 | 169 |
| 170 } // namespace | 170 } // namespace |
| 171 | 171 |
| 172 class MetadataDatabaseTest : public testing::Test { | 172 class MetadataDatabaseTest : public testing::TestWithParam<bool> { |
| 173 public: | 173 public: |
| 174 MetadataDatabaseTest() | 174 MetadataDatabaseTest() |
| 175 : current_change_id_(kInitialChangeID), | 175 : current_change_id_(kInitialChangeID), |
| 176 next_tracker_id_(kSyncRootTrackerID + 1), | 176 next_tracker_id_(kSyncRootTrackerID + 1), |
| 177 next_file_id_number_(1), | 177 next_file_id_number_(1), |
| 178 next_md5_sequence_number_(1) {} | 178 next_md5_sequence_number_(1) {} |
| 179 | 179 |
| 180 virtual ~MetadataDatabaseTest() {} | 180 virtual ~MetadataDatabaseTest() {} |
| 181 | 181 |
| 182 virtual void SetUp() OVERRIDE { | 182 virtual void SetUp() OVERRIDE { |
| 183 ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); | 183 ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); |
|
nhiroki
2014/09/10 05:58:55
(Not related to this CL) We don't have to create t
peria
2014/09/10 06:16:47
Acknowledged.
The path of database file is checke
| |
| 184 in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); | 184 in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); |
| 185 } | 185 } |
| 186 | 186 |
| 187 virtual void TearDown() OVERRIDE { DropDatabase(); } | 187 virtual void TearDown() OVERRIDE { DropDatabase(); } |
| 188 | 188 |
| 189 protected: | 189 protected: |
| 190 std::string GenerateFileID() { | 190 std::string GenerateFileID() { |
| 191 return "file_id_" + base::Int64ToString(next_file_id_number_++); | 191 return "file_id_" + base::Int64ToString(next_file_id_number_++); |
| 192 } | 192 } |
| 193 | 193 |
| 194 int64 GetTrackerIDByFileID(const std::string& file_id) { | 194 int64 GetTrackerIDByFileID(const std::string& file_id) { |
| 195 TrackerIDSet trackers; | 195 TrackerIDSet trackers; |
| 196 if (metadata_database_->FindTrackersByFileID(file_id, &trackers)) { | 196 if (metadata_database_->FindTrackersByFileID(file_id, &trackers)) { |
| 197 EXPECT_FALSE(trackers.empty()); | 197 EXPECT_FALSE(trackers.empty()); |
| 198 return *trackers.begin(); | 198 return *trackers.begin(); |
| 199 } | 199 } |
| 200 return 0; | 200 return 0; |
| 201 } | 201 } |
| 202 | 202 |
| 203 SyncStatusCode InitializeMetadataDatabase() { | 203 SyncStatusCode InitializeMetadataDatabase() { |
| 204 SyncStatusCode status = SYNC_STATUS_UNKNOWN; | 204 SyncStatusCode status = SYNC_STATUS_UNKNOWN; |
| 205 metadata_database_ = MetadataDatabase::Create( | 205 metadata_database_ = MetadataDatabase::CreateInternal( |
| 206 database_dir_.path(), in_memory_env_.get(), &status); | 206 database_dir_.path(), in_memory_env_.get(), |
| 207 GetParam(), &status); | |
| 207 return status; | 208 return status; |
| 208 } | 209 } |
| 209 | 210 |
| 210 void DropDatabase() { | 211 void DropDatabase() { |
| 211 metadata_database_.reset(); | 212 metadata_database_.reset(); |
| 212 message_loop_.RunUntilIdle(); | 213 message_loop_.RunUntilIdle(); |
| 213 } | 214 } |
| 214 | 215 |
| 215 void SetUpDatabaseByTrackedFiles(const TrackedFile** tracked_files, | 216 void SetUpDatabaseByTrackedFiles(const TrackedFile** tracked_files, |
| 216 int size) { | 217 int size) { |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 513 scoped_ptr<MetadataDatabase> metadata_database_2; | 514 scoped_ptr<MetadataDatabase> metadata_database_2; |
| 514 ASSERT_EQ(SYNC_STATUS_OK, | 515 ASSERT_EQ(SYNC_STATUS_OK, |
| 515 MetadataDatabase::CreateForTesting( | 516 MetadataDatabase::CreateForTesting( |
| 516 metadata_database_->db_.Pass(), | 517 metadata_database_->db_.Pass(), |
| 517 metadata_database_->enable_on_disk_index_, | 518 metadata_database_->enable_on_disk_index_, |
| 518 &metadata_database_2)); | 519 &metadata_database_2)); |
| 519 metadata_database_->db_ = metadata_database_2->db_.Pass(); | 520 metadata_database_->db_ = metadata_database_2->db_.Pass(); |
| 520 | 521 |
| 521 MetadataDatabaseIndexInterface* index1 = metadata_database_->index_.get(); | 522 MetadataDatabaseIndexInterface* index1 = metadata_database_->index_.get(); |
| 522 MetadataDatabaseIndexInterface* index2 = metadata_database_2->index_.get(); | 523 MetadataDatabaseIndexInterface* index2 = metadata_database_2->index_.get(); |
| 523 if (metadata_database_->enable_on_disk_index_) { | 524 if (GetParam()) { |
| 524 VerifyReloadConsistencyForOnDisk( | 525 VerifyReloadConsistencyForOnDisk( |
| 525 static_cast<MetadataDatabaseIndexOnDisk*>(index1), | 526 static_cast<MetadataDatabaseIndexOnDisk*>(index1), |
| 526 static_cast<MetadataDatabaseIndexOnDisk*>(index2)); | 527 static_cast<MetadataDatabaseIndexOnDisk*>(index2)); |
| 527 } else { | 528 } else { |
| 528 VerifyReloadConsistencyForOnMemory( | 529 VerifyReloadConsistencyForOnMemory( |
| 529 static_cast<MetadataDatabaseIndex*>(index1), | 530 static_cast<MetadataDatabaseIndex*>(index1), |
| 530 static_cast<MetadataDatabaseIndex*>(index2)); | 531 static_cast<MetadataDatabaseIndex*>(index2)); |
| 531 } | 532 } |
| 532 } | 533 } |
| 533 | 534 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 608 scoped_ptr<MetadataDatabase> metadata_database_; | 609 scoped_ptr<MetadataDatabase> metadata_database_; |
| 609 | 610 |
| 610 int64 current_change_id_; | 611 int64 current_change_id_; |
| 611 int64 next_tracker_id_; | 612 int64 next_tracker_id_; |
| 612 int64 next_file_id_number_; | 613 int64 next_file_id_number_; |
| 613 int64 next_md5_sequence_number_; | 614 int64 next_md5_sequence_number_; |
| 614 | 615 |
| 615 DISALLOW_COPY_AND_ASSIGN(MetadataDatabaseTest); | 616 DISALLOW_COPY_AND_ASSIGN(MetadataDatabaseTest); |
| 616 }; | 617 }; |
| 617 | 618 |
| 618 TEST_F(MetadataDatabaseTest, InitializationTest_Empty) { | 619 INSTANTIATE_TEST_CASE_P(MetadataDatabaseTestWithIndexesOnDisk, |
| 620 MetadataDatabaseTest, | |
| 621 ::testing::Values(true, false)); | |
| 622 | |
| 623 TEST_P(MetadataDatabaseTest, InitializationTest_Empty) { | |
| 619 EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase()); | 624 EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase()); |
| 620 DropDatabase(); | 625 DropDatabase(); |
| 621 EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase()); | 626 EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase()); |
| 622 | 627 |
| 623 DropDatabase(); | 628 DropDatabase(); |
| 624 | 629 |
| 625 scoped_ptr<LevelDBWrapper> db = InitializeLevelDB(); | 630 scoped_ptr<LevelDBWrapper> db = InitializeLevelDB(); |
| 626 db->Put(kServiceMetadataKey, "Unparsable string"); | 631 db->Put(kServiceMetadataKey, "Unparsable string"); |
| 627 EXPECT_TRUE(db->Commit().ok()); | 632 EXPECT_TRUE(db->Commit().ok()); |
| 628 db.reset(); | 633 db.reset(); |
| 629 | 634 |
| 630 EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase()); | 635 EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase()); |
| 631 } | 636 } |
| 632 | 637 |
| 633 TEST_F(MetadataDatabaseTest, InitializationTest_SimpleTree) { | 638 TEST_P(MetadataDatabaseTest, InitializationTest_SimpleTree) { |
| 634 TrackedFile sync_root(CreateTrackedSyncRoot()); | 639 TrackedFile sync_root(CreateTrackedSyncRoot()); |
| 635 TrackedFile app_root(CreateTrackedFolder(sync_root, "app_id")); | 640 TrackedFile app_root(CreateTrackedFolder(sync_root, "app_id")); |
| 636 app_root.tracker.set_app_id(app_root.metadata.details().title()); | 641 app_root.tracker.set_app_id(app_root.metadata.details().title()); |
| 637 app_root.tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT); | 642 app_root.tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT); |
| 638 | 643 |
| 639 TrackedFile file(CreateTrackedFile(app_root, "file")); | 644 TrackedFile file(CreateTrackedFile(app_root, "file")); |
| 640 TrackedFile folder(CreateTrackedFolder(app_root, "folder")); | 645 TrackedFile folder(CreateTrackedFolder(app_root, "folder")); |
| 641 TrackedFile file_in_folder(CreateTrackedFile(folder, "file_in_folder")); | 646 TrackedFile file_in_folder(CreateTrackedFile(folder, "file_in_folder")); |
| 642 TrackedFile orphaned_file(CreateTrackedFile(sync_root, "orphaned_file")); | 647 TrackedFile orphaned_file(CreateTrackedFile(sync_root, "orphaned_file")); |
| 643 orphaned_file.metadata.mutable_details()->clear_parent_folder_ids(); | 648 orphaned_file.metadata.mutable_details()->clear_parent_folder_ids(); |
| 644 orphaned_file.tracker.set_parent_tracker_id(0); | 649 orphaned_file.tracker.set_parent_tracker_id(0); |
| 645 | 650 |
| 646 const TrackedFile* tracked_files[] = { | 651 const TrackedFile* tracked_files[] = { |
| 647 &sync_root, &app_root, &file, &folder, &file_in_folder, &orphaned_file | 652 &sync_root, &app_root, &file, &folder, &file_in_folder, &orphaned_file |
| 648 }; | 653 }; |
| 649 | 654 |
| 650 SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files)); | 655 SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files)); |
| 651 EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase()); | 656 EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase()); |
| 652 | 657 |
| 653 orphaned_file.should_be_absent = true; | 658 orphaned_file.should_be_absent = true; |
| 654 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); | 659 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); |
| 655 } | 660 } |
| 656 | 661 |
| 657 TEST_F(MetadataDatabaseTest, AppManagementTest) { | 662 TEST_P(MetadataDatabaseTest, AppManagementTest) { |
| 658 TrackedFile sync_root(CreateTrackedSyncRoot()); | 663 TrackedFile sync_root(CreateTrackedSyncRoot()); |
| 659 TrackedFile app_root(CreateTrackedFolder(sync_root, "app_id")); | 664 TrackedFile app_root(CreateTrackedFolder(sync_root, "app_id")); |
| 660 app_root.tracker.set_app_id(app_root.metadata.details().title()); | 665 app_root.tracker.set_app_id(app_root.metadata.details().title()); |
| 661 app_root.tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT); | 666 app_root.tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT); |
| 662 | 667 |
| 663 TrackedFile file(CreateTrackedFile(app_root, "file")); | 668 TrackedFile file(CreateTrackedFile(app_root, "file")); |
| 664 TrackedFile folder(CreateTrackedFolder(sync_root, "folder")); | 669 TrackedFile folder(CreateTrackedFolder(sync_root, "folder")); |
| 665 folder.tracker.set_active(false); | 670 folder.tracker.set_active(false); |
| 666 | 671 |
| 667 const TrackedFile* tracked_files[] = { | 672 const TrackedFile* tracked_files[] = { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 702 app_root.tracker.set_app_id(std::string()); | 707 app_root.tracker.set_app_id(std::string()); |
| 703 app_root.tracker.set_tracker_kind(TRACKER_KIND_REGULAR); | 708 app_root.tracker.set_tracker_kind(TRACKER_KIND_REGULAR); |
| 704 app_root.tracker.set_active(false); | 709 app_root.tracker.set_active(false); |
| 705 app_root.tracker.set_dirty(true); | 710 app_root.tracker.set_dirty(true); |
| 706 file.should_be_absent = true; | 711 file.should_be_absent = true; |
| 707 VerifyTrackedFile(app_root); | 712 VerifyTrackedFile(app_root); |
| 708 VerifyTrackedFile(file); | 713 VerifyTrackedFile(file); |
| 709 VerifyReloadConsistency(); | 714 VerifyReloadConsistency(); |
| 710 } | 715 } |
| 711 | 716 |
| 712 TEST_F(MetadataDatabaseTest, BuildPathTest) { | 717 TEST_P(MetadataDatabaseTest, BuildPathTest) { |
| 713 FileMetadata sync_root(CreateSyncRootMetadata()); | 718 FileMetadata sync_root(CreateSyncRootMetadata()); |
| 714 FileTracker sync_root_tracker(CreateSyncRootTracker(sync_root)); | 719 FileTracker sync_root_tracker(CreateSyncRootTracker(sync_root)); |
| 715 | 720 |
| 716 FileMetadata app_root(CreateFolderMetadata(sync_root, "app_id")); | 721 FileMetadata app_root(CreateFolderMetadata(sync_root, "app_id")); |
| 717 FileTracker app_root_tracker( | 722 FileTracker app_root_tracker( |
| 718 CreateTracker(sync_root_tracker, app_root)); | 723 CreateTracker(sync_root_tracker, app_root)); |
| 719 app_root_tracker.set_app_id(app_root.details().title()); | 724 app_root_tracker.set_app_id(app_root.details().title()); |
| 720 app_root_tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT); | 725 app_root_tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT); |
| 721 | 726 |
| 722 FileMetadata folder(CreateFolderMetadata(app_root, "folder")); | 727 FileMetadata folder(CreateFolderMetadata(app_root, "folder")); |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 751 sync_root_tracker.tracker_id(), &path)); | 756 sync_root_tracker.tracker_id(), &path)); |
| 752 EXPECT_TRUE(metadata_database()->BuildPathForTracker( | 757 EXPECT_TRUE(metadata_database()->BuildPathForTracker( |
| 753 app_root_tracker.tracker_id(), &path)); | 758 app_root_tracker.tracker_id(), &path)); |
| 754 EXPECT_EQ(base::FilePath(FPL("/")).NormalizePathSeparators(), path); | 759 EXPECT_EQ(base::FilePath(FPL("/")).NormalizePathSeparators(), path); |
| 755 EXPECT_TRUE(metadata_database()->BuildPathForTracker( | 760 EXPECT_TRUE(metadata_database()->BuildPathForTracker( |
| 756 file_tracker.tracker_id(), &path)); | 761 file_tracker.tracker_id(), &path)); |
| 757 EXPECT_EQ(base::FilePath(FPL("/folder/file")).NormalizePathSeparators(), | 762 EXPECT_EQ(base::FilePath(FPL("/folder/file")).NormalizePathSeparators(), |
| 758 path); | 763 path); |
| 759 } | 764 } |
| 760 | 765 |
| 761 TEST_F(MetadataDatabaseTest, FindNearestActiveAncestorTest) { | 766 TEST_P(MetadataDatabaseTest, FindNearestActiveAncestorTest) { |
| 762 const std::string kAppID = "app_id"; | 767 const std::string kAppID = "app_id"; |
| 763 | 768 |
| 764 FileMetadata sync_root(CreateSyncRootMetadata()); | 769 FileMetadata sync_root(CreateSyncRootMetadata()); |
| 765 FileTracker sync_root_tracker(CreateSyncRootTracker(sync_root)); | 770 FileTracker sync_root_tracker(CreateSyncRootTracker(sync_root)); |
| 766 | 771 |
| 767 FileMetadata app_root(CreateFolderMetadata(sync_root, kAppID)); | 772 FileMetadata app_root(CreateFolderMetadata(sync_root, kAppID)); |
| 768 FileTracker app_root_tracker( | 773 FileTracker app_root_tracker( |
| 769 CreateTracker(sync_root_tracker, app_root)); | 774 CreateTracker(sync_root_tracker, app_root)); |
| 770 app_root_tracker.set_app_id(app_root.details().title()); | 775 app_root_tracker.set_app_id(app_root.details().title()); |
| 771 app_root_tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT); | 776 app_root_tracker.set_tracker_kind(TRACKER_KIND_APP_ROOT); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 856 base::FilePath path; | 861 base::FilePath path; |
| 857 FileTracker tracker; | 862 FileTracker tracker; |
| 858 EXPECT_TRUE(metadata_database()->FindNearestActiveAncestor( | 863 EXPECT_TRUE(metadata_database()->FindNearestActiveAncestor( |
| 859 kAppID, CreateNormalizedPath(FPL("folder1/folder2/file/folder4/file")), | 864 kAppID, CreateNormalizedPath(FPL("folder1/folder2/file/folder4/file")), |
| 860 &tracker, &path)); | 865 &tracker, &path)); |
| 861 EXPECT_EQ(folder_tracker2.tracker_id(), tracker.tracker_id()); | 866 EXPECT_EQ(folder_tracker2.tracker_id(), tracker.tracker_id()); |
| 862 EXPECT_EQ(CreateNormalizedPath(FPL("folder1/folder2")), path); | 867 EXPECT_EQ(CreateNormalizedPath(FPL("folder1/folder2")), path); |
| 863 } | 868 } |
| 864 } | 869 } |
| 865 | 870 |
| 866 TEST_F(MetadataDatabaseTest, UpdateByChangeListTest) { | 871 TEST_P(MetadataDatabaseTest, UpdateByChangeListTest) { |
| 867 TrackedFile sync_root(CreateTrackedSyncRoot()); | 872 TrackedFile sync_root(CreateTrackedSyncRoot()); |
| 868 TrackedFile app_root(CreateTrackedFolder(sync_root, "app_id")); | 873 TrackedFile app_root(CreateTrackedFolder(sync_root, "app_id")); |
| 869 TrackedFile disabled_app_root(CreateTrackedFolder(sync_root, "disabled_app")); | 874 TrackedFile disabled_app_root(CreateTrackedFolder(sync_root, "disabled_app")); |
| 870 TrackedFile file(CreateTrackedFile(app_root, "file")); | 875 TrackedFile file(CreateTrackedFile(app_root, "file")); |
| 871 TrackedFile renamed_file(CreateTrackedFile(app_root, "to be renamed")); | 876 TrackedFile renamed_file(CreateTrackedFile(app_root, "to be renamed")); |
| 872 TrackedFile folder(CreateTrackedFolder(app_root, "folder")); | 877 TrackedFile folder(CreateTrackedFolder(app_root, "folder")); |
| 873 TrackedFile reorganized_file( | 878 TrackedFile reorganized_file( |
| 874 CreateTrackedFile(app_root, "to be reorganized")); | 879 CreateTrackedFile(app_root, "to be reorganized")); |
| 875 TrackedFile updated_file( | 880 TrackedFile updated_file( |
| 876 CreateTrackedFile(app_root, "to be updated")); | 881 CreateTrackedFile(app_root, "to be updated")); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 918 new_file.tracker.set_dirty(true); | 923 new_file.tracker.set_dirty(true); |
| 919 ResetTrackerID(&new_file.tracker); | 924 ResetTrackerID(&new_file.tracker); |
| 920 EXPECT_NE(0, new_file.tracker.tracker_id()); | 925 EXPECT_NE(0, new_file.tracker.tracker_id()); |
| 921 | 926 |
| 922 new_file.should_be_absent = false; | 927 new_file.should_be_absent = false; |
| 923 | 928 |
| 924 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); | 929 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); |
| 925 VerifyReloadConsistency(); | 930 VerifyReloadConsistency(); |
| 926 } | 931 } |
| 927 | 932 |
| 928 TEST_F(MetadataDatabaseTest, PopulateFolderTest_RegularFolder) { | 933 TEST_P(MetadataDatabaseTest, PopulateFolderTest_RegularFolder) { |
| 929 TrackedFile sync_root(CreateTrackedSyncRoot()); | 934 TrackedFile sync_root(CreateTrackedSyncRoot()); |
| 930 TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_id")); | 935 TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_id")); |
| 931 app_root.tracker.set_app_id(app_root.metadata.details().title()); | 936 app_root.tracker.set_app_id(app_root.metadata.details().title()); |
| 932 | 937 |
| 933 TrackedFile folder_to_populate( | 938 TrackedFile folder_to_populate( |
| 934 CreateTrackedFolder(app_root, "folder_to_populate")); | 939 CreateTrackedFolder(app_root, "folder_to_populate")); |
| 935 folder_to_populate.tracker.set_needs_folder_listing(true); | 940 folder_to_populate.tracker.set_needs_folder_listing(true); |
| 936 folder_to_populate.tracker.set_dirty(true); | 941 folder_to_populate.tracker.set_dirty(true); |
| 937 | 942 |
| 938 TrackedFile known_file(CreateTrackedFile(folder_to_populate, "known_file")); | 943 TrackedFile known_file(CreateTrackedFile(folder_to_populate, "known_file")); |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 960 ResetTrackerID(&new_file.tracker); | 965 ResetTrackerID(&new_file.tracker); |
| 961 new_file.tracker.set_dirty(true); | 966 new_file.tracker.set_dirty(true); |
| 962 new_file.tracker.set_active(false); | 967 new_file.tracker.set_active(false); |
| 963 new_file.tracker.clear_synced_details(); | 968 new_file.tracker.clear_synced_details(); |
| 964 new_file.should_be_absent = false; | 969 new_file.should_be_absent = false; |
| 965 new_file.tracker_only = true; | 970 new_file.tracker_only = true; |
| 966 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); | 971 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); |
| 967 VerifyReloadConsistency(); | 972 VerifyReloadConsistency(); |
| 968 } | 973 } |
| 969 | 974 |
| 970 TEST_F(MetadataDatabaseTest, PopulateFolderTest_InactiveFolder) { | 975 TEST_P(MetadataDatabaseTest, PopulateFolderTest_InactiveFolder) { |
| 971 TrackedFile sync_root(CreateTrackedSyncRoot()); | 976 TrackedFile sync_root(CreateTrackedSyncRoot()); |
| 972 TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_id")); | 977 TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_id")); |
| 973 | 978 |
| 974 TrackedFile inactive_folder(CreateTrackedFolder(app_root, "inactive_folder")); | 979 TrackedFile inactive_folder(CreateTrackedFolder(app_root, "inactive_folder")); |
| 975 inactive_folder.tracker.set_active(false); | 980 inactive_folder.tracker.set_active(false); |
| 976 inactive_folder.tracker.set_dirty(true); | 981 inactive_folder.tracker.set_dirty(true); |
| 977 | 982 |
| 978 TrackedFile new_file( | 983 TrackedFile new_file( |
| 979 CreateTrackedFile(inactive_folder, "file_in_inactive_folder")); | 984 CreateTrackedFile(inactive_folder, "file_in_inactive_folder")); |
| 980 new_file.should_be_absent = true; | 985 new_file.should_be_absent = true; |
| 981 | 986 |
| 982 const TrackedFile* tracked_files[] = { | 987 const TrackedFile* tracked_files[] = { |
| 983 &sync_root, &app_root, &inactive_folder, &new_file, | 988 &sync_root, &app_root, &inactive_folder, &new_file, |
| 984 }; | 989 }; |
| 985 | 990 |
| 986 SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files)); | 991 SetUpDatabaseByTrackedFiles(tracked_files, arraysize(tracked_files)); |
| 987 EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase()); | 992 EXPECT_EQ(SYNC_STATUS_OK, InitializeMetadataDatabase()); |
| 988 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); | 993 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); |
| 989 | 994 |
| 990 FileIDList listed_children; | 995 FileIDList listed_children; |
| 991 listed_children.push_back(new_file.metadata.file_id()); | 996 listed_children.push_back(new_file.metadata.file_id()); |
| 992 | 997 |
| 993 EXPECT_EQ(SYNC_STATUS_OK, | 998 EXPECT_EQ(SYNC_STATUS_OK, |
| 994 PopulateFolder(inactive_folder.metadata.file_id(), | 999 PopulateFolder(inactive_folder.metadata.file_id(), |
| 995 listed_children)); | 1000 listed_children)); |
| 996 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); | 1001 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); |
| 997 VerifyReloadConsistency(); | 1002 VerifyReloadConsistency(); |
| 998 } | 1003 } |
| 999 | 1004 |
| 1000 TEST_F(MetadataDatabaseTest, PopulateFolderTest_DisabledAppRoot) { | 1005 TEST_P(MetadataDatabaseTest, PopulateFolderTest_DisabledAppRoot) { |
| 1001 TrackedFile sync_root(CreateTrackedSyncRoot()); | 1006 TrackedFile sync_root(CreateTrackedSyncRoot()); |
| 1002 TrackedFile disabled_app_root( | 1007 TrackedFile disabled_app_root( |
| 1003 CreateTrackedAppRoot(sync_root, "disabled_app")); | 1008 CreateTrackedAppRoot(sync_root, "disabled_app")); |
| 1004 disabled_app_root.tracker.set_dirty(true); | 1009 disabled_app_root.tracker.set_dirty(true); |
| 1005 disabled_app_root.tracker.set_needs_folder_listing(true); | 1010 disabled_app_root.tracker.set_needs_folder_listing(true); |
| 1006 | 1011 |
| 1007 TrackedFile known_file(CreateTrackedFile(disabled_app_root, "known_file")); | 1012 TrackedFile known_file(CreateTrackedFile(disabled_app_root, "known_file")); |
| 1008 TrackedFile file(CreateTrackedFile(disabled_app_root, "file")); | 1013 TrackedFile file(CreateTrackedFile(disabled_app_root, "file")); |
| 1009 file.should_be_absent = true; | 1014 file.should_be_absent = true; |
| 1010 | 1015 |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 1027 file.should_be_absent = false; | 1032 file.should_be_absent = false; |
| 1028 file.tracker_only = true; | 1033 file.tracker_only = true; |
| 1029 | 1034 |
| 1030 disabled_app_root.tracker.set_dirty(false); | 1035 disabled_app_root.tracker.set_dirty(false); |
| 1031 disabled_app_root.tracker.set_needs_folder_listing(false); | 1036 disabled_app_root.tracker.set_needs_folder_listing(false); |
| 1032 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); | 1037 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); |
| 1033 VerifyReloadConsistency(); | 1038 VerifyReloadConsistency(); |
| 1034 } | 1039 } |
| 1035 | 1040 |
| 1036 // TODO(tzik): Fix expectation and re-enable this test. | 1041 // TODO(tzik): Fix expectation and re-enable this test. |
| 1037 TEST_F(MetadataDatabaseTest, DISABLED_UpdateTrackerTest) { | 1042 TEST_P(MetadataDatabaseTest, DISABLED_UpdateTrackerTest) { |
| 1038 TrackedFile sync_root(CreateTrackedSyncRoot()); | 1043 TrackedFile sync_root(CreateTrackedSyncRoot()); |
| 1039 TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_root")); | 1044 TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_root")); |
| 1040 TrackedFile file(CreateTrackedFile(app_root, "file")); | 1045 TrackedFile file(CreateTrackedFile(app_root, "file")); |
| 1041 file.tracker.set_dirty(true); | 1046 file.tracker.set_dirty(true); |
| 1042 file.metadata.mutable_details()->set_title("renamed file"); | 1047 file.metadata.mutable_details()->set_title("renamed file"); |
| 1043 | 1048 |
| 1044 TrackedFile inactive_file(CreateTrackedFile(app_root, "inactive_file")); | 1049 TrackedFile inactive_file(CreateTrackedFile(app_root, "inactive_file")); |
| 1045 inactive_file.tracker.set_active(false); | 1050 inactive_file.tracker.set_active(false); |
| 1046 inactive_file.tracker.set_dirty(true); | 1051 inactive_file.tracker.set_dirty(true); |
| 1047 inactive_file.metadata.mutable_details()->set_title("renamed inactive file"); | 1052 inactive_file.metadata.mutable_details()->set_title("renamed inactive file"); |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 1078 new_conflict.metadata.details(); | 1083 new_conflict.metadata.details(); |
| 1079 new_conflict.tracker.set_dirty(false); | 1084 new_conflict.tracker.set_dirty(false); |
| 1080 new_conflict.tracker.set_active(true); | 1085 new_conflict.tracker.set_active(true); |
| 1081 file.tracker.set_dirty(true); | 1086 file.tracker.set_dirty(true); |
| 1082 file.tracker.set_active(false); | 1087 file.tracker.set_active(false); |
| 1083 EXPECT_EQ(SYNC_STATUS_OK, UpdateTracker(new_conflict.tracker)); | 1088 EXPECT_EQ(SYNC_STATUS_OK, UpdateTracker(new_conflict.tracker)); |
| 1084 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); | 1089 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); |
| 1085 VerifyReloadConsistency(); | 1090 VerifyReloadConsistency(); |
| 1086 } | 1091 } |
| 1087 | 1092 |
| 1088 TEST_F(MetadataDatabaseTest, PopulateInitialDataTest) { | 1093 TEST_P(MetadataDatabaseTest, PopulateInitialDataTest) { |
| 1089 TrackedFile sync_root(CreateTrackedSyncRoot()); | 1094 TrackedFile sync_root(CreateTrackedSyncRoot()); |
| 1090 TrackedFile app_root(CreateTrackedFolder(sync_root, "app_root")); | 1095 TrackedFile app_root(CreateTrackedFolder(sync_root, "app_root")); |
| 1091 app_root.tracker.set_active(false); | 1096 app_root.tracker.set_active(false); |
| 1092 | 1097 |
| 1093 const TrackedFile* tracked_files[] = { | 1098 const TrackedFile* tracked_files[] = { |
| 1094 &sync_root, &app_root | 1099 &sync_root, &app_root |
| 1095 }; | 1100 }; |
| 1096 | 1101 |
| 1097 scoped_ptr<google_apis::FileResource> sync_root_folder( | 1102 scoped_ptr<google_apis::FileResource> sync_root_folder( |
| 1098 CreateFileResourceFromMetadata(sync_root.metadata)); | 1103 CreateFileResourceFromMetadata(sync_root.metadata)); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 1109 app_root_folders)); | 1114 app_root_folders)); |
| 1110 | 1115 |
| 1111 ResetTrackerID(&sync_root.tracker); | 1116 ResetTrackerID(&sync_root.tracker); |
| 1112 ResetTrackerID(&app_root.tracker); | 1117 ResetTrackerID(&app_root.tracker); |
| 1113 app_root.tracker.set_parent_tracker_id(sync_root.tracker.tracker_id()); | 1118 app_root.tracker.set_parent_tracker_id(sync_root.tracker.tracker_id()); |
| 1114 | 1119 |
| 1115 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); | 1120 VerifyTrackedFiles(tracked_files, arraysize(tracked_files)); |
| 1116 VerifyReloadConsistency(); | 1121 VerifyReloadConsistency(); |
| 1117 } | 1122 } |
| 1118 | 1123 |
| 1119 TEST_F(MetadataDatabaseTest, DumpFiles) { | 1124 TEST_P(MetadataDatabaseTest, DumpFiles) { |
| 1120 TrackedFile sync_root(CreateTrackedSyncRoot()); | 1125 TrackedFile sync_root(CreateTrackedSyncRoot()); |
| 1121 TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_id")); | 1126 TrackedFile app_root(CreateTrackedAppRoot(sync_root, "app_id")); |
| 1122 app_root.tracker.set_app_id(app_root.metadata.details().title()); | 1127 app_root.tracker.set_app_id(app_root.metadata.details().title()); |
| 1123 | 1128 |
| 1124 TrackedFile folder_0(CreateTrackedFolder(app_root, "folder_0")); | 1129 TrackedFile folder_0(CreateTrackedFolder(app_root, "folder_0")); |
| 1125 TrackedFile file_0(CreateTrackedFile(folder_0, "file_0")); | 1130 TrackedFile file_0(CreateTrackedFile(folder_0, "file_0")); |
| 1126 | 1131 |
| 1127 const TrackedFile* tracked_files[] = { | 1132 const TrackedFile* tracked_files[] = { |
| 1128 &sync_root, &app_root, &folder_0, &file_0 | 1133 &sync_root, &app_root, &folder_0, &file_0 |
| 1129 }; | 1134 }; |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 1145 EXPECT_TRUE(file->HasKey("details")); | 1150 EXPECT_TRUE(file->HasKey("details")); |
| 1146 | 1151 |
| 1147 ASSERT_TRUE(files->GetDictionary(1, &file)); | 1152 ASSERT_TRUE(files->GetDictionary(1, &file)); |
| 1148 EXPECT_TRUE(file->GetString("title", &str) && str == "file_0"); | 1153 EXPECT_TRUE(file->GetString("title", &str) && str == "file_0"); |
| 1149 EXPECT_TRUE(file->GetString("type", &str) && str == "file"); | 1154 EXPECT_TRUE(file->GetString("type", &str) && str == "file"); |
| 1150 EXPECT_TRUE(file->HasKey("details")); | 1155 EXPECT_TRUE(file->HasKey("details")); |
| 1151 } | 1156 } |
| 1152 | 1157 |
| 1153 } // namespace drive_backend | 1158 } // namespace drive_backend |
| 1154 } // namespace sync_file_system | 1159 } // namespace sync_file_system |
| OLD | NEW |