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 |