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

Side by Side Diff: components/sync/engine_impl/worker_entity_tracker_unittest.cc

Issue 2339403004: [Sync] Add two more USS integration tests. (Closed)
Patch Set: 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 unified diff | Download patch
OLDNEW
1 1
2 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Copyright 2014 The Chromium Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be 3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file. 4 // found in the LICENSE file.
5 5
6 #include "components/sync/engine_impl/worker_entity_tracker.h" 6 #include "components/sync/engine_impl/worker_entity_tracker.h"
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 19 matching lines...) Expand all
30 public: 30 public:
31 WorkerEntityTrackerTest() 31 WorkerEntityTrackerTest()
32 : kServerId("ServerID"), 32 : kServerId("ServerID"),
33 kClientTag("some.sample.tag"), 33 kClientTag("some.sample.tag"),
34 kClientTagHash( 34 kClientTagHash(
35 syncer::syncable::GenerateSyncableHash(syncer::PREFERENCES, 35 syncer::syncable::GenerateSyncableHash(syncer::PREFERENCES,
36 kClientTag)), 36 kClientTag)),
37 kSpecificsHash("somehash"), 37 kSpecificsHash("somehash"),
38 kCtime(base::Time::UnixEpoch() + base::TimeDelta::FromDays(10)), 38 kCtime(base::Time::UnixEpoch() + base::TimeDelta::FromDays(10)),
39 kMtime(base::Time::UnixEpoch() + base::TimeDelta::FromDays(20)), 39 kMtime(base::Time::UnixEpoch() + base::TimeDelta::FromDays(20)),
40 entity_(new WorkerEntityTracker(kServerId, kClientTagHash)) { 40 entity_(new WorkerEntityTracker("", kClientTagHash)) {
41 specifics.mutable_preference()->set_name(kClientTag); 41 specifics.mutable_preference()->set_name(kClientTag);
42 specifics.mutable_preference()->set_value("pref.value"); 42 specifics.mutable_preference()->set_value("pref.value");
43 } 43 }
44 44
45 ~WorkerEntityTrackerTest() override {} 45 ~WorkerEntityTrackerTest() override {}
46 46
47 CommitRequestData MakeCommitRequestData(int64_t sequence_number, 47 CommitRequestData MakeCommitRequestData(int64_t sequence_number,
48 int64_t base_version) { 48 int64_t base_version) {
49 EntityData data; 49 EntityData data;
50 data.id = kServerId; 50 data.id = kServerId;
(...skipping 28 matching lines...) Expand all
79 const std::string kSpecificsHash; 79 const std::string kSpecificsHash;
80 const base::Time kCtime; 80 const base::Time kCtime;
81 const base::Time kMtime; 81 const base::Time kMtime;
82 sync_pb::EntitySpecifics specifics; 82 sync_pb::EntitySpecifics specifics;
83 std::unique_ptr<WorkerEntityTracker> entity_; 83 std::unique_ptr<WorkerEntityTracker> entity_;
84 }; 84 };
85 85
86 // Construct a new entity from a server update. Then receive another update. 86 // Construct a new entity from a server update. Then receive another update.
87 TEST_F(WorkerEntityTrackerTest, FromUpdateResponse) { 87 TEST_F(WorkerEntityTrackerTest, FromUpdateResponse) {
88 EXPECT_FALSE(entity_->HasPendingCommit()); 88 EXPECT_FALSE(entity_->HasPendingCommit());
89 entity_->ReceiveUpdate(20); 89 EXPECT_EQ("", entity_->id());
90 entity_->ReceiveUpdate(MakeUpdateResponseData(20));
90 EXPECT_FALSE(entity_->HasPendingCommit()); 91 EXPECT_FALSE(entity_->HasPendingCommit());
92 EXPECT_EQ(kServerId, entity_->id());
91 } 93 }
92 94
93 // Construct a new entity from a commit request. Then serialize it. 95 // Construct a new entity from a commit request. Then serialize it.
94 TEST_F(WorkerEntityTrackerTest, FromCommitRequest) { 96 TEST_F(WorkerEntityTrackerTest, FromCommitRequest) {
95 const int64_t kSequenceNumber = 22; 97 const int64_t kSequenceNumber = 22;
96 const int64_t kBaseVersion = 33; 98 const int64_t kBaseVersion = 33;
97 CommitRequestData data = MakeCommitRequestData(kSequenceNumber, kBaseVersion); 99 CommitRequestData data = MakeCommitRequestData(kSequenceNumber, kBaseVersion);
98 entity_->RequestCommit(data); 100 entity_->RequestCommit(data);
101 EXPECT_EQ("", entity_->id());
99 102
100 ASSERT_TRUE(entity_->HasPendingCommit()); 103 ASSERT_TRUE(entity_->HasPendingCommit());
101 sync_pb::SyncEntity pb_entity; 104 sync_pb::SyncEntity pb_entity;
102 entity_->PopulateCommitProto(&pb_entity); 105 entity_->PopulateCommitProto(&pb_entity);
103 EXPECT_EQ(kServerId, pb_entity.id_string()); 106 EXPECT_EQ("", pb_entity.id_string());
104 EXPECT_EQ(kClientTagHash, pb_entity.client_defined_unique_tag()); 107 EXPECT_EQ(kClientTagHash, pb_entity.client_defined_unique_tag());
105 EXPECT_EQ(kBaseVersion, pb_entity.version()); 108 EXPECT_EQ(kBaseVersion, pb_entity.version());
106 EXPECT_EQ(kCtime, syncer::ProtoTimeToTime(pb_entity.ctime())); 109 EXPECT_EQ(kCtime, syncer::ProtoTimeToTime(pb_entity.ctime()));
107 EXPECT_EQ(kMtime, syncer::ProtoTimeToTime(pb_entity.mtime())); 110 EXPECT_EQ(kMtime, syncer::ProtoTimeToTime(pb_entity.mtime()));
108 EXPECT_FALSE(pb_entity.deleted()); 111 EXPECT_FALSE(pb_entity.deleted());
109 EXPECT_EQ(specifics.preference().name(), 112 EXPECT_EQ(specifics.preference().name(),
110 pb_entity.specifics().preference().name()); 113 pb_entity.specifics().preference().name());
111 EXPECT_EQ(specifics.preference().value(), 114 EXPECT_EQ(specifics.preference().value(),
112 pb_entity.specifics().preference().value()); 115 pb_entity.specifics().preference().value());
113 116
114 CommitResponseData ack; 117 CommitResponseData ack;
115 ack.response_version = kBaseVersion + 1; 118 ack.response_version = kBaseVersion + 1;
116 ack.id = kServerId; 119 ack.id = kServerId;
117 entity_->ReceiveCommitResponse(&ack); 120 entity_->ReceiveCommitResponse(&ack);
118 121
119 EXPECT_EQ(kSequenceNumber, ack.sequence_number); 122 EXPECT_EQ(kSequenceNumber, ack.sequence_number);
120 EXPECT_EQ(kSpecificsHash, ack.specifics_hash); 123 EXPECT_EQ(kSpecificsHash, ack.specifics_hash);
121 EXPECT_FALSE(entity_->HasPendingCommit()); 124 EXPECT_FALSE(entity_->HasPendingCommit());
125
126 EXPECT_EQ(kServerId, entity_->id());
127 CommitRequestData data2 =
128 MakeCommitRequestData(kSequenceNumber + 1, ack.response_version);
129 entity_->RequestCommit(data2);
130 entity_->PopulateCommitProto(&pb_entity);
131 EXPECT_EQ(kServerId, pb_entity.id_string());
122 } 132 }
123 133
124 // Start with a server initiated entity. Commit over top of it. 134 // Start with a server initiated entity. Commit over top of it.
125 TEST_F(WorkerEntityTrackerTest, RequestCommit) { 135 TEST_F(WorkerEntityTrackerTest, RequestCommit) {
126 entity_->RequestCommit(MakeCommitRequestData(1, 10)); 136 entity_->RequestCommit(MakeCommitRequestData(1, 10));
127 EXPECT_TRUE(entity_->HasPendingCommit()); 137 EXPECT_TRUE(entity_->HasPendingCommit());
128 } 138 }
129 139
130 // Start with a server initiated entity. Fail to request a commit because of 140 // Start with a server initiated entity. Fail to request a commit because of
131 // an out of date base version. 141 // an out of date base version.
132 TEST_F(WorkerEntityTrackerTest, RequestCommitFailure) { 142 TEST_F(WorkerEntityTrackerTest, RequestCommitFailure) {
133 entity_->ReceiveUpdate(10); 143 entity_->ReceiveUpdate(MakeUpdateResponseData(10));
134 EXPECT_FALSE(entity_->HasPendingCommit()); 144 EXPECT_FALSE(entity_->HasPendingCommit());
135 entity_->RequestCommit( 145 entity_->RequestCommit(
136 MakeCommitRequestData(23, 5 /* base_version 5 < 10 */)); 146 MakeCommitRequestData(23, 5 /* base_version 5 < 10 */));
137 EXPECT_FALSE(entity_->HasPendingCommit()); 147 EXPECT_FALSE(entity_->HasPendingCommit());
138 } 148 }
139 149
140 // Start with a pending commit. Clobber it with an incoming update. 150 // Start with a pending commit. Clobber it with an incoming update.
141 TEST_F(WorkerEntityTrackerTest, UpdateClobbersCommit) { 151 TEST_F(WorkerEntityTrackerTest, UpdateClobbersCommit) {
142 CommitRequestData data = MakeCommitRequestData(22, 33); 152 CommitRequestData data = MakeCommitRequestData(22, 33);
143 entity_->RequestCommit(data); 153 entity_->RequestCommit(data);
144 154
145 EXPECT_TRUE(entity_->HasPendingCommit()); 155 EXPECT_TRUE(entity_->HasPendingCommit());
146 156
147 entity_->ReceiveUpdate(400); // Version 400 > 33. 157 entity_->ReceiveUpdate(MakeUpdateResponseData(400)); // Version 400 > 33.
148 EXPECT_FALSE(entity_->HasPendingCommit()); 158 EXPECT_FALSE(entity_->HasPendingCommit());
149 } 159 }
150 160
151 // Start with a pending commit. Send it a reflected update that 161 // Start with a pending commit. Send it a reflected update that
152 // will not override the in-progress commit. 162 // will not override the in-progress commit.
153 TEST_F(WorkerEntityTrackerTest, ReflectedUpdateDoesntClobberCommit) { 163 TEST_F(WorkerEntityTrackerTest, ReflectedUpdateDoesntClobberCommit) {
154 CommitRequestData data = MakeCommitRequestData(22, 33); 164 CommitRequestData data = MakeCommitRequestData(22, 33);
155 entity_->RequestCommit(data); 165 entity_->RequestCommit(data);
156 166
157 EXPECT_TRUE(entity_->HasPendingCommit()); 167 EXPECT_TRUE(entity_->HasPendingCommit());
158 168
159 entity_->ReceiveUpdate(33); // Version 33 == 33. 169 entity_->ReceiveUpdate(MakeUpdateResponseData(33)); // Version 33 == 33.
160 EXPECT_TRUE(entity_->HasPendingCommit()); 170 EXPECT_TRUE(entity_->HasPendingCommit());
161 } 171 }
162 172
163 } // namespace syncer_v2 173 } // namespace syncer_v2
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698