OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // Syncer unit tests. Unfortunately a lot of these tests | 5 // Syncer unit tests. Unfortunately a lot of these tests |
6 // are outdated and need to be reworked and updated. | 6 // are outdated and need to be reworked and updated. |
7 | 7 |
8 #include <algorithm> | 8 #include <algorithm> |
9 #include <limits> | 9 #include <limits> |
10 #include <list> | 10 #include <list> |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 } | 137 } |
138 | 138 |
139 // ModelSafeWorkerRegistrar implementation. | 139 // ModelSafeWorkerRegistrar implementation. |
140 virtual void GetWorkers(std::vector<ModelSafeWorker*>* out) OVERRIDE { | 140 virtual void GetWorkers(std::vector<ModelSafeWorker*>* out) OVERRIDE { |
141 out->push_back(worker_.get()); | 141 out->push_back(worker_.get()); |
142 } | 142 } |
143 | 143 |
144 virtual void GetModelSafeRoutingInfo(ModelSafeRoutingInfo* out) OVERRIDE { | 144 virtual void GetModelSafeRoutingInfo(ModelSafeRoutingInfo* out) OVERRIDE { |
145 // We're just testing the sync engine here, so we shunt everything to | 145 // We're just testing the sync engine here, so we shunt everything to |
146 // the SyncerThread. Datatypes which aren't enabled aren't in the map. | 146 // the SyncerThread. Datatypes which aren't enabled aren't in the map. |
147 for (int i = 0; i < syncable::MODEL_TYPE_COUNT; ++i) { | 147 for (syncable::ModelEnumSet::Iterator it = enabled_datatypes_.First(); |
148 if (enabled_datatypes_[i]) { | 148 it.Good(); it.Inc()) { |
149 (*out)[syncable::ModelTypeFromInt(i)] = GROUP_PASSIVE; | 149 (*out)[it.Get()] = GROUP_PASSIVE; |
150 } | |
151 } | 150 } |
152 } | 151 } |
153 | 152 |
154 virtual void OnSyncEngineEvent(const SyncEngineEvent& event) OVERRIDE { | 153 virtual void OnSyncEngineEvent(const SyncEngineEvent& event) OVERRIDE { |
155 DVLOG(1) << "HandleSyncEngineEvent in unittest " << event.what_happened; | 154 DVLOG(1) << "HandleSyncEngineEvent in unittest " << event.what_happened; |
156 // we only test for entry-specific events, not status changed ones. | 155 // we only test for entry-specific events, not status changed ones. |
157 switch (event.what_happened) { | 156 switch (event.what_happened) { |
158 case SyncEngineEvent::STATUS_CHANGED: | 157 case SyncEngineEvent::STATUS_CHANGED: |
159 // fall through | 158 // fall through |
160 case SyncEngineEvent::SYNC_CYCLE_ENDED: | 159 case SyncEngineEvent::SYNC_CYCLE_ENDED: |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 EXPECT_TRUE(entry.good()); | 409 EXPECT_TRUE(entry.good()); |
411 entry.Put(syncable::IS_UNSYNCED, true); | 410 entry.Put(syncable::IS_UNSYNCED, true); |
412 entry.Put(syncable::IS_DIR, true); | 411 entry.Put(syncable::IS_DIR, true); |
413 entry.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); | 412 entry.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
414 entry.Put(syncable::BASE_VERSION, id.ServerKnows() ? 1 : 0); | 413 entry.Put(syncable::BASE_VERSION, id.ServerKnows() ? 1 : 0); |
415 entry.Put(syncable::ID, id); | 414 entry.Put(syncable::ID, id); |
416 return entry.Get(META_HANDLE); | 415 return entry.Get(META_HANDLE); |
417 } | 416 } |
418 | 417 |
419 void EnableDatatype(syncable::ModelType model_type) { | 418 void EnableDatatype(syncable::ModelType model_type) { |
420 enabled_datatypes_[model_type] = true; | 419 enabled_datatypes_.Put(model_type); |
421 mock_server_->ExpectGetUpdatesRequestTypes(enabled_datatypes_); | 420 mock_server_->ExpectGetUpdatesRequestTypes(enabled_datatypes_); |
422 } | 421 } |
423 | 422 |
424 void DisableDatatype(syncable::ModelType model_type) { | 423 void DisableDatatype(syncable::ModelType model_type) { |
425 enabled_datatypes_[model_type] = false; | 424 enabled_datatypes_.Remove(model_type); |
426 mock_server_->ExpectGetUpdatesRequestTypes(enabled_datatypes_); | 425 mock_server_->ExpectGetUpdatesRequestTypes(enabled_datatypes_); |
427 } | 426 } |
428 | 427 |
429 template<typename FieldType, typename ValueType> | 428 template<typename FieldType, typename ValueType> |
430 ValueType GetField(int64 metahandle, FieldType field, | 429 ValueType GetField(int64 metahandle, FieldType field, |
431 ValueType default_value) const { | 430 ValueType default_value) const { |
432 ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); | 431 ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); |
433 EXPECT_TRUE(dir.good()); | 432 EXPECT_TRUE(dir.good()); |
434 ReadTransaction trans(FROM_HERE, dir); | 433 ReadTransaction trans(FROM_HERE, dir); |
435 Entry entry(&trans, GET_BY_HANDLE, metahandle); | 434 Entry entry(&trans, GET_BY_HANDLE, metahandle); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 Syncer* syncer_; | 488 Syncer* syncer_; |
490 | 489 |
491 scoped_ptr<SyncSession> session_; | 490 scoped_ptr<SyncSession> session_; |
492 scoped_ptr<SyncSessionContext> context_; | 491 scoped_ptr<SyncSessionContext> context_; |
493 bool saw_syncer_event_; | 492 bool saw_syncer_event_; |
494 base::TimeDelta last_short_poll_interval_received_; | 493 base::TimeDelta last_short_poll_interval_received_; |
495 base::TimeDelta last_long_poll_interval_received_; | 494 base::TimeDelta last_long_poll_interval_received_; |
496 base::TimeDelta last_sessions_commit_delay_seconds_; | 495 base::TimeDelta last_sessions_commit_delay_seconds_; |
497 scoped_refptr<ModelSafeWorker> worker_; | 496 scoped_refptr<ModelSafeWorker> worker_; |
498 | 497 |
499 syncable::ModelTypeBitSet enabled_datatypes_; | 498 syncable::ModelEnumSet enabled_datatypes_; |
500 | 499 |
501 DISALLOW_COPY_AND_ASSIGN(SyncerTest); | 500 DISALLOW_COPY_AND_ASSIGN(SyncerTest); |
502 }; | 501 }; |
503 | 502 |
504 TEST_F(SyncerTest, TestCallGatherUnsyncedEntries) { | 503 TEST_F(SyncerTest, TestCallGatherUnsyncedEntries) { |
505 ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); | 504 ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); |
506 ASSERT_TRUE(dir.good()); | 505 ASSERT_TRUE(dir.good()); |
507 { | 506 { |
508 Syncer::UnsyncedMetaHandles handles; | 507 Syncer::UnsyncedMetaHandles handles; |
509 { | 508 { |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
851 | 850 |
852 MutableEntry parent2(&wtrans, syncable::CREATE, wtrans.root_id(), "Tim"); | 851 MutableEntry parent2(&wtrans, syncable::CREATE, wtrans.root_id(), "Tim"); |
853 ASSERT_TRUE(parent2.good()); | 852 ASSERT_TRUE(parent2.good()); |
854 parent2.Put(syncable::IS_UNSYNCED, true); | 853 parent2.Put(syncable::IS_UNSYNCED, true); |
855 parent2.Put(syncable::IS_DIR, true); | 854 parent2.Put(syncable::IS_DIR, true); |
856 parent2.Put(syncable::SPECIFICS, DefaultPreferencesSpecifics()); | 855 parent2.Put(syncable::SPECIFICS, DefaultPreferencesSpecifics()); |
857 parent2.Put(syncable::BASE_VERSION, 1); | 856 parent2.Put(syncable::BASE_VERSION, 1); |
858 parent2.Put(syncable::ID, pref_node_id); | 857 parent2.Put(syncable::ID, pref_node_id); |
859 } | 858 } |
860 | 859 |
861 std::set<syncable::ModelType> types_to_purge; | 860 dir->PurgeEntriesWithTypeIn(syncable::ModelEnumSet(syncable::PREFERENCES)); |
862 types_to_purge.insert(syncable::PREFERENCES); | |
863 dir->PurgeEntriesWithTypeIn(types_to_purge); | |
864 | 861 |
865 const StatusController& status = session_->status_controller(); | 862 const StatusController& status = session_->status_controller(); |
866 syncer_->SyncShare(session_.get(), SYNCER_BEGIN, SYNCER_END); | 863 syncer_->SyncShare(session_.get(), SYNCER_BEGIN, SYNCER_END); |
867 EXPECT_EQ(2U, status.unsynced_handles().size()); | 864 EXPECT_EQ(2U, status.unsynced_handles().size()); |
868 ASSERT_EQ(2U, mock_server_->committed_ids().size()); | 865 ASSERT_EQ(2U, mock_server_->committed_ids().size()); |
869 // If this test starts failing, be aware other sort orders could be valid. | 866 // If this test starts failing, be aware other sort orders could be valid. |
870 EXPECT_TRUE(parent_id_ == mock_server_->committed_ids()[0]); | 867 EXPECT_TRUE(parent_id_ == mock_server_->committed_ids()[0]); |
871 EXPECT_TRUE(child_id_ == mock_server_->committed_ids()[1]); | 868 EXPECT_TRUE(child_id_ == mock_server_->committed_ids()[1]); |
872 { | 869 { |
873 ReadTransaction rt(FROM_HERE, dir); | 870 ReadTransaction rt(FROM_HERE, dir); |
(...skipping 17 matching lines...) Expand all Loading... |
891 WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); | 888 WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); |
892 MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), "Pete"); | 889 MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), "Pete"); |
893 ASSERT_TRUE(parent.good()); | 890 ASSERT_TRUE(parent.good()); |
894 parent.Put(syncable::IS_UNAPPLIED_UPDATE, true); | 891 parent.Put(syncable::IS_UNAPPLIED_UPDATE, true); |
895 parent.Put(syncable::IS_DIR, true); | 892 parent.Put(syncable::IS_DIR, true); |
896 parent.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); | 893 parent.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
897 parent.Put(syncable::BASE_VERSION, 1); | 894 parent.Put(syncable::BASE_VERSION, 1); |
898 parent.Put(syncable::ID, parent_id_); | 895 parent.Put(syncable::ID, parent_id_); |
899 } | 896 } |
900 | 897 |
901 std::set<syncable::ModelType> types_to_purge; | 898 dir->PurgeEntriesWithTypeIn(syncable::ModelEnumSet(syncable::BOOKMARKS)); |
902 types_to_purge.insert(syncable::BOOKMARKS); | |
903 dir->PurgeEntriesWithTypeIn(types_to_purge); | |
904 | 899 |
905 syncer_->SyncShare(session_.get(), SYNCER_BEGIN, SYNCER_END); | 900 syncer_->SyncShare(session_.get(), SYNCER_BEGIN, SYNCER_END); |
906 dir->SaveChanges(); | 901 dir->SaveChanges(); |
907 { | 902 { |
908 ReadTransaction rt(FROM_HERE, dir); | 903 ReadTransaction rt(FROM_HERE, dir); |
909 Entry entry(&rt, syncable::GET_BY_ID, parent_id_); | 904 Entry entry(&rt, syncable::GET_BY_ID, parent_id_); |
910 ASSERT_FALSE(entry.good()); | 905 ASSERT_FALSE(entry.good()); |
911 } | 906 } |
912 } | 907 } |
913 | 908 |
(...skipping 4443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5357 Add(low_id_); | 5352 Add(low_id_); |
5358 Add(high_id_); | 5353 Add(high_id_); |
5359 SyncShareAsDelegate(); | 5354 SyncShareAsDelegate(); |
5360 ExpectLocalOrderIsByServerId(); | 5355 ExpectLocalOrderIsByServerId(); |
5361 } | 5356 } |
5362 | 5357 |
5363 const SyncerTest::CommitOrderingTest | 5358 const SyncerTest::CommitOrderingTest |
5364 SyncerTest::CommitOrderingTest::LAST_COMMIT_ITEM = {-1, TestIdFactory::root()}; | 5359 SyncerTest::CommitOrderingTest::LAST_COMMIT_ITEM = {-1, TestIdFactory::root()}; |
5365 | 5360 |
5366 } // namespace browser_sync | 5361 } // namespace browser_sync |
OLD | NEW |