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

Side by Side Diff: chrome/browser/sync_file_system/drive_metadata_store_unittest.cc

Issue 15951007: SyncFS: Factor out DriveMetadataDB migration functions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix win test Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/sync_file_system/drive_metadata_store.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_metadata_store.h" 5 #include "chrome/browser/sync_file_system/drive_metadata_store.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 EXPECT_TRUE(metadata_store()->GetResourceIdForOrigin(kOrigin3).empty()); 581 EXPECT_TRUE(metadata_store()->GetResourceIdForOrigin(kOrigin3).empty());
582 582
583 // Make sure they're still known origins. 583 // Make sure they're still known origins.
584 EXPECT_TRUE(metadata_store()->IsKnownOrigin(kOrigin1)); 584 EXPECT_TRUE(metadata_store()->IsKnownOrigin(kOrigin1));
585 EXPECT_TRUE(metadata_store()->IsKnownOrigin(kOrigin2)); 585 EXPECT_TRUE(metadata_store()->IsKnownOrigin(kOrigin2));
586 EXPECT_TRUE(metadata_store()->IsKnownOrigin(kOrigin3)); 586 EXPECT_TRUE(metadata_store()->IsKnownOrigin(kOrigin3));
587 587
588 VerifyReverseMap(); 588 VerifyReverseMap();
589 } 589 }
590 590
591 TEST_F(DriveMetadataStoreTest, MigrationFromV0) {
592 const GURL kOrigin1("chrome-extension://example1");
593 const GURL kOrigin2("chrome-extension://example2");
594 const std::string kSyncRootResourceId("folder:sync_root_resource_id");
595 const std::string kResourceId1("folder:hoge");
596 const std::string kResourceId2("folder:fuga");
597 const std::string kFileResourceId("file:piyo");
598 const base::FilePath kFile(FPL("foo bar"));
599 const std::string kFileMD5("file_md5");
600
601 {
602 const char kChangeStampKey[] = "CHANGE_STAMP";
603 const char kSyncRootDirectoryKey[] = "SYNC_ROOT_DIR";
604 const char kDriveMetadataKeyPrefix[] = "METADATA: ";
605 const char kDriveBatchSyncOriginKeyPrefix[] = "BSYNC_ORIGIN: ";
606 const char kDriveIncrementalSyncOriginKeyPrefix[] = "ISYNC_ORIGIN: ";
607
608 const char kV0ServiceName[] = "drive";
609 ASSERT_TRUE(RegisterSyncableFileSystem(kV0ServiceName));
610 leveldb::Options options;
611 options.create_if_missing = true;
612 leveldb::DB* db_ptr = NULL;
613 std::string db_dir = fileapi::FilePathToString(
614 base_dir().Append(DriveMetadataStore::kDatabaseName));
615 leveldb::Status status = leveldb::DB::Open(options, db_dir, &db_ptr);
616
617 scoped_ptr<leveldb::DB> db(db_ptr);
618 ASSERT_TRUE(status.ok());
619
620 leveldb::WriteOptions write_options;
621 db->Put(write_options, kChangeStampKey, "1");
622 db->Put(write_options, kSyncRootDirectoryKey, kSyncRootResourceId);
623
624 DriveMetadata drive_metadata;
625 drive_metadata.set_resource_id(kFileResourceId);
626 drive_metadata.set_md5_checksum(kFileMD5);
627 drive_metadata.set_conflicted(false);
628 drive_metadata.set_to_be_fetched(false);
629
630 fileapi::FileSystemURL url = CreateSyncableFileSystemURL(
631 kOrigin1, kV0ServiceName, kFile);
632 std::string serialized_url;
633 SerializeSyncableFileSystemURL(url, &serialized_url);
634 std::string metadata_string;
635 drive_metadata.SerializeToString(&metadata_string);
636
637 db->Put(write_options,
638 kDriveMetadataKeyPrefix + serialized_url, metadata_string);
639 db->Put(write_options,
640 kDriveBatchSyncOriginKeyPrefix + kOrigin1.spec(), kResourceId1);
641 db->Put(write_options,
642 kDriveIncrementalSyncOriginKeyPrefix + kOrigin2.spec(),
643 kResourceId2);
644 EXPECT_TRUE(RevokeSyncableFileSystem(kV0ServiceName));
645 MarkAsCreated();
646 }
647
648 InitializeDatabase();
649
650 EXPECT_EQ(1, metadata_store()->GetLargestChangeStamp());
651 EXPECT_EQ(kSyncRootResourceId, metadata_store()->sync_root_directory());
652 EXPECT_EQ(kResourceId2, metadata_store()->GetResourceIdForOrigin(kOrigin2));
653
654 DriveMetadata metadata;
655 EXPECT_EQ(SYNC_STATUS_OK,
656 metadata_store()->ReadEntry(
657 CreateSyncableFileSystemURL(kOrigin1, kServiceName, kFile),
658 &metadata));
659 EXPECT_EQ(kFileResourceId, metadata.resource_id());
660 EXPECT_EQ(kFileMD5, metadata.md5_checksum());
661 EXPECT_FALSE(metadata.conflicted());
662 EXPECT_FALSE(metadata.to_be_fetched());
663
664 VerifyReverseMap();
665 }
666
667 TEST_F(DriveMetadataStoreTest, DeprecateBatchSyncOrigins) {
668 // Make sure that previously saved batch sync origins were deleted from the DB
669 // as they are no longer used.
670 const char kDriveBatchSyncOriginKeyPrefix[] = "BSYNC_ORIGIN: ";
671 const GURL kOrigin1("chrome-extension://example1");
672 const std::string kResourceId1("hoge");
673
674 // Purposely add in an old batch sync origin (from previous DB version).
675 {
676 leveldb::Options options;
677 options.create_if_missing = true;
678 leveldb::DB* db_ptr = NULL;
679 std::string db_dir = fileapi::FilePathToString(
680 base_dir().Append(DriveMetadataStore::kDatabaseName));
681 leveldb::DB::Open(options, db_dir, &db_ptr);
682 scoped_ptr<leveldb::DB> db(db_ptr);
683 leveldb::WriteOptions write_options;
684 db->Put(write_options,
685 kDriveBatchSyncOriginKeyPrefix + kOrigin1.spec(), kResourceId1);
686 }
687
688 InitializeDatabase();
689
690 // Confirm no batch sync origins remain after InitializeDatabase.
691 scoped_ptr<leveldb::Iterator> itr(metadata_db()->NewIterator(
692 leveldb::ReadOptions()));
693 int batch_origins_found = 0;
694 for (itr->Seek(kDriveBatchSyncOriginKeyPrefix); itr->Valid(); itr->Next()) {
695 std::string key = itr->key().ToString();
696 if (!StartsWithASCII(key, kDriveBatchSyncOriginKeyPrefix, true))
697 break;
698 batch_origins_found++;
699 }
700 EXPECT_EQ(0, batch_origins_found);
701 }
702
703 TEST_F(DriveMetadataStoreTest, ResetOriginRootDirectory) { 591 TEST_F(DriveMetadataStoreTest, ResetOriginRootDirectory) {
704 const GURL kOrigin1("chrome-extension://example1"); 592 const GURL kOrigin1("chrome-extension://example1");
705 const std::string kResourceId1("hoge"); 593 const std::string kResourceId1("hoge");
706 const std::string kResourceId2("fuga"); 594 const std::string kResourceId2("fuga");
707 595
708 InitializeDatabase(); 596 InitializeDatabase();
709 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); 597 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1));
710 598
711 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1); 599 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1);
712 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId1); 600 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId1);
713 VerifyReverseMap(); 601 VerifyReverseMap();
714 602
715 metadata_store()->SetOriginRootDirectory(kOrigin1, kResourceId2); 603 metadata_store()->SetOriginRootDirectory(kOrigin1, kResourceId2);
716 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId2); 604 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId2);
717 VerifyReverseMap(); 605 VerifyReverseMap();
718 } 606 }
719 607
720 } // namespace sync_file_system 608 } // namespace sync_file_system
OLDNEW
« no previous file with comments | « chrome/browser/sync_file_system/drive_metadata_store.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698