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

Side by Side Diff: components/sync_driver/device_info_service_unittest.cc

Issue 1907683003: Convert //components/sync_driver from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Build fix, address feedback Created 4 years, 8 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #include "components/sync_driver/device_info_service.h" 5 #include "components/sync_driver/device_info_service.h"
6 6
7 #include <map> 7 #include <map>
8 #include <memory>
8 #include <set> 9 #include <set>
9 #include <string> 10 #include <string>
10 #include <utility> 11 #include <utility>
11 12
12 #include "base/bind.h" 13 #include "base/bind.h"
13 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/ptr_util.h"
14 #include "base/message_loop/message_loop.h" 15 #include "base/message_loop/message_loop.h"
15 #include "base/run_loop.h" 16 #include "base/run_loop.h"
16 #include "base/strings/stringprintf.h" 17 #include "base/strings/stringprintf.h"
17 #include "components/sync_driver/local_device_info_provider_mock.h" 18 #include "components/sync_driver/local_device_info_provider_mock.h"
18 #include "sync/api/data_batch.h" 19 #include "sync/api/data_batch.h"
19 #include "sync/api/entity_data.h" 20 #include "sync/api/entity_data.h"
20 #include "sync/api/fake_model_type_change_processor.h" 21 #include "sync/api/fake_model_type_change_processor.h"
21 #include "sync/api/metadata_batch.h" 22 #include "sync/api/metadata_batch.h"
22 #include "sync/api/model_type_store.h" 23 #include "sync/api/model_type_store.h"
23 #include "sync/internal_api/public/test/model_type_store_test_util.h" 24 #include "sync/internal_api/public/test/model_type_store_test_util.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 const DeviceInfo& model) { 73 const DeviceInfo& model) {
73 ASSERT_EQ(specifics.cache_guid(), model.guid()); 74 ASSERT_EQ(specifics.cache_guid(), model.guid());
74 ASSERT_EQ(specifics.client_name(), model.client_name()); 75 ASSERT_EQ(specifics.client_name(), model.client_name());
75 ASSERT_EQ(specifics.device_type(), model.device_type()); 76 ASSERT_EQ(specifics.device_type(), model.device_type());
76 ASSERT_EQ(specifics.sync_user_agent(), model.sync_user_agent()); 77 ASSERT_EQ(specifics.sync_user_agent(), model.sync_user_agent());
77 ASSERT_EQ(specifics.chrome_version(), model.chrome_version()); 78 ASSERT_EQ(specifics.chrome_version(), model.chrome_version());
78 ASSERT_EQ(specifics.signin_scoped_device_id(), 79 ASSERT_EQ(specifics.signin_scoped_device_id(),
79 model.signin_scoped_device_id()); 80 model.signin_scoped_device_id());
80 } 81 }
81 82
82 void AssertErrorFromDataBatch(SyncError error, scoped_ptr<DataBatch> batch) { 83 void AssertErrorFromDataBatch(SyncError error,
84 std::unique_ptr<DataBatch> batch) {
83 ASSERT_TRUE(error.IsSet()); 85 ASSERT_TRUE(error.IsSet());
84 } 86 }
85 87
86 void AssertExpectedFromDataBatch( 88 void AssertExpectedFromDataBatch(
87 std::map<std::string, DeviceInfoSpecifics> expected, 89 std::map<std::string, DeviceInfoSpecifics> expected,
88 SyncError error, 90 SyncError error,
89 scoped_ptr<DataBatch> batch) { 91 std::unique_ptr<DataBatch> batch) {
90 ASSERT_FALSE(error.IsSet()); 92 ASSERT_FALSE(error.IsSet());
91 while (batch->HasNext()) { 93 while (batch->HasNext()) {
92 const TagAndData& pair = batch->Next(); 94 const TagAndData& pair = batch->Next();
93 std::map<std::string, DeviceInfoSpecifics>::iterator iter = 95 std::map<std::string, DeviceInfoSpecifics>::iterator iter =
94 expected.find(pair.first); 96 expected.find(pair.first);
95 ASSERT_NE(iter, expected.end()); 97 ASSERT_NE(iter, expected.end());
96 AssertEqual(iter->second, pair.second->specifics.device_info()); 98 AssertEqual(iter->second, pair.second->specifics.device_info());
97 // Removing allows us to verify we don't see the same item multiple times, 99 // Removing allows us to verify we don't see the same item multiple times,
98 // and that we saw everything we expected. 100 // and that we saw everything we expected.
99 expected.erase(iter); 101 expected.erase(iter);
(...skipping 21 matching lines...) Expand all
121 // in members that can then be accessed. TODO(skym): If this ends up being 123 // in members that can then be accessed. TODO(skym): If this ends up being
122 // useful for other model type unittests it should be moved out to a shared 124 // useful for other model type unittests it should be moved out to a shared
123 // location. 125 // location.
124 class RecordingModelTypeChangeProcessor 126 class RecordingModelTypeChangeProcessor
125 : public syncer_v2::FakeModelTypeChangeProcessor { 127 : public syncer_v2::FakeModelTypeChangeProcessor {
126 public: 128 public:
127 RecordingModelTypeChangeProcessor() {} 129 RecordingModelTypeChangeProcessor() {}
128 ~RecordingModelTypeChangeProcessor() override {} 130 ~RecordingModelTypeChangeProcessor() override {}
129 131
130 void Put(const std::string& client_tag, 132 void Put(const std::string& client_tag,
131 scoped_ptr<EntityData> entity_data, 133 std::unique_ptr<EntityData> entity_data,
132 MetadataChangeList* metadata_changes) override { 134 MetadataChangeList* metadata_changes) override {
133 put_map_.insert(std::make_pair(client_tag, std::move(entity_data))); 135 put_map_.insert(std::make_pair(client_tag, std::move(entity_data)));
134 } 136 }
135 137
136 void Delete(const std::string& client_tag, 138 void Delete(const std::string& client_tag,
137 MetadataChangeList* metadata_changes) override { 139 MetadataChangeList* metadata_changes) override {
138 delete_set_.insert(client_tag); 140 delete_set_.insert(client_tag);
139 } 141 }
140 142
141 void OnMetadataLoaded(scoped_ptr<MetadataBatch> batch) override { 143 void OnMetadataLoaded(std::unique_ptr<MetadataBatch> batch) override {
142 std::swap(metadata_, batch); 144 std::swap(metadata_, batch);
143 } 145 }
144 146
145 const std::map<std::string, scoped_ptr<EntityData>>& put_map() const { 147 const std::map<std::string, std::unique_ptr<EntityData>>& put_map() const {
146 return put_map_; 148 return put_map_;
147 } 149 }
148 const std::set<std::string>& delete_set() const { return delete_set_; } 150 const std::set<std::string>& delete_set() const { return delete_set_; }
149 const MetadataBatch* metadata() const { return metadata_.get(); } 151 const MetadataBatch* metadata() const { return metadata_.get(); }
150 152
151 private: 153 private:
152 std::map<std::string, scoped_ptr<EntityData>> put_map_; 154 std::map<std::string, std::unique_ptr<EntityData>> put_map_;
153 std::set<std::string> delete_set_; 155 std::set<std::string> delete_set_;
154 scoped_ptr<MetadataBatch> metadata_; 156 std::unique_ptr<MetadataBatch> metadata_;
155 }; 157 };
156 158
157 } // namespace 159 } // namespace
158 160
159 class DeviceInfoServiceTest : public testing::Test, 161 class DeviceInfoServiceTest : public testing::Test,
160 public DeviceInfoTracker::Observer { 162 public DeviceInfoTracker::Observer {
161 protected: 163 protected:
162 DeviceInfoServiceTest() 164 DeviceInfoServiceTest()
163 : change_count_(0), 165 : change_count_(0),
164 store_(ModelTypeStoreTestUtil::CreateInMemoryStoreForTest()), 166 store_(ModelTypeStoreTestUtil::CreateInMemoryStoreForTest()),
165 local_device_(new LocalDeviceInfoProviderMock( 167 local_device_(new LocalDeviceInfoProviderMock(
166 "guid_1", 168 "guid_1",
167 "client_1", 169 "client_1",
168 "Chromium 10k", 170 "Chromium 10k",
169 "Chrome 10k", 171 "Chrome 10k",
170 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, 172 sync_pb::SyncEnums_DeviceType_TYPE_LINUX,
171 "device_id")) {} 173 "device_id")) {}
172 174
173 ~DeviceInfoServiceTest() override { 175 ~DeviceInfoServiceTest() override {
174 // Some tests may never initialize the service. 176 // Some tests may never initialize the service.
175 if (service_) 177 if (service_)
176 service_->RemoveObserver(this); 178 service_->RemoveObserver(this);
177 179
178 // Force all remaining (store) tasks to execute so we don't leak memory. 180 // Force all remaining (store) tasks to execute so we don't leak memory.
179 base::RunLoop().RunUntilIdle(); 181 base::RunLoop().RunUntilIdle();
180 } 182 }
181 183
182 void OnDeviceInfoChange() override { change_count_++; } 184 void OnDeviceInfoChange() override { change_count_++; }
183 185
184 scoped_ptr<ModelTypeChangeProcessor> CreateModelTypeChangeProcessor( 186 std::unique_ptr<ModelTypeChangeProcessor> CreateModelTypeChangeProcessor(
185 syncer::ModelType type, 187 syncer::ModelType type,
186 ModelTypeService* service) { 188 ModelTypeService* service) {
187 processor_ = new RecordingModelTypeChangeProcessor(); 189 processor_ = new RecordingModelTypeChangeProcessor();
188 return make_scoped_ptr(processor_); 190 return base::WrapUnique(processor_);
189 } 191 }
190 192
191 // Initialized the service based on the current local device and store. Can 193 // Initialized the service based on the current local device and store. Can
192 // only be called once per run, as it passes |store_|. 194 // only be called once per run, as it passes |store_|.
193 void InitializeService() { 195 void InitializeService() {
194 ASSERT_TRUE(store_); 196 ASSERT_TRUE(store_);
195 service_.reset(new DeviceInfoService( 197 service_.reset(new DeviceInfoService(
196 local_device_.get(), 198 local_device_.get(),
197 base::Bind(&ModelTypeStoreTestUtil::MoveStoreToCallback, 199 base::Bind(&ModelTypeStoreTestUtil::MoveStoreToCallback,
198 base::Passed(&store_)), 200 base::Passed(&store_)),
(...skipping 28 matching lines...) Expand all
227 specifics.set_device_type(sync_pb::SyncEnums_DeviceType_TYPE_LINUX); 229 specifics.set_device_type(sync_pb::SyncEnums_DeviceType_TYPE_LINUX);
228 specifics.set_sync_user_agent( 230 specifics.set_sync_user_agent(
229 base::StringPrintf("sync user agent %d", label)); 231 base::StringPrintf("sync user agent %d", label));
230 specifics.set_chrome_version( 232 specifics.set_chrome_version(
231 base::StringPrintf("chrome version %d", label)); 233 base::StringPrintf("chrome version %d", label));
232 specifics.set_signin_scoped_device_id( 234 specifics.set_signin_scoped_device_id(
233 base::StringPrintf("signin scoped device id %d", label)); 235 base::StringPrintf("signin scoped device id %d", label));
234 return specifics; 236 return specifics;
235 } 237 }
236 238
237 scoped_ptr<DeviceInfoSpecifics> CopyToSpecifics(const DeviceInfo& info) { 239 std::unique_ptr<DeviceInfoSpecifics> CopyToSpecifics(const DeviceInfo& info) {
238 return DeviceInfoService::CopyToSpecifics(info); 240 return DeviceInfoService::CopyToSpecifics(info);
239 } 241 }
240 242
241 // Override to allow specific cache guids. 243 // Override to allow specific cache guids.
242 DeviceInfoSpecifics GenerateTestSpecifics(const std::string& guid) { 244 DeviceInfoSpecifics GenerateTestSpecifics(const std::string& guid) {
243 DeviceInfoSpecifics specifics(GenerateTestSpecifics()); 245 DeviceInfoSpecifics specifics(GenerateTestSpecifics());
244 specifics.set_cache_guid(guid); 246 specifics.set_cache_guid(guid);
245 return specifics; 247 return specifics;
246 } 248 }
247 249
(...skipping 14 matching lines...) Expand all
262 // initialize the service. 264 // initialize the service.
263 ModelTypeStore* store() { 265 ModelTypeStore* store() {
264 EXPECT_TRUE(store_); 266 EXPECT_TRUE(store_);
265 return store_.get(); 267 return store_.get();
266 } 268 }
267 269
268 // Get the number of times the service notifies observers of changes. 270 // Get the number of times the service notifies observers of changes.
269 int change_count() { return change_count_; } 271 int change_count() { return change_count_; }
270 272
271 // Allows overriding the provider before the service is initialized. 273 // Allows overriding the provider before the service is initialized.
272 void set_local_device(scoped_ptr<LocalDeviceInfoProviderMock> provider) { 274 void set_local_device(std::unique_ptr<LocalDeviceInfoProviderMock> provider) {
273 ASSERT_FALSE(service_); 275 ASSERT_FALSE(service_);
274 std::swap(local_device_, provider); 276 std::swap(local_device_, provider);
275 } 277 }
276 LocalDeviceInfoProviderMock* local_device() { return local_device_.get(); } 278 LocalDeviceInfoProviderMock* local_device() { return local_device_.get(); }
277 279
278 // Allows access to the service after InitializeService() is called. 280 // Allows access to the service after InitializeService() is called.
279 DeviceInfoService* service() { 281 DeviceInfoService* service() {
280 EXPECT_TRUE(service_); 282 EXPECT_TRUE(service_);
281 return service_.get(); 283 return service_.get();
282 } 284 }
(...skipping 17 matching lines...) Expand all
300 private: 302 private:
301 int change_count_; 303 int change_count_;
302 304
303 // Although we never use this in this class, the in memory model type store 305 // Although we never use this in this class, the in memory model type store
304 // grabs the current task runner from a static accessor which point at this 306 // grabs the current task runner from a static accessor which point at this
305 // message loop. Must be declared/initilized before we call the synchronous 307 // message loop. Must be declared/initilized before we call the synchronous
306 // CreateInMemoryStoreForTest. 308 // CreateInMemoryStoreForTest.
307 base::MessageLoop message_loop_; 309 base::MessageLoop message_loop_;
308 310
309 // Holds the store while the service is not initialized. 311 // Holds the store while the service is not initialized.
310 scoped_ptr<ModelTypeStore> store_; 312 std::unique_ptr<ModelTypeStore> store_;
311 313
312 scoped_ptr<LocalDeviceInfoProviderMock> local_device_; 314 std::unique_ptr<LocalDeviceInfoProviderMock> local_device_;
313 315
314 // Not initialized immediately (upon test's constructor). This allows each 316 // Not initialized immediately (upon test's constructor). This allows each
315 // test case to modify the dependencies the service will be constructed with. 317 // test case to modify the dependencies the service will be constructed with.
316 scoped_ptr<DeviceInfoService> service_; 318 std::unique_ptr<DeviceInfoService> service_;
317 319
318 // A non-owning pointer to the processor given to the service. Will be nullptr 320 // A non-owning pointer to the processor given to the service. Will be nullptr
319 // before being given to the service, to make ownership easier. 321 // before being given to the service, to make ownership easier.
320 RecordingModelTypeChangeProcessor* processor_ = nullptr; 322 RecordingModelTypeChangeProcessor* processor_ = nullptr;
321 323
322 // A monotonically increasing label for generated specifics objects with data 324 // A monotonically increasing label for generated specifics objects with data
323 // that is slightly different from eachother. 325 // that is slightly different from eachother.
324 int generated_count_ = 0; 326 int generated_count_ = 0;
325 }; 327 };
326 328
(...skipping 14 matching lines...) Expand all
341 service()->OnSyncStarting(StartCallback()); 343 service()->OnSyncStarting(StartCallback());
342 ASSERT_EQ(0u, service()->GetAllDeviceInfo().size()); 344 ASSERT_EQ(0u, service()->GetAllDeviceInfo().size());
343 base::RunLoop().RunUntilIdle(); 345 base::RunLoop().RunUntilIdle();
344 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); 346 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo());
345 ASSERT_EQ(1u, all_device_info.size()); 347 ASSERT_EQ(1u, all_device_info.size());
346 ASSERT_TRUE( 348 ASSERT_TRUE(
347 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); 349 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
348 } 350 }
349 351
350 TEST_F(DeviceInfoServiceTest, LocalProviderSubscription) { 352 TEST_F(DeviceInfoServiceTest, LocalProviderSubscription) {
351 set_local_device(make_scoped_ptr(new LocalDeviceInfoProviderMock())); 353 set_local_device(base::WrapUnique(new LocalDeviceInfoProviderMock()));
352 InitializeAndPumpAndStart(); 354 InitializeAndPumpAndStart();
353 ASSERT_EQ(0u, service()->GetAllDeviceInfo().size()); 355 ASSERT_EQ(0u, service()->GetAllDeviceInfo().size());
354 local_device()->Initialize(make_scoped_ptr( 356 local_device()->Initialize(base::WrapUnique(
355 new DeviceInfo("guid_1", "client_1", "Chromium 10k", "Chrome 10k", 357 new DeviceInfo("guid_1", "client_1", "Chromium 10k", "Chrome 10k",
356 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, "device_id"))); 358 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, "device_id")));
357 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); 359 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo());
358 ASSERT_EQ(1u, all_device_info.size()); 360 ASSERT_EQ(1u, all_device_info.size());
359 ASSERT_TRUE( 361 ASSERT_TRUE(
360 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); 362 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
361 } 363 }
362 364
363 TEST_F(DeviceInfoServiceTest, GetClientTagNormal) { 365 TEST_F(DeviceInfoServiceTest, GetClientTagNormal) {
364 InitializeService(); 366 InitializeService();
365 const std::string guid = "abc"; 367 const std::string guid = "abc";
366 EntitySpecifics entity_specifics; 368 EntitySpecifics entity_specifics;
367 entity_specifics.mutable_device_info()->set_cache_guid(guid); 369 entity_specifics.mutable_device_info()->set_cache_guid(guid);
368 EntityData entity_data; 370 EntityData entity_data;
369 entity_data.specifics = entity_specifics; 371 entity_data.specifics = entity_specifics;
370 EXPECT_EQ(CacheGuidToTag(guid), service()->GetClientTag(entity_data)); 372 EXPECT_EQ(CacheGuidToTag(guid), service()->GetClientTag(entity_data));
371 } 373 }
372 374
373 TEST_F(DeviceInfoServiceTest, GetClientTagEmpty) { 375 TEST_F(DeviceInfoServiceTest, GetClientTagEmpty) {
374 InitializeService(); 376 InitializeService();
375 EntitySpecifics entity_specifics; 377 EntitySpecifics entity_specifics;
376 entity_specifics.mutable_device_info(); 378 entity_specifics.mutable_device_info();
377 EntityData entity_data; 379 EntityData entity_data;
378 entity_data.specifics = entity_specifics; 380 entity_data.specifics = entity_specifics;
379 EXPECT_EQ(CacheGuidToTag(""), service()->GetClientTag(entity_data)); 381 EXPECT_EQ(CacheGuidToTag(""), service()->GetClientTag(entity_data));
380 } 382 }
381 383
382 TEST_F(DeviceInfoServiceTest, TestWithLocalData) { 384 TEST_F(DeviceInfoServiceTest, TestWithLocalData) {
383 scoped_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 385 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
384 DeviceInfoSpecifics specifics(GenerateTestSpecifics()); 386 DeviceInfoSpecifics specifics(GenerateTestSpecifics());
385 store()->WriteData(batch.get(), specifics.cache_guid(), 387 store()->WriteData(batch.get(), specifics.cache_guid(),
386 specifics.SerializeAsString()); 388 specifics.SerializeAsString());
387 store()->CommitWriteBatch(std::move(batch), 389 store()->CommitWriteBatch(std::move(batch),
388 base::Bind(&AssertResultIsSuccess)); 390 base::Bind(&AssertResultIsSuccess));
389 391
390 InitializeAndPump(); 392 InitializeAndPump();
391 393
392 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); 394 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo());
393 ASSERT_EQ(1u, all_device_info.size()); 395 ASSERT_EQ(1u, all_device_info.size());
394 AssertEqual(specifics, *all_device_info[0]); 396 AssertEqual(specifics, *all_device_info[0]);
395 AssertEqual(specifics, 397 AssertEqual(specifics,
396 *service()->GetDeviceInfo(specifics.cache_guid()).get()); 398 *service()->GetDeviceInfo(specifics.cache_guid()).get());
397 } 399 }
398 400
399 TEST_F(DeviceInfoServiceTest, TestWithLocalMetadata) { 401 TEST_F(DeviceInfoServiceTest, TestWithLocalMetadata) {
400 scoped_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 402 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
401 DataTypeState state; 403 DataTypeState state;
402 state.set_encryption_key_name("ekn"); 404 state.set_encryption_key_name("ekn");
403 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString()); 405 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString());
404 store()->CommitWriteBatch(std::move(batch), 406 store()->CommitWriteBatch(std::move(batch),
405 base::Bind(&AssertResultIsSuccess)); 407 base::Bind(&AssertResultIsSuccess));
406 InitializeAndPump(); 408 InitializeAndPump();
407 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); 409 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo());
408 ASSERT_EQ(1u, all_device_info.size()); 410 ASSERT_EQ(1u, all_device_info.size());
409 ASSERT_TRUE( 411 ASSERT_TRUE(
410 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); 412 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
411 EXPECT_EQ(1u, processor()->put_map().size()); 413 EXPECT_EQ(1u, processor()->put_map().size());
412 } 414 }
413 415
414 TEST_F(DeviceInfoServiceTest, TestWithLocalDataAndMetadata) { 416 TEST_F(DeviceInfoServiceTest, TestWithLocalDataAndMetadata) {
415 scoped_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 417 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
416 DeviceInfoSpecifics specifics(GenerateTestSpecifics()); 418 DeviceInfoSpecifics specifics(GenerateTestSpecifics());
417 store()->WriteData(batch.get(), specifics.cache_guid(), 419 store()->WriteData(batch.get(), specifics.cache_guid(),
418 specifics.SerializeAsString()); 420 specifics.SerializeAsString());
419 DataTypeState state; 421 DataTypeState state;
420 state.set_encryption_key_name("ekn"); 422 state.set_encryption_key_name("ekn");
421 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString()); 423 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString());
422 store()->CommitWriteBatch(std::move(batch), 424 store()->CommitWriteBatch(std::move(batch),
423 base::Bind(&AssertResultIsSuccess)); 425 base::Bind(&AssertResultIsSuccess));
424 426
425 InitializeAndPump(); 427 InitializeAndPump();
426 428
427 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); 429 ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo());
428 ASSERT_EQ(2u, all_device_info.size()); 430 ASSERT_EQ(2u, all_device_info.size());
429 AssertEqual(specifics, 431 AssertEqual(specifics,
430 *service()->GetDeviceInfo(specifics.cache_guid()).get()); 432 *service()->GetDeviceInfo(specifics.cache_guid()).get());
431 ASSERT_TRUE(processor()->metadata()); 433 ASSERT_TRUE(processor()->metadata());
432 ASSERT_EQ(state.encryption_key_name(), 434 ASSERT_EQ(state.encryption_key_name(),
433 processor()->metadata()->GetDataTypeState().encryption_key_name()); 435 processor()->metadata()->GetDataTypeState().encryption_key_name());
434 } 436 }
435 437
436 TEST_F(DeviceInfoServiceTest, GetData) { 438 TEST_F(DeviceInfoServiceTest, GetData) {
437 scoped_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 439 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
438 DeviceInfoSpecifics specifics1(GenerateTestSpecifics()); 440 DeviceInfoSpecifics specifics1(GenerateTestSpecifics());
439 DeviceInfoSpecifics specifics2(GenerateTestSpecifics()); 441 DeviceInfoSpecifics specifics2(GenerateTestSpecifics());
440 DeviceInfoSpecifics specifics3(GenerateTestSpecifics()); 442 DeviceInfoSpecifics specifics3(GenerateTestSpecifics());
441 store()->WriteData(batch.get(), specifics1.cache_guid(), 443 store()->WriteData(batch.get(), specifics1.cache_guid(),
442 specifics1.SerializeAsString()); 444 specifics1.SerializeAsString());
443 store()->WriteData(batch.get(), specifics2.cache_guid(), 445 store()->WriteData(batch.get(), specifics2.cache_guid(),
444 specifics2.SerializeAsString()); 446 specifics2.SerializeAsString());
445 store()->WriteData(batch.get(), specifics3.cache_guid(), 447 store()->WriteData(batch.get(), specifics3.cache_guid(),
446 specifics3.SerializeAsString()); 448 specifics3.SerializeAsString());
447 store()->CommitWriteBatch(std::move(batch), 449 store()->CommitWriteBatch(std::move(batch),
(...skipping 20 matching lines...) Expand all
468 base::Bind(&AssertExpectedFromDataBatch, expected)); 470 base::Bind(&AssertExpectedFromDataBatch, expected));
469 } 471 }
470 472
471 TEST_F(DeviceInfoServiceTest, GetDataNotInitialized) { 473 TEST_F(DeviceInfoServiceTest, GetDataNotInitialized) {
472 InitializeService(); 474 InitializeService();
473 ClientTagList client_tags; 475 ClientTagList client_tags;
474 service()->GetData(client_tags, base::Bind(&AssertErrorFromDataBatch)); 476 service()->GetData(client_tags, base::Bind(&AssertErrorFromDataBatch));
475 } 477 }
476 478
477 TEST_F(DeviceInfoServiceTest, GetAllData) { 479 TEST_F(DeviceInfoServiceTest, GetAllData) {
478 scoped_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 480 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
479 DeviceInfoSpecifics specifics1(GenerateTestSpecifics()); 481 DeviceInfoSpecifics specifics1(GenerateTestSpecifics());
480 DeviceInfoSpecifics specifics2(GenerateTestSpecifics()); 482 DeviceInfoSpecifics specifics2(GenerateTestSpecifics());
481 const std::string& tag1 = CacheGuidToTag(specifics1.cache_guid()); 483 const std::string& tag1 = CacheGuidToTag(specifics1.cache_guid());
482 const std::string& tag2 = CacheGuidToTag(specifics2.cache_guid()); 484 const std::string& tag2 = CacheGuidToTag(specifics2.cache_guid());
483 store()->WriteData(batch.get(), specifics1.cache_guid(), 485 store()->WriteData(batch.get(), specifics1.cache_guid(),
484 specifics1.SerializeAsString()); 486 specifics1.SerializeAsString());
485 store()->WriteData(batch.get(), specifics2.cache_guid(), 487 store()->WriteData(batch.get(), specifics2.cache_guid(),
486 specifics2.SerializeAsString()); 488 specifics2.SerializeAsString());
487 store()->CommitWriteBatch(std::move(batch), 489 store()->CommitWriteBatch(std::move(batch),
488 base::Bind(&AssertResultIsSuccess)); 490 base::Bind(&AssertResultIsSuccess));
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 TEST_F(DeviceInfoServiceTest, ApplySyncChangesInMemory) { 525 TEST_F(DeviceInfoServiceTest, ApplySyncChangesInMemory) {
524 InitializeAndPump(); 526 InitializeAndPump();
525 527
526 DeviceInfoSpecifics specifics = GenerateTestSpecifics(); 528 DeviceInfoSpecifics specifics = GenerateTestSpecifics();
527 EntityChangeList add_changes; 529 EntityChangeList add_changes;
528 const std::string tag = PushBackEntityChangeAdd(specifics, &add_changes); 530 const std::string tag = PushBackEntityChangeAdd(specifics, &add_changes);
529 SyncError error = service()->ApplySyncChanges( 531 SyncError error = service()->ApplySyncChanges(
530 service()->CreateMetadataChangeList(), add_changes); 532 service()->CreateMetadataChangeList(), add_changes);
531 533
532 EXPECT_FALSE(error.IsSet()); 534 EXPECT_FALSE(error.IsSet());
533 scoped_ptr<DeviceInfo> info = 535 std::unique_ptr<DeviceInfo> info =
534 service()->GetDeviceInfo(specifics.cache_guid()); 536 service()->GetDeviceInfo(specifics.cache_guid());
535 ASSERT_TRUE(info); 537 ASSERT_TRUE(info);
536 AssertEqual(specifics, *info.get()); 538 AssertEqual(specifics, *info.get());
537 EXPECT_EQ(1, change_count()); 539 EXPECT_EQ(1, change_count());
538 540
539 EntityChangeList delete_changes; 541 EntityChangeList delete_changes;
540 delete_changes.push_back(EntityChange::CreateDelete(tag)); 542 delete_changes.push_back(EntityChange::CreateDelete(tag));
541 error = service()->ApplySyncChanges(service()->CreateMetadataChangeList(), 543 error = service()->ApplySyncChanges(service()->CreateMetadataChangeList(),
542 delete_changes); 544 delete_changes);
543 545
544 EXPECT_FALSE(error.IsSet()); 546 EXPECT_FALSE(error.IsSet());
545 EXPECT_FALSE(service()->GetDeviceInfo(specifics.cache_guid())); 547 EXPECT_FALSE(service()->GetDeviceInfo(specifics.cache_guid()));
546 EXPECT_EQ(2, change_count()); 548 EXPECT_EQ(2, change_count());
547 } 549 }
548 550
549 TEST_F(DeviceInfoServiceTest, ApplySyncChangesStore) { 551 TEST_F(DeviceInfoServiceTest, ApplySyncChangesStore) {
550 InitializeAndPump(); 552 InitializeAndPump();
551 553
552 DeviceInfoSpecifics specifics = GenerateTestSpecifics(); 554 DeviceInfoSpecifics specifics = GenerateTestSpecifics();
553 EntityChangeList data_changes; 555 EntityChangeList data_changes;
554 const std::string tag = PushBackEntityChangeAdd(specifics, &data_changes); 556 const std::string tag = PushBackEntityChangeAdd(specifics, &data_changes);
555 DataTypeState state; 557 DataTypeState state;
556 state.set_encryption_key_name("ekn"); 558 state.set_encryption_key_name("ekn");
557 scoped_ptr<MetadataChangeList> metadata_changes( 559 std::unique_ptr<MetadataChangeList> metadata_changes(
558 service()->CreateMetadataChangeList()); 560 service()->CreateMetadataChangeList());
559 metadata_changes->UpdateDataTypeState(state); 561 metadata_changes->UpdateDataTypeState(state);
560 562
561 const SyncError error = 563 const SyncError error =
562 service()->ApplySyncChanges(std::move(metadata_changes), data_changes); 564 service()->ApplySyncChanges(std::move(metadata_changes), data_changes);
563 EXPECT_FALSE(error.IsSet()); 565 EXPECT_FALSE(error.IsSet());
564 EXPECT_EQ(1, change_count()); 566 EXPECT_EQ(1, change_count());
565 567
566 PumpAndShutdown(); 568 PumpAndShutdown();
567 InitializeAndPump(); 569 InitializeAndPump();
568 570
569 scoped_ptr<DeviceInfo> info = 571 std::unique_ptr<DeviceInfo> info =
570 service()->GetDeviceInfo(specifics.cache_guid()); 572 service()->GetDeviceInfo(specifics.cache_guid());
571 ASSERT_TRUE(info); 573 ASSERT_TRUE(info);
572 AssertEqual(specifics, *info.get()); 574 AssertEqual(specifics, *info.get());
573 // TODO(skym): Uncomment once SimpleMetadataChangeList::TransferChanges is 575 // TODO(skym): Uncomment once SimpleMetadataChangeList::TransferChanges is
574 // implemented. 576 // implemented.
575 // EXPECT_TRUE(processor()->metadata()); 577 // EXPECT_TRUE(processor()->metadata());
576 // EXPECT_EQ(state.encryption_key_name(), 578 // EXPECT_EQ(state.encryption_key_name(),
577 // processor()->metadata()->GetDataTypeState().encryption_key_name()); 579 // processor()->metadata()->GetDataTypeState().encryption_key_name());
578 } 580 }
579 581
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 EXPECT_EQ(1u, processor()->put_map().size()); 639 EXPECT_EQ(1u, processor()->put_map().size());
638 EXPECT_EQ(0u, processor()->delete_set().size()); 640 EXPECT_EQ(0u, processor()->delete_set().size());
639 } 641 }
640 642
641 TEST_F(DeviceInfoServiceTest, MergeWithData) { 643 TEST_F(DeviceInfoServiceTest, MergeWithData) {
642 const DeviceInfoSpecifics unique_local(GenerateTestSpecifics("unique_local")); 644 const DeviceInfoSpecifics unique_local(GenerateTestSpecifics("unique_local"));
643 const DeviceInfoSpecifics conflict_local(GenerateTestSpecifics("conflict")); 645 const DeviceInfoSpecifics conflict_local(GenerateTestSpecifics("conflict"));
644 DeviceInfoSpecifics conflict_remote(GenerateTestSpecifics("conflict")); 646 DeviceInfoSpecifics conflict_remote(GenerateTestSpecifics("conflict"));
645 DeviceInfoSpecifics unique_remote(GenerateTestSpecifics("unique_remote")); 647 DeviceInfoSpecifics unique_remote(GenerateTestSpecifics("unique_remote"));
646 648
647 scoped_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 649 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
648 store()->WriteData(batch.get(), unique_local.cache_guid(), 650 store()->WriteData(batch.get(), unique_local.cache_guid(),
649 unique_local.SerializeAsString()); 651 unique_local.SerializeAsString());
650 store()->WriteData(batch.get(), conflict_local.cache_guid(), 652 store()->WriteData(batch.get(), conflict_local.cache_guid(),
651 conflict_local.SerializeAsString()); 653 conflict_local.SerializeAsString());
652 store()->CommitWriteBatch(std::move(batch), 654 store()->CommitWriteBatch(std::move(batch),
653 base::Bind(&AssertResultIsSuccess)); 655 base::Bind(&AssertResultIsSuccess));
654 656
655 InitializeAndPumpAndStart(); 657 InitializeAndPumpAndStart();
656 EXPECT_EQ(1, change_count()); 658 EXPECT_EQ(1, change_count());
657 659
658 EntityDataMap remote_input; 660 EntityDataMap remote_input;
659 remote_input[CacheGuidToTag(conflict_remote.cache_guid())] = 661 remote_input[CacheGuidToTag(conflict_remote.cache_guid())] =
660 SpecificsToEntity(conflict_remote); 662 SpecificsToEntity(conflict_remote);
661 remote_input[CacheGuidToTag(unique_remote.cache_guid())] = 663 remote_input[CacheGuidToTag(unique_remote.cache_guid())] =
662 SpecificsToEntity(unique_remote); 664 SpecificsToEntity(unique_remote);
663 665
664 DataTypeState state; 666 DataTypeState state;
665 state.set_encryption_key_name("ekn"); 667 state.set_encryption_key_name("ekn");
666 scoped_ptr<MetadataChangeList> metadata_changes( 668 std::unique_ptr<MetadataChangeList> metadata_changes(
667 service()->CreateMetadataChangeList()); 669 service()->CreateMetadataChangeList());
668 metadata_changes->UpdateDataTypeState(state); 670 metadata_changes->UpdateDataTypeState(state);
669 671
670 const SyncError error = 672 const SyncError error =
671 service()->MergeSyncData(std::move(metadata_changes), remote_input); 673 service()->MergeSyncData(std::move(metadata_changes), remote_input);
672 EXPECT_FALSE(error.IsSet()); 674 EXPECT_FALSE(error.IsSet());
673 EXPECT_EQ(2, change_count()); 675 EXPECT_EQ(2, change_count());
674 676
675 // The remote should beat the local in conflict. 677 // The remote should beat the local in conflict.
676 EXPECT_EQ(4u, service()->GetAllDeviceInfo().size()); 678 EXPECT_EQ(4u, service()->GetAllDeviceInfo().size());
677 AssertEqual(unique_local, *service()->GetDeviceInfo("unique_local").get()); 679 AssertEqual(unique_local, *service()->GetDeviceInfo("unique_local").get());
678 AssertEqual(unique_remote, *service()->GetDeviceInfo("unique_remote").get()); 680 AssertEqual(unique_remote, *service()->GetDeviceInfo("unique_remote").get());
679 AssertEqual(conflict_remote, *service()->GetDeviceInfo("conflict").get()); 681 AssertEqual(conflict_remote, *service()->GetDeviceInfo("conflict").get());
680 682
681 // Service should have told the processor about the existance of unique_local. 683 // Service should have told the processor about the existance of unique_local.
682 EXPECT_TRUE(processor()->delete_set().empty()); 684 EXPECT_TRUE(processor()->delete_set().empty());
683 EXPECT_EQ(2u, processor()->put_map().size()); 685 EXPECT_EQ(2u, processor()->put_map().size());
684 const auto& it = processor()->put_map().find(CacheGuidToTag("unique_local")); 686 const auto& it = processor()->put_map().find(CacheGuidToTag("unique_local"));
685 ASSERT_NE(processor()->put_map().end(), it); 687 ASSERT_NE(processor()->put_map().end(), it);
686 AssertEqual(unique_local, it->second->specifics.device_info()); 688 AssertEqual(unique_local, it->second->specifics.device_info());
687 689
688 // TODO(skym): Uncomment once SimpleMetadataChangeList::TransferChanges is 690 // TODO(skym): Uncomment once SimpleMetadataChangeList::TransferChanges is
689 // implemented. 691 // implemented.
690 // ASSERT_EQ(state.encryption_key_name(), 692 // ASSERT_EQ(state.encryption_key_name(),
691 // processor()->metadata()->GetDataTypeState().encryption_key_name()); 693 // processor()->metadata()->GetDataTypeState().encryption_key_name());
692 } 694 }
693 695
694 TEST_F(DeviceInfoServiceTest, MergeLocalGuid) { 696 TEST_F(DeviceInfoServiceTest, MergeLocalGuid) {
695 const DeviceInfo* local_device_info = local_device()->GetLocalDeviceInfo(); 697 const DeviceInfo* local_device_info = local_device()->GetLocalDeviceInfo();
696 scoped_ptr<DeviceInfoSpecifics> specifics( 698 std::unique_ptr<DeviceInfoSpecifics> specifics(
697 CopyToSpecifics(*local_device_info)); 699 CopyToSpecifics(*local_device_info));
698 const std::string guid = local_device_info->guid(); 700 const std::string guid = local_device_info->guid();
699 701
700 scoped_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 702 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
701 store()->WriteData(batch.get(), guid, specifics->SerializeAsString()); 703 store()->WriteData(batch.get(), guid, specifics->SerializeAsString());
702 store()->CommitWriteBatch(std::move(batch), 704 store()->CommitWriteBatch(std::move(batch),
703 base::Bind(&AssertResultIsSuccess)); 705 base::Bind(&AssertResultIsSuccess));
704 706
705 InitializeAndPumpAndStart(); 707 InitializeAndPumpAndStart();
706 708
707 EntityDataMap remote_input; 709 EntityDataMap remote_input;
708 remote_input[CacheGuidToTag(guid)] = SpecificsToEntity(*specifics); 710 remote_input[CacheGuidToTag(guid)] = SpecificsToEntity(*specifics);
709 711
710 const SyncError error = service()->MergeSyncData( 712 const SyncError error = service()->MergeSyncData(
711 service()->CreateMetadataChangeList(), remote_input); 713 service()->CreateMetadataChangeList(), remote_input);
712 EXPECT_FALSE(error.IsSet()); 714 EXPECT_FALSE(error.IsSet());
713 EXPECT_EQ(0, change_count()); 715 EXPECT_EQ(0, change_count());
714 EXPECT_EQ(1u, service()->GetAllDeviceInfo().size()); 716 EXPECT_EQ(1u, service()->GetAllDeviceInfo().size());
715 EXPECT_TRUE(processor()->delete_set().empty()); 717 EXPECT_TRUE(processor()->delete_set().empty());
716 EXPECT_TRUE(processor()->put_map().empty()); 718 EXPECT_TRUE(processor()->put_map().empty());
717 } 719 }
718 720
719 } // namespace 721 } // namespace
720 722
721 } // namespace sync_driver_v2 723 } // namespace sync_driver_v2
OLDNEW
« no previous file with comments | « components/sync_driver/device_info_service.cc ('k') | components/sync_driver/device_info_sync_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698