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

Unified Diff: components/sync/core/shared_model_type_processor_unittest.cc

Issue 2363853002: [Sync] Test that MergeSyncData is not called on subsequent starts. (Closed)
Patch Set: Remove OnInitialSyncDone. Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | components/sync/test/engine/mock_model_type_worker.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/sync/core/shared_model_type_processor_unittest.cc
diff --git a/components/sync/core/shared_model_type_processor_unittest.cc b/components/sync/core/shared_model_type_processor_unittest.cc
index 8108cb08126a58c3013622142c44b7449204b877..a5ee1dc1187b130e219e68e835ec9722f1956d39 100644
--- a/components/sync/core/shared_model_type_processor_unittest.cc
+++ b/components/sync/core/shared_model_type_processor_unittest.cc
@@ -170,25 +170,6 @@ class SharedModelTypeProcessorTest : public ::testing::Test,
worker_ = nullptr;
}
- // Simulates an initial GetUpdates response from the worker with |updates|.
- void OnInitialSyncDone(UpdateResponseDataList updates) {
- DataTypeState data_type_state(db_.data_type_state());
- data_type_state.set_initial_sync_done(true);
- type_processor()->OnUpdateReceived(data_type_state, updates);
- }
-
- // Overloaded form with no updates.
- void OnInitialSyncDone() { OnInitialSyncDone(UpdateResponseDataList()); }
-
- // Overloaded form that constructs an update for a single entity.
- void OnInitialSyncDone(const std::string& key, const std::string& value) {
- UpdateResponseDataList updates;
- UpdateResponseData update;
- update.entity = GenerateEntityData(key, value)->PassToPtr();
- updates.push_back(update);
- OnInitialSyncDone(updates);
- }
-
// Return the number of entities the processor has metadata for.
size_t ProcessorEntityCount() const {
DCHECK(type_processor());
@@ -219,6 +200,8 @@ class SharedModelTypeProcessorTest : public ::testing::Test,
return error_handler_;
}
+ int merge_call_count() const { return merge_call_count_; }
+
private:
void CheckPostConditions() override {
FakeModelTypeService::CheckPostConditions();
@@ -248,6 +231,12 @@ class SharedModelTypeProcessorTest : public ::testing::Test,
// FakeModelTypeService overrides.
+ syncer::SyncError MergeSyncData(std::unique_ptr<MetadataChangeList> mcl,
+ EntityDataMap entity_data_map) override {
+ merge_call_count_++;
+ return FakeModelTypeService::MergeSyncData(std::move(mcl), entity_data_map);
+ }
+
void CaptureDataCallback(DataCallback callback,
syncer::SyncError error,
std::unique_ptr<DataBatch> data) {
@@ -284,6 +273,9 @@ class SharedModelTypeProcessorTest : public ::testing::Test,
// The error to expect in OnReadyToConnect().
syncer::SyncError::ErrorType expected_start_error_ = syncer::SyncError::UNSET;
+
+ // The number of times MergeSyncData has been called.
+ int merge_call_count_ = 0;
};
// Test that an initial sync handles local and remote items properly.
@@ -301,8 +293,10 @@ TEST_F(SharedModelTypeProcessorTest, InitialSync) {
EXPECT_EQ(0U, ProcessorEntityCount());
EXPECT_EQ(0U, worker()->GetNumPendingCommits());
+ EXPECT_EQ(0, merge_call_count());
// Initial sync with one server item.
- OnInitialSyncDone(kKey2, kValue2);
+ worker()->UpdateFromServer(kHash2, GenerateSpecifics(kKey2, kValue2));
+ EXPECT_EQ(1, merge_call_count());
// Now have data and metadata for both items, as well as a commit request for
// the local item.
@@ -314,6 +308,24 @@ TEST_F(SharedModelTypeProcessorTest, InitialSync) {
worker()->ExpectPendingCommits({kHash1});
}
+// Test that subsequent starts don't call MergeSyncData.
+TEST_F(SharedModelTypeProcessorTest, NonInitialSync) {
+ // This sets initial_sync_done to true.
+ InitializeToMetadataLoaded();
+
+ // Write an item before sync connects.
+ WriteItem(kKey1, kValue1);
+ EXPECT_EQ(1U, db().data_count());
+ EXPECT_EQ(1U, db().metadata_count());
+
+ // Check that data coming from sync is treated as a normal GetUpdates.
+ OnSyncStarting();
+ worker()->UpdateFromServer(kHash2, GenerateSpecifics(kKey2, kValue2));
+ EXPECT_EQ(0, merge_call_count());
+ EXPECT_EQ(2U, db().data_count());
+ EXPECT_EQ(2U, db().metadata_count());
+}
+
// Test that an error during the merge is propagated to the error handler.
TEST_F(SharedModelTypeProcessorTest, InitialSyncError) {
CreateChangeProcessor();
@@ -322,7 +334,7 @@ TEST_F(SharedModelTypeProcessorTest, InitialSyncError) {
SetServiceError(syncer::SyncError::DATATYPE_ERROR);
error_handler()->ExpectError(syncer::SyncError::DATATYPE_ERROR);
- OnInitialSyncDone();
+ worker()->UpdateFromServer();
}
// Test that errors before it's called are passed to |start_callback| correctly.
@@ -1078,7 +1090,7 @@ TEST_F(SharedModelTypeProcessorTest, Disable) {
CreateChangeProcessor();
OnMetadataLoaded();
OnSyncStarting();
- OnInitialSyncDone();
+ worker()->UpdateFromServer();
// Once we're ready to commit, all three local items should consider
// themselves uncommitted and pending for commit.
« no previous file with comments | « no previous file | components/sync/test/engine/mock_model_type_worker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698