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 { |
(...skipping 12 matching lines...) Expand all Loading... |
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 |