Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 328 } | 328 } |
| 329 | 329 |
| 330 TEST_F(DriveMetadataStoreTest, ReadWriteTest) { | 330 TEST_F(DriveMetadataStoreTest, ReadWriteTest) { |
| 331 InitializeDatabase(); | 331 InitializeDatabase(); |
| 332 | 332 |
| 333 const fileapi::FileSystemURL url = URL(base::FilePath()); | 333 const fileapi::FileSystemURL url = URL(base::FilePath()); |
| 334 DriveMetadata metadata; | 334 DriveMetadata metadata; |
| 335 EXPECT_EQ(SYNC_DATABASE_ERROR_NOT_FOUND, | 335 EXPECT_EQ(SYNC_DATABASE_ERROR_NOT_FOUND, |
| 336 metadata_store()->ReadEntry(url, &metadata)); | 336 metadata_store()->ReadEntry(url, &metadata)); |
| 337 | 337 |
| 338 metadata = CreateMetadata("1234567890", "09876543210", true, false); | 338 metadata = CreateMetadata("file:1234567890", "09876543210", true, false); |
| 339 EXPECT_EQ(SYNC_STATUS_OK, UpdateEntry(url, metadata)); | 339 EXPECT_EQ(SYNC_STATUS_OK, UpdateEntry(url, metadata)); |
| 340 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); | 340 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); |
| 341 | 341 |
| 342 DropDatabase(); | 342 DropDatabase(); |
| 343 InitializeDatabase(); | 343 InitializeDatabase(); |
| 344 | 344 |
| 345 EXPECT_EQ(1, metadata_store()->GetLargestChangeStamp()); | 345 EXPECT_EQ(1, metadata_store()->GetLargestChangeStamp()); |
| 346 | 346 |
| 347 DriveMetadata metadata2; | 347 DriveMetadata metadata2; |
| 348 EXPECT_EQ(SYNC_STATUS_OK, | 348 EXPECT_EQ(SYNC_STATUS_OK, |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 411 EXPECT_EQ(SYNC_STATUS_OK, | 411 EXPECT_EQ(SYNC_STATUS_OK, |
| 412 metadata_store()->GetToBeFetchedFiles(&list)); | 412 metadata_store()->GetToBeFetchedFiles(&list)); |
| 413 EXPECT_EQ(2U, list.size()); | 413 EXPECT_EQ(2U, list.size()); |
| 414 EXPECT_EQ(list[0].first, URL(path2)); | 414 EXPECT_EQ(list[0].first, URL(path2)); |
| 415 EXPECT_EQ(list[1].first, URL(path3)); | 415 EXPECT_EQ(list[1].first, URL(path3)); |
| 416 | 416 |
| 417 VerifyReverseMap(); | 417 VerifyReverseMap(); |
| 418 } | 418 } |
| 419 | 419 |
| 420 TEST_F(DriveMetadataStoreTest, StoreSyncRootDirectory) { | 420 TEST_F(DriveMetadataStoreTest, StoreSyncRootDirectory) { |
| 421 const std::string kResourceId("hoge"); | 421 const std::string kResourceId("folder:hoge"); |
| 422 | 422 |
| 423 InitializeDatabase(); | 423 InitializeDatabase(); |
| 424 | 424 |
| 425 EXPECT_TRUE(metadata_store()->sync_root_directory().empty()); | 425 EXPECT_TRUE(metadata_store()->sync_root_directory().empty()); |
| 426 | 426 |
| 427 metadata_store()->SetSyncRootDirectory(kResourceId); | 427 metadata_store()->SetSyncRootDirectory(kResourceId); |
| 428 EXPECT_EQ(kResourceId, metadata_store()->sync_root_directory()); | 428 EXPECT_EQ(kResourceId, metadata_store()->sync_root_directory()); |
| 429 | 429 |
| 430 DropSyncRootDirectoryInStore(); | 430 DropSyncRootDirectoryInStore(); |
| 431 EXPECT_TRUE(metadata_store()->sync_root_directory().empty()); | 431 EXPECT_TRUE(metadata_store()->sync_root_directory().empty()); |
| 432 | 432 |
| 433 RestoreSyncRootDirectoryFromDB(); | 433 RestoreSyncRootDirectoryFromDB(); |
| 434 EXPECT_EQ(kResourceId, metadata_store()->sync_root_directory()); | 434 EXPECT_EQ(kResourceId, metadata_store()->sync_root_directory()); |
| 435 | 435 |
| 436 VerifyReverseMap(); | 436 VerifyReverseMap(); |
| 437 } | 437 } |
| 438 | 438 |
| 439 TEST_F(DriveMetadataStoreTest, StoreSyncOrigin) { | 439 TEST_F(DriveMetadataStoreTest, StoreSyncOrigin) { |
| 440 const GURL kOrigin1("chrome-extension://example1"); | 440 const GURL kOrigin1("chrome-extension://example1"); |
| 441 const GURL kOrigin2("chrome-extension://example2"); | 441 const GURL kOrigin2("chrome-extension://example2"); |
| 442 const std::string kResourceId1("hoge"); | 442 const std::string kResourceId1("folder:hoge"); |
| 443 const std::string kResourceId2("fuga"); | 443 const std::string kResourceId2("folder:fuga"); |
| 444 | 444 |
| 445 InitializeDatabase(); | 445 InitializeDatabase(); |
| 446 | 446 |
| 447 // Make sure origins have not been marked yet. | 447 // Make sure origins have not been marked yet. |
| 448 VerifyUntrackedOrigin(kOrigin1); | 448 VerifyUntrackedOrigin(kOrigin1); |
| 449 VerifyUntrackedOrigin(kOrigin2); | 449 VerifyUntrackedOrigin(kOrigin2); |
| 450 | 450 |
| 451 // Mark origins as incremental sync origins. | 451 // Mark origins as incremental sync origins. |
| 452 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1); | 452 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1); |
| 453 metadata_store()->AddIncrementalSyncOrigin(kOrigin2, kResourceId2); | 453 metadata_store()->AddIncrementalSyncOrigin(kOrigin2, kResourceId2); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 544 metadata_map().find(kOrigin1); | 544 metadata_map().find(kOrigin1); |
| 545 EXPECT_TRUE(found != metadata_map().end() && found->second.size() == 1u); | 545 EXPECT_TRUE(found != metadata_map().end() && found->second.size() == 1u); |
| 546 | 546 |
| 547 VerifyReverseMap(); | 547 VerifyReverseMap(); |
| 548 } | 548 } |
| 549 | 549 |
| 550 TEST_F(DriveMetadataStoreTest, GetResourceIdForOrigin) { | 550 TEST_F(DriveMetadataStoreTest, GetResourceIdForOrigin) { |
| 551 const GURL kOrigin1("chrome-extension://example1"); | 551 const GURL kOrigin1("chrome-extension://example1"); |
| 552 const GURL kOrigin2("chrome-extension://example2"); | 552 const GURL kOrigin2("chrome-extension://example2"); |
| 553 const GURL kOrigin3("chrome-extension://example3"); | 553 const GURL kOrigin3("chrome-extension://example3"); |
| 554 const std::string kResourceId1("hogera"); | 554 const std::string kResourceId1("folder:hogera"); |
| 555 const std::string kResourceId2("fugaga"); | 555 const std::string kResourceId2("folder:fugaga"); |
| 556 const std::string kResourceId3("piyopiyo"); | 556 const std::string kResourceId3("folder:piyopiyo"); |
| 557 | 557 |
| 558 InitializeDatabase(); | 558 InitializeDatabase(); |
| 559 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); | 559 EXPECT_EQ(SYNC_STATUS_OK, SetLargestChangeStamp(1)); |
| 560 metadata_store()->SetSyncRootDirectory("root"); | 560 metadata_store()->SetSyncRootDirectory("root"); |
| 561 | 561 |
| 562 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1); | 562 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1); |
| 563 metadata_store()->AddIncrementalSyncOrigin(kOrigin2, kResourceId2); | 563 metadata_store()->AddIncrementalSyncOrigin(kOrigin2, kResourceId2); |
| 564 metadata_store()->AddIncrementalSyncOrigin(kOrigin3, kResourceId3); | 564 metadata_store()->AddIncrementalSyncOrigin(kOrigin3, kResourceId3); |
| 565 DisableOrigin(kOrigin3); | 565 DisableOrigin(kOrigin3); |
| 566 | 566 |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 587 EXPECT_TRUE(metadata_store()->IsKnownOrigin(kOrigin1)); | 587 EXPECT_TRUE(metadata_store()->IsKnownOrigin(kOrigin1)); |
| 588 EXPECT_TRUE(metadata_store()->IsKnownOrigin(kOrigin2)); | 588 EXPECT_TRUE(metadata_store()->IsKnownOrigin(kOrigin2)); |
| 589 EXPECT_TRUE(metadata_store()->IsKnownOrigin(kOrigin3)); | 589 EXPECT_TRUE(metadata_store()->IsKnownOrigin(kOrigin3)); |
| 590 | 590 |
| 591 VerifyReverseMap(); | 591 VerifyReverseMap(); |
| 592 } | 592 } |
| 593 | 593 |
| 594 TEST_F(DriveMetadataStoreTest, MigrationFromV0) { | 594 TEST_F(DriveMetadataStoreTest, MigrationFromV0) { |
| 595 const GURL kOrigin1("chrome-extension://example1"); | 595 const GURL kOrigin1("chrome-extension://example1"); |
| 596 const GURL kOrigin2("chrome-extension://example2"); | 596 const GURL kOrigin2("chrome-extension://example2"); |
| 597 const std::string kSyncRootResourceId("sync_root_resource_id"); | 597 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
| 598 const std::string kResourceId1("hoge"); | 598 const std::string kResourceId1("folder:hoge"); |
| 599 const std::string kResourceId2("fuga"); | 599 const std::string kResourceId2("folder:fuga"); |
| 600 const std::string kFileResourceId("piyo"); | 600 const std::string kFileResourceId("file:piyo"); |
| 601 const base::FilePath kFile(FPL("foo bar")); | 601 const base::FilePath kFile(FPL("foo bar")); |
| 602 const std::string kFileMD5("file_md5"); | 602 const std::string kFileMD5("file_md5"); |
| 603 | 603 |
| 604 { | |
|
nhiroki
2013/05/27 09:17:56
Sorry, I uploaded wrong commit. This migration tes
| |
| 605 const char kChangeStampKey[] = "CHANGE_STAMP"; | |
| 606 const char kSyncRootDirectoryKey[] = "SYNC_ROOT_DIR"; | |
| 607 const char kDriveMetadataKeyPrefix[] = "METADATA: "; | |
| 608 const char kDriveBatchSyncOriginKeyPrefix[] = "BSYNC_ORIGIN: "; | |
| 609 const char kDriveIncrementalSyncOriginKeyPrefix[] = "ISYNC_ORIGIN: "; | |
| 610 | |
| 611 const char kV0ServiceName[] = "drive"; | |
| 612 ASSERT_TRUE(RegisterSyncableFileSystem(kV0ServiceName)); | |
| 613 leveldb::Options options; | |
| 614 options.create_if_missing = true; | |
| 615 leveldb::DB* db_ptr = NULL; | |
| 616 std::string db_dir = fileapi::FilePathToString( | |
| 617 base_dir().Append(DriveMetadataStore::kDatabaseName)); | |
| 618 leveldb::Status status = leveldb::DB::Open(options, db_dir, &db_ptr); | |
| 619 | |
| 620 scoped_ptr<leveldb::DB> db(db_ptr); | |
| 621 ASSERT_TRUE(status.ok()); | |
| 622 | |
| 623 leveldb::WriteOptions write_options; | |
| 624 db->Put(write_options, kChangeStampKey, "1"); | |
| 625 db->Put(write_options, kSyncRootDirectoryKey, kSyncRootResourceId); | |
| 626 | |
| 627 DriveMetadata drive_metadata; | |
| 628 drive_metadata.set_resource_id(kFileResourceId); | |
| 629 drive_metadata.set_md5_checksum(kFileMD5); | |
| 630 drive_metadata.set_conflicted(false); | |
| 631 drive_metadata.set_to_be_fetched(false); | |
| 632 | |
| 633 fileapi::FileSystemURL url = CreateSyncableFileSystemURL( | |
| 634 kOrigin1, kV0ServiceName, kFile); | |
| 635 std::string serialized_url; | |
| 636 SerializeSyncableFileSystemURL(url, &serialized_url); | |
| 637 std::string metadata_string; | |
| 638 drive_metadata.SerializeToString(&metadata_string); | |
| 639 | |
| 640 db->Put(write_options, | |
| 641 kDriveMetadataKeyPrefix + serialized_url, metadata_string); | |
| 642 db->Put(write_options, | |
| 643 kDriveBatchSyncOriginKeyPrefix + kOrigin1.spec(), kResourceId1); | |
| 644 db->Put(write_options, | |
| 645 kDriveIncrementalSyncOriginKeyPrefix + kOrigin2.spec(), | |
| 646 kResourceId2); | |
| 647 EXPECT_TRUE(RevokeSyncableFileSystem(kV0ServiceName)); | |
| 648 MarkAsCreated(); | |
| 649 } | |
| 650 | |
| 651 InitializeDatabase(); | |
| 652 | |
| 653 EXPECT_EQ(1, metadata_store()->GetLargestChangeStamp()); | |
| 654 EXPECT_EQ(kSyncRootResourceId, metadata_store()->sync_root_directory()); | |
| 655 EXPECT_EQ(kResourceId1, metadata_store()->GetResourceIdForOrigin(kOrigin1)); | |
| 656 EXPECT_EQ(kResourceId2, metadata_store()->GetResourceIdForOrigin(kOrigin2)); | |
| 657 | |
| 658 DriveMetadata metadata; | |
| 659 EXPECT_EQ(SYNC_STATUS_OK, | |
| 660 metadata_store()->ReadEntry( | |
| 661 CreateSyncableFileSystemURL(kOrigin1, kServiceName, kFile), | |
| 662 &metadata)); | |
| 663 EXPECT_EQ(kFileResourceId, metadata.resource_id()); | |
| 664 EXPECT_EQ(kFileMD5, metadata.md5_checksum()); | |
| 665 EXPECT_FALSE(metadata.conflicted()); | |
| 666 EXPECT_FALSE(metadata.to_be_fetched()); | |
| 667 | |
| 668 VerifyReverseMap(); | |
| 669 } | |
| 670 | |
| 671 TEST_F(DriveMetadataStoreTest, MigrationFromV1) { | |
| 672 const GURL kOrigin1("chrome-extension://example1"); | |
| 673 const GURL kOrigin2("chrome-extension://example2"); | |
| 674 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); | |
| 675 const std::string kResourceId1("folder:hoge"); | |
| 676 const std::string kResourceId2("folder:fuga"); | |
| 677 const std::string kFileResourceId("file:piyo"); | |
| 678 const base::FilePath kFile(FPL("foo bar")); | |
| 679 const std::string kFileMD5("file_md5"); | |
| 680 | |
| 604 { | 681 { |
| 605 const char kChangeStampKey[] = "CHANGE_STAMP"; | 682 const char kChangeStampKey[] = "CHANGE_STAMP"; |
| 606 const char kSyncRootDirectoryKey[] = "SYNC_ROOT_DIR"; | 683 const char kSyncRootDirectoryKey[] = "SYNC_ROOT_DIR"; |
| 607 const char kDriveMetadataKeyPrefix[] = "METADATA: "; | 684 const char kDriveMetadataKeyPrefix[] = "METADATA: "; |
| 608 const char kDriveBatchSyncOriginKeyPrefix[] = "BSYNC_ORIGIN: "; | 685 const char kDriveBatchSyncOriginKeyPrefix[] = "BSYNC_ORIGIN: "; |
| 609 const char kDriveIncrementalSyncOriginKeyPrefix[] = "ISYNC_ORIGIN: "; | 686 const char kDriveIncrementalSyncOriginKeyPrefix[] = "ISYNC_ORIGIN: "; |
| 610 | 687 |
| 611 const char kV0ServiceName[] = "drive"; | 688 const char kV0ServiceName[] = "drive"; |
| 612 ASSERT_TRUE(RegisterSyncableFileSystem(kV0ServiceName)); | 689 ASSERT_TRUE(RegisterSyncableFileSystem(kV0ServiceName)); |
| 613 leveldb::Options options; | 690 leveldb::Options options; |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 679 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1); | 756 metadata_store()->AddIncrementalSyncOrigin(kOrigin1, kResourceId1); |
| 680 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId1); | 757 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId1); |
| 681 VerifyReverseMap(); | 758 VerifyReverseMap(); |
| 682 | 759 |
| 683 metadata_store()->SetOriginRootDirectory(kOrigin1, kResourceId2); | 760 metadata_store()->SetOriginRootDirectory(kOrigin1, kResourceId2); |
| 684 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId2); | 761 VerifyIncrementalSyncOrigin(kOrigin1, kResourceId2); |
| 685 VerifyReverseMap(); | 762 VerifyReverseMap(); |
| 686 } | 763 } |
| 687 | 764 |
| 688 } // namespace sync_file_system | 765 } // namespace sync_file_system |
| OLD | NEW |