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

Unified Diff: sync/internal_api/shared_model_type_processor_unittest.cc

Issue 1835953002: [Sync] USS: Filter out redundant changes in SMTP. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Undo UpdateSpecificsHash change and add DCHECK. Created 4 years, 9 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 | « sync/internal_api/shared_model_type_processor.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/internal_api/shared_model_type_processor_unittest.cc
diff --git a/sync/internal_api/shared_model_type_processor_unittest.cc b/sync/internal_api/shared_model_type_processor_unittest.cc
index 1e6a7f79ef8dd908d928a7a77c89ea93438f56be..d626e2b36f3caf0a8b3850b9f94b59a2e55c21f6 100644
--- a/sync/internal_api/shared_model_type_processor_unittest.cc
+++ b/sync/internal_api/shared_model_type_processor_unittest.cc
@@ -59,16 +59,25 @@ scoped_ptr<EntityData> CopyEntityData(const EntityData& old_data) {
class SimpleStore {
public:
void PutData(const std::string& tag, const EntityData& data) {
+ data_change_count_++;
data_store_[tag] = CopyEntityData(data);
}
void PutMetadata(const std::string& tag,
const sync_pb::EntityMetadata& metadata) {
+ metadata_change_count_++;
metadata_store_[tag] = metadata;
}
- void RemoveData(const std::string& tag) { data_store_.erase(tag); }
- void RemoveMetadata(const std::string& tag) { metadata_store_.erase(tag); }
+ void RemoveData(const std::string& tag) {
+ data_change_count_++;
+ data_store_.erase(tag);
+ }
+
+ void RemoveMetadata(const std::string& tag) {
+ metadata_change_count_++;
+ metadata_store_.erase(tag);
+ }
bool HasData(const std::string& tag) const {
return data_store_.find(tag) != data_store_.end();
@@ -93,6 +102,9 @@ class SimpleStore {
size_t DataCount() const { return data_store_.size(); }
size_t MetadataCount() const { return metadata_store_.size(); }
+ size_t DataChangeCount() const { return data_change_count_; }
+ size_t MetadataChangeCount() const { return metadata_change_count_; }
+
const sync_pb::DataTypeState& data_type_state() const {
return data_type_state_;
}
@@ -111,12 +123,16 @@ class SimpleStore {
}
void Reset() {
+ data_change_count_ = 0;
+ metadata_change_count_ = 0;
data_store_.clear();
metadata_store_.clear();
data_type_state_.Clear();
}
private:
+ size_t data_change_count_ = 0;
+ size_t metadata_change_count_ = 0;
std::map<std::string, scoped_ptr<EntityData>> data_store_;
std::map<std::string, sync_pb::EntityMetadata> metadata_store_;
sync_pb::DataTypeState data_type_state_;
@@ -821,7 +837,7 @@ TEST_F(SharedModelTypeProcessorTest, LocalCreateItem) {
// The purpose of this test case is to test setting |client_tag_hash| and |id|
// on the EntityData object as we pass it into the Put method of the processor.
-TEST_F(SharedModelTypeProcessorTest, LocalCreateAndModifyWithOverrides) {
+TEST_F(SharedModelTypeProcessorTest, LocalUpdateItemWithOverrides) {
const std::string kId1 = "cid1";
const std::string kId2 = "cid2";
const std::string kName1 = "name1";
@@ -883,7 +899,7 @@ TEST_F(SharedModelTypeProcessorTest, LocalCreateAndModifyWithOverrides) {
// Creates a new local item then modifies it.
// Thoroughly tests data generated by modification of server-unknown item.
-TEST_F(SharedModelTypeProcessorTest, LocalCreateAndModifyItem) {
+TEST_F(SharedModelTypeProcessorTest, LocalUpdateItem) {
InitializeToReadyState();
WriteItem(kTag1, kValue1);
@@ -934,6 +950,18 @@ TEST_F(SharedModelTypeProcessorTest, LocalCreateAndModifyItem) {
EXPECT_NE(metadata_v1.specifics_hash(), metadata_v2.specifics_hash());
}
+// Tests that a local update that doesn't change specifics doesn't generate a
+// commit request.
+TEST_F(SharedModelTypeProcessorTest, LocalUpdateItemRedundant) {
+ InitializeToReadyState();
+ WriteItem(kTag1, kValue1);
+ EXPECT_EQ(1U, db().MetadataCount());
+ ExpectCommitRequests({kTag1});
+
+ WriteItem(kTag1, kValue1);
+ ExpectCommitRequests({kTag1});
+}
+
// Thoroughly tests the data generated by a server item creation.
TEST_F(SharedModelTypeProcessorTest, ServerCreateItem) {
InitializeToReadyState();
@@ -964,6 +992,26 @@ TEST_F(SharedModelTypeProcessorTest, ServerCreateItem) {
EXPECT_TRUE(metadata.has_specifics_hash());
}
+// Thoroughly tests the data generated by a server item creation.
+TEST_F(SharedModelTypeProcessorTest, ServerUpdateItem) {
+ InitializeToReadyState();
+
+ // Local add writes data and metadata; ack writes metadata again.
+ WriteItemAndAck(kTag1, kValue1);
+ EXPECT_EQ(1U, db().DataChangeCount());
+ EXPECT_EQ(2U, db().MetadataChangeCount());
+
+ // Redundant update from server doesn't write data but updates metadata.
+ UpdateFromServer(5, kTag1, kValue1);
+ EXPECT_EQ(1U, db().DataChangeCount());
+ EXPECT_EQ(3U, db().MetadataChangeCount());
+
+ // A reflection (update already received) is ignored completely.
+ UpdateFromServer(0 /* version_offset */, kTag1, kValue1);
+ EXPECT_EQ(1U, db().DataChangeCount());
+ EXPECT_EQ(3U, db().MetadataChangeCount());
+}
+
// Tests locally deleting an acknowledged item.
TEST_F(SharedModelTypeProcessorTest, LocalDeleteItem) {
InitializeToReadyState();
« no previous file with comments | « sync/internal_api/shared_model_type_processor.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698