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

Side by Side Diff: components/sync/core_impl/sync_manager_impl_unittest.cc

Issue 2388163002: [Sync] Move //components/sync to the syncer namespace, take 2. (Closed)
Patch Set: Rebase. Created 4 years, 2 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 // Unit tests for the SyncApi. Note that a lot of the underlying 5 // Unit tests for the SyncApi. Note that a lot of the underlying
6 // functionality is provided by the Syncable layer, which has its own 6 // functionality is provided by the Syncable layer, which has its own
7 // unit tests. We'll test SyncApi specific things in this harness. 7 // unit tests. We'll test SyncApi specific things in this harness.
8 8
9 #include "components/sync/core_impl/sync_manager_impl.h" 9 #include "components/sync/core_impl/sync_manager_impl.h"
10 10
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 } 282 }
283 283
284 bool SyncApiTest::ReloadDir() { 284 bool SyncApiTest::ReloadDir() {
285 return test_user_share_.Reload(); 285 return test_user_share_.Reload();
286 } 286 }
287 287
288 void SyncApiTest::CreateEntryWithAttachmentMetadata( 288 void SyncApiTest::CreateEntryWithAttachmentMetadata(
289 const ModelType& model_type, 289 const ModelType& model_type,
290 const std::string& client_tag, 290 const std::string& client_tag,
291 const sync_pb::AttachmentMetadata& attachment_metadata) { 291 const sync_pb::AttachmentMetadata& attachment_metadata) {
292 syncer::WriteTransaction trans(FROM_HERE, user_share()); 292 WriteTransaction trans(FROM_HERE, user_share());
293 syncer::ReadNode root_node(&trans); 293 ReadNode root_node(&trans);
294 root_node.InitByRootLookup(); 294 root_node.InitByRootLookup();
295 syncer::WriteNode node(&trans); 295 WriteNode node(&trans);
296 ASSERT_EQ(node.InitUniqueByCreation(model_type, root_node, client_tag), 296 ASSERT_EQ(node.InitUniqueByCreation(model_type, root_node, client_tag),
297 syncer::WriteNode::INIT_SUCCESS); 297 WriteNode::INIT_SUCCESS);
298 node.SetAttachmentMetadata(attachment_metadata); 298 node.SetAttachmentMetadata(attachment_metadata);
299 } 299 }
300 300
301 BaseNode::InitByLookupResult SyncApiTest::LookupEntryByClientTag( 301 BaseNode::InitByLookupResult SyncApiTest::LookupEntryByClientTag(
302 const ModelType& model_type, 302 const ModelType& model_type,
303 const std::string& client_tag) { 303 const std::string& client_tag) {
304 syncer::ReadTransaction trans(FROM_HERE, user_share()); 304 ReadTransaction trans(FROM_HERE, user_share());
305 syncer::ReadNode node(&trans); 305 ReadNode node(&trans);
306 return node.InitByClientTagLookup(model_type, client_tag); 306 return node.InitByClientTagLookup(model_type, client_tag);
307 } 307 }
308 308
309 void SyncApiTest::ReplaceWithTombstone(const ModelType& model_type, 309 void SyncApiTest::ReplaceWithTombstone(const ModelType& model_type,
310 const std::string& client_tag) { 310 const std::string& client_tag) {
311 syncer::WriteTransaction trans(FROM_HERE, user_share()); 311 WriteTransaction trans(FROM_HERE, user_share());
312 syncer::WriteNode node(&trans); 312 WriteNode node(&trans);
313 ASSERT_EQ(node.InitByClientTagLookup(model_type, client_tag), 313 ASSERT_EQ(node.InitByClientTagLookup(model_type, client_tag),
314 syncer::WriteNode::INIT_OK); 314 WriteNode::INIT_OK);
315 node.Tombstone(); 315 node.Tombstone();
316 } 316 }
317 317
318 TEST_F(SyncApiTest, SanityCheckTest) { 318 TEST_F(SyncApiTest, SanityCheckTest) {
319 { 319 {
320 ReadTransaction trans(FROM_HERE, user_share()); 320 ReadTransaction trans(FROM_HERE, user_share());
321 EXPECT_TRUE(trans.GetWrappedTrans()); 321 EXPECT_TRUE(trans.GetWrappedTrans());
322 } 322 }
323 { 323 {
324 WriteTransaction trans(FROM_HERE, user_share()); 324 WriteTransaction trans(FROM_HERE, user_share());
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 ignore_result(MakeBookmarkWithParent(user_share(), child1, NULL)); 695 ignore_result(MakeBookmarkWithParent(user_share(), child1, NULL));
696 EXPECT_EQ(6, GetTotalNodeCount(user_share(), type_root)); 696 EXPECT_EQ(6, GetTotalNodeCount(user_share(), type_root));
697 EXPECT_EQ(4, GetTotalNodeCount(user_share(), parent)); 697 EXPECT_EQ(4, GetTotalNodeCount(user_share(), parent));
698 } 698 }
699 699
700 // Verify that Directory keeps track of which attachments are referenced by 700 // Verify that Directory keeps track of which attachments are referenced by
701 // which entries. 701 // which entries.
702 TEST_F(SyncApiTest, AttachmentLinking) { 702 TEST_F(SyncApiTest, AttachmentLinking) {
703 // Add an entry with an attachment. 703 // Add an entry with an attachment.
704 std::string tag1("some tag"); 704 std::string tag1("some tag");
705 syncer::AttachmentId attachment_id(syncer::AttachmentId::Create(0, 0)); 705 AttachmentId attachment_id(AttachmentId::Create(0, 0));
706 sync_pb::AttachmentMetadata attachment_metadata; 706 sync_pb::AttachmentMetadata attachment_metadata;
707 sync_pb::AttachmentMetadataRecord* record = attachment_metadata.add_record(); 707 sync_pb::AttachmentMetadataRecord* record = attachment_metadata.add_record();
708 *record->mutable_id() = attachment_id.GetProto(); 708 *record->mutable_id() = attachment_id.GetProto();
709 ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id.GetProto())); 709 ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id.GetProto()));
710 CreateEntryWithAttachmentMetadata(PREFERENCES, tag1, attachment_metadata); 710 CreateEntryWithAttachmentMetadata(PREFERENCES, tag1, attachment_metadata);
711 711
712 // See that the directory knows it's linked. 712 // See that the directory knows it's linked.
713 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id.GetProto())); 713 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id.GetProto()));
714 714
715 // Add a second entry referencing the same attachment. 715 // Add a second entry referencing the same attachment.
716 std::string tag2("some other tag"); 716 std::string tag2("some other tag");
717 CreateEntryWithAttachmentMetadata(PREFERENCES, tag2, attachment_metadata); 717 CreateEntryWithAttachmentMetadata(PREFERENCES, tag2, attachment_metadata);
718 718
719 // See that the directory knows it's still linked. 719 // See that the directory knows it's still linked.
720 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id.GetProto())); 720 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id.GetProto()));
721 721
722 // Tombstone the first entry. 722 // Tombstone the first entry.
723 ReplaceWithTombstone(syncer::PREFERENCES, tag1); 723 ReplaceWithTombstone(PREFERENCES, tag1);
724 724
725 // See that the attachment is still considered linked because the entry hasn't 725 // See that the attachment is still considered linked because the entry hasn't
726 // been purged from the Directory. 726 // been purged from the Directory.
727 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id.GetProto())); 727 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id.GetProto()));
728 728
729 // Save changes and see that the entry is truly gone. 729 // Save changes and see that the entry is truly gone.
730 ASSERT_TRUE(dir()->SaveChanges()); 730 ASSERT_TRUE(dir()->SaveChanges());
731 ASSERT_EQ(LookupEntryByClientTag(PREFERENCES, tag1), 731 ASSERT_EQ(LookupEntryByClientTag(PREFERENCES, tag1),
732 syncer::WriteNode::INIT_FAILED_ENTRY_NOT_GOOD); 732 WriteNode::INIT_FAILED_ENTRY_NOT_GOOD);
733 733
734 // However, the attachment is still linked. 734 // However, the attachment is still linked.
735 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id.GetProto())); 735 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id.GetProto()));
736 736
737 // Save, destroy, and recreate the directory. See that it's still linked. 737 // Save, destroy, and recreate the directory. See that it's still linked.
738 ASSERT_TRUE(ReloadDir()); 738 ASSERT_TRUE(ReloadDir());
739 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id.GetProto())); 739 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id.GetProto()));
740 740
741 // Tombstone the second entry, save changes, see that it's truly gone. 741 // Tombstone the second entry, save changes, see that it's truly gone.
742 ReplaceWithTombstone(syncer::PREFERENCES, tag2); 742 ReplaceWithTombstone(PREFERENCES, tag2);
743 ASSERT_TRUE(dir()->SaveChanges()); 743 ASSERT_TRUE(dir()->SaveChanges());
744 ASSERT_EQ(LookupEntryByClientTag(PREFERENCES, tag2), 744 ASSERT_EQ(LookupEntryByClientTag(PREFERENCES, tag2),
745 syncer::WriteNode::INIT_FAILED_ENTRY_NOT_GOOD); 745 WriteNode::INIT_FAILED_ENTRY_NOT_GOOD);
746 746
747 // Finally, the attachment is no longer linked. 747 // Finally, the attachment is no longer linked.
748 ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id.GetProto())); 748 ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id.GetProto()));
749 } 749 }
750 750
751 // This tests directory integrity in the case of creating a new unique node 751 // This tests directory integrity in the case of creating a new unique node
752 // with client tag matching that of an existing unapplied node with server only 752 // with client tag matching that of an existing unapplied node with server only
753 // data. See crbug.com/505761. 753 // data. See crbug.com/505761.
754 TEST_F(SyncApiTest, WriteNode_UniqueByCreation_UndeleteCase) { 754 TEST_F(SyncApiTest, WriteNode_UniqueByCreation_UndeleteCase) {
755 int64_t preferences_root = MakeTypeRoot(user_share(), PREFERENCES); 755 int64_t preferences_root = MakeTypeRoot(user_share(), PREFERENCES);
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
904 } 904 }
905 }; 905 };
906 906
907 class SyncManagerObserverMock : public SyncManager::Observer { 907 class SyncManagerObserverMock : public SyncManager::Observer {
908 public: 908 public:
909 MOCK_METHOD1(OnSyncCycleCompleted, void(const SyncCycleSnapshot&)); // NOLINT 909 MOCK_METHOD1(OnSyncCycleCompleted, void(const SyncCycleSnapshot&)); // NOLINT
910 MOCK_METHOD4(OnInitializationComplete, 910 MOCK_METHOD4(OnInitializationComplete,
911 void(const WeakHandle<JsBackend>&, 911 void(const WeakHandle<JsBackend>&,
912 const WeakHandle<DataTypeDebugInfoListener>&, 912 const WeakHandle<DataTypeDebugInfoListener>&,
913 bool, 913 bool,
914 syncer::ModelTypeSet)); // NOLINT 914 ModelTypeSet)); // NOLINT
915 MOCK_METHOD1(OnConnectionStatusChange, void(ConnectionStatus)); // NOLINT 915 MOCK_METHOD1(OnConnectionStatusChange, void(ConnectionStatus)); // NOLINT
916 MOCK_METHOD1(OnUpdatedToken, void(const std::string&)); // NOLINT 916 MOCK_METHOD1(OnUpdatedToken, void(const std::string&)); // NOLINT
917 MOCK_METHOD1(OnActionableError, void(const SyncProtocolError&)); // NOLINT 917 MOCK_METHOD1(OnActionableError, void(const SyncProtocolError&)); // NOLINT
918 MOCK_METHOD1(OnMigrationRequested, void(syncer::ModelTypeSet)); // NOLINT 918 MOCK_METHOD1(OnMigrationRequested, void(ModelTypeSet)); // NOLINT
919 MOCK_METHOD1(OnProtocolEvent, void(const ProtocolEvent&)); // NOLINT 919 MOCK_METHOD1(OnProtocolEvent, void(const ProtocolEvent&)); // NOLINT
920 }; 920 };
921 921
922 class SyncEncryptionHandlerObserverMock 922 class SyncEncryptionHandlerObserverMock
923 : public SyncEncryptionHandler::Observer { 923 : public SyncEncryptionHandler::Observer {
924 public: 924 public:
925 MOCK_METHOD2(OnPassphraseRequired, 925 MOCK_METHOD2(OnPassphraseRequired,
926 void(PassphraseRequiredReason, 926 void(PassphraseRequiredReason,
927 const sync_pb::EncryptedData&)); // NOLINT 927 const sync_pb::EncryptedData&)); // NOLINT
928 MOCK_METHOD0(OnPassphraseAccepted, void()); // NOLINT 928 MOCK_METHOD0(OnPassphraseAccepted, void()); // NOLINT
(...skipping 2430 matching lines...) Expand 10 before | Expand all | Expand 10 after
3359 // SyncManagerInitInvalidStorageTest::GetFactory will return 3359 // SyncManagerInitInvalidStorageTest::GetFactory will return
3360 // DirectoryBackingStore that ensures that SyncManagerImpl::OpenDirectory fails. 3360 // DirectoryBackingStore that ensures that SyncManagerImpl::OpenDirectory fails.
3361 // SyncManagerImpl initialization is done in SyncManagerTest::SetUp. This test's 3361 // SyncManagerImpl initialization is done in SyncManagerTest::SetUp. This test's
3362 // task is to ensure that SyncManagerImpl reported initialization failure in 3362 // task is to ensure that SyncManagerImpl reported initialization failure in
3363 // OnInitializationComplete callback. 3363 // OnInitializationComplete callback.
3364 TEST_F(SyncManagerInitInvalidStorageTest, FailToOpenDatabase) { 3364 TEST_F(SyncManagerInitInvalidStorageTest, FailToOpenDatabase) {
3365 EXPECT_FALSE(initialization_succeeded_); 3365 EXPECT_FALSE(initialization_succeeded_);
3366 } 3366 }
3367 3367
3368 } // namespace syncer 3368 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/core_impl/sync_manager_impl.cc ('k') | components/sync/core_impl/test/fake_model_type_connector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698