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

Side by Side Diff: components/sync/device_info/device_info_sync_bridge_unittest.cc

Issue 2489683002: [Sync] Make all ModelTypeStore write methods go through WriteBatch. (Closed)
Patch Set: Address comment. Created 4 years, 1 month 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/device_info/device_info_sync_bridge.h" 5 #include "components/sync/device_info/device_info_sync_bridge.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 EntitySpecifics entity_specifics; 365 EntitySpecifics entity_specifics;
366 entity_specifics.mutable_device_info(); 366 entity_specifics.mutable_device_info();
367 EntityData entity_data; 367 EntityData entity_data;
368 entity_data.specifics = entity_specifics; 368 entity_data.specifics = entity_specifics;
369 EXPECT_EQ(CacheGuidToTag(""), bridge()->GetClientTag(entity_data)); 369 EXPECT_EQ(CacheGuidToTag(""), bridge()->GetClientTag(entity_data));
370 } 370 }
371 371
372 TEST_F(DeviceInfoSyncBridgeTest, TestWithLocalData) { 372 TEST_F(DeviceInfoSyncBridgeTest, TestWithLocalData) {
373 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 373 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
374 DeviceInfoSpecifics specifics = CreateSpecifics(1); 374 DeviceInfoSpecifics specifics = CreateSpecifics(1);
375 store()->WriteData(batch.get(), specifics.cache_guid(), 375 batch->WriteData(specifics.cache_guid(), specifics.SerializeAsString());
376 specifics.SerializeAsString());
377 store()->CommitWriteBatch(std::move(batch), 376 store()->CommitWriteBatch(std::move(batch),
378 base::Bind(&VerifyResultIsSuccess)); 377 base::Bind(&VerifyResultIsSuccess));
379 378
380 InitializeAndPump(); 379 InitializeAndPump();
381 380
382 ASSERT_EQ(2u, bridge()->GetAllDeviceInfo().size()); 381 ASSERT_EQ(2u, bridge()->GetAllDeviceInfo().size());
383 VerifyEqual(specifics, 382 VerifyEqual(specifics,
384 *bridge()->GetDeviceInfo(specifics.cache_guid()).get()); 383 *bridge()->GetDeviceInfo(specifics.cache_guid()).get());
385 } 384 }
386 385
387 TEST_F(DeviceInfoSyncBridgeTest, TestWithLocalMetadata) { 386 TEST_F(DeviceInfoSyncBridgeTest, TestWithLocalMetadata) {
388 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 387 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
389 ModelTypeState state; 388 ModelTypeState state;
390 state.set_encryption_key_name("ekn"); 389 state.set_encryption_key_name("ekn");
391 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString()); 390 batch->GetMetadataChangeList()->UpdateModelTypeState(state);
392 store()->CommitWriteBatch(std::move(batch), 391 store()->CommitWriteBatch(std::move(batch),
393 base::Bind(&VerifyResultIsSuccess)); 392 base::Bind(&VerifyResultIsSuccess));
394 InitializeAndPump(); 393 InitializeAndPump();
395 DeviceInfoList devices = bridge()->GetAllDeviceInfo(); 394 DeviceInfoList devices = bridge()->GetAllDeviceInfo();
396 ASSERT_EQ(1u, devices.size()); 395 ASSERT_EQ(1u, devices.size());
397 EXPECT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0])); 396 EXPECT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0]));
398 EXPECT_EQ(1u, processor()->put_multimap().size()); 397 EXPECT_EQ(1u, processor()->put_multimap().size());
399 } 398 }
400 399
401 TEST_F(DeviceInfoSyncBridgeTest, TestWithLocalDataAndMetadata) { 400 TEST_F(DeviceInfoSyncBridgeTest, TestWithLocalDataAndMetadata) {
402 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 401 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
403 DeviceInfoSpecifics specifics = CreateSpecifics(1); 402 DeviceInfoSpecifics specifics = CreateSpecifics(1);
404 store()->WriteData(batch.get(), specifics.cache_guid(), 403 batch->WriteData(specifics.cache_guid(), specifics.SerializeAsString());
405 specifics.SerializeAsString());
406 ModelTypeState state; 404 ModelTypeState state;
407 state.set_encryption_key_name("ekn"); 405 state.set_encryption_key_name("ekn");
408 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString()); 406 batch->GetMetadataChangeList()->UpdateModelTypeState(state);
409 store()->CommitWriteBatch(std::move(batch), 407 store()->CommitWriteBatch(std::move(batch),
410 base::Bind(&VerifyResultIsSuccess)); 408 base::Bind(&VerifyResultIsSuccess));
411 409
412 InitializeAndPump(); 410 InitializeAndPump();
413 411
414 ASSERT_EQ(2u, bridge()->GetAllDeviceInfo().size()); 412 ASSERT_EQ(2u, bridge()->GetAllDeviceInfo().size());
415 VerifyEqual(specifics, 413 VerifyEqual(specifics,
416 *bridge()->GetDeviceInfo(specifics.cache_guid()).get()); 414 *bridge()->GetDeviceInfo(specifics.cache_guid()).get());
417 EXPECT_TRUE(processor()->metadata()); 415 EXPECT_TRUE(processor()->metadata());
418 EXPECT_EQ(state.encryption_key_name(), 416 EXPECT_EQ(state.encryption_key_name(),
419 processor()->metadata()->GetModelTypeState().encryption_key_name()); 417 processor()->metadata()->GetModelTypeState().encryption_key_name());
420 } 418 }
421 419
422 TEST_F(DeviceInfoSyncBridgeTest, GetData) { 420 TEST_F(DeviceInfoSyncBridgeTest, GetData) {
423 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 421 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
424 DeviceInfoSpecifics specifics1 = CreateSpecifics(1); 422 DeviceInfoSpecifics specifics1 = CreateSpecifics(1);
425 DeviceInfoSpecifics specifics2 = CreateSpecifics(2); 423 DeviceInfoSpecifics specifics2 = CreateSpecifics(2);
426 DeviceInfoSpecifics specifics3 = CreateSpecifics(3); 424 DeviceInfoSpecifics specifics3 = CreateSpecifics(3);
427 store()->WriteData(batch.get(), specifics1.cache_guid(), 425 batch->WriteData(specifics1.cache_guid(), specifics1.SerializeAsString());
428 specifics1.SerializeAsString()); 426 batch->WriteData(specifics2.cache_guid(), specifics2.SerializeAsString());
429 store()->WriteData(batch.get(), specifics2.cache_guid(), 427 batch->WriteData(specifics3.cache_guid(), specifics3.SerializeAsString());
430 specifics2.SerializeAsString());
431 store()->WriteData(batch.get(), specifics3.cache_guid(),
432 specifics3.SerializeAsString());
433 store()->CommitWriteBatch(std::move(batch), 428 store()->CommitWriteBatch(std::move(batch),
434 base::Bind(&VerifyResultIsSuccess)); 429 base::Bind(&VerifyResultIsSuccess));
435 430
436 InitializeAndPump(); 431 InitializeAndPump();
437 432
438 std::map<std::string, DeviceInfoSpecifics> expected{ 433 std::map<std::string, DeviceInfoSpecifics> expected{
439 {specifics1.cache_guid(), specifics1}, 434 {specifics1.cache_guid(), specifics1},
440 {specifics3.cache_guid(), specifics3}}; 435 {specifics3.cache_guid(), specifics3}};
441 bridge()->GetData({specifics1.cache_guid(), specifics3.cache_guid()}, 436 bridge()->GetData({specifics1.cache_guid(), specifics3.cache_guid()},
442 base::Bind(&VerifyDataBatch, expected)); 437 base::Bind(&VerifyDataBatch, expected));
443 } 438 }
444 439
445 TEST_F(DeviceInfoSyncBridgeTest, GetDataMissing) { 440 TEST_F(DeviceInfoSyncBridgeTest, GetDataMissing) {
446 InitializeAndPump(); 441 InitializeAndPump();
447 bridge()->GetData({"does_not_exist"}, 442 bridge()->GetData({"does_not_exist"},
448 base::Bind(&VerifyDataBatch, 443 base::Bind(&VerifyDataBatch,
449 std::map<std::string, DeviceInfoSpecifics>())); 444 std::map<std::string, DeviceInfoSpecifics>()));
450 } 445 }
451 446
452 TEST_F(DeviceInfoSyncBridgeTest, GetAllData) { 447 TEST_F(DeviceInfoSyncBridgeTest, GetAllData) {
453 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 448 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
454 DeviceInfoSpecifics specifics1 = CreateSpecifics(1); 449 DeviceInfoSpecifics specifics1 = CreateSpecifics(1);
455 DeviceInfoSpecifics specifics2 = CreateSpecifics(2); 450 DeviceInfoSpecifics specifics2 = CreateSpecifics(2);
456 const std::string& guid1 = specifics1.cache_guid(); 451 const std::string& guid1 = specifics1.cache_guid();
457 const std::string& guid2 = specifics2.cache_guid(); 452 const std::string& guid2 = specifics2.cache_guid();
458 store()->WriteData(batch.get(), specifics1.cache_guid(), 453 batch->WriteData(specifics1.cache_guid(), specifics1.SerializeAsString());
459 specifics1.SerializeAsString()); 454 batch->WriteData(specifics2.cache_guid(), specifics2.SerializeAsString());
460 store()->WriteData(batch.get(), specifics2.cache_guid(),
461 specifics2.SerializeAsString());
462 store()->CommitWriteBatch(std::move(batch), 455 store()->CommitWriteBatch(std::move(batch),
463 base::Bind(&VerifyResultIsSuccess)); 456 base::Bind(&VerifyResultIsSuccess));
464 457
465 InitializeAndPump(); 458 InitializeAndPump();
466 459
467 std::map<std::string, DeviceInfoSpecifics> expected{{guid1, specifics1}, 460 std::map<std::string, DeviceInfoSpecifics> expected{{guid1, specifics1},
468 {guid2, specifics2}}; 461 {guid2, specifics2}};
469 bridge()->GetData({guid1, guid2}, base::Bind(&VerifyDataBatch, expected)); 462 bridge()->GetData({guid1, guid2}, base::Bind(&VerifyDataBatch, expected));
470 } 463 }
471 464
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 const DeviceInfoSpecifics unique_local = CreateSpecifics(1); 585 const DeviceInfoSpecifics unique_local = CreateSpecifics(1);
593 DeviceInfoSpecifics conflict_local = CreateSpecifics(2); 586 DeviceInfoSpecifics conflict_local = CreateSpecifics(2);
594 DeviceInfoSpecifics conflict_remote = CreateSpecifics(3); 587 DeviceInfoSpecifics conflict_remote = CreateSpecifics(3);
595 const DeviceInfoSpecifics unique_remote = CreateSpecifics(4); 588 const DeviceInfoSpecifics unique_remote = CreateSpecifics(4);
596 589
597 const std::string conflict_guid = "conflict_guid"; 590 const std::string conflict_guid = "conflict_guid";
598 conflict_local.set_cache_guid(conflict_guid); 591 conflict_local.set_cache_guid(conflict_guid);
599 conflict_remote.set_cache_guid(conflict_guid); 592 conflict_remote.set_cache_guid(conflict_guid);
600 593
601 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 594 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
602 store()->WriteData(batch.get(), unique_local.cache_guid(), 595 batch->WriteData(unique_local.cache_guid(), unique_local.SerializeAsString());
603 unique_local.SerializeAsString()); 596 batch->WriteData(conflict_local.cache_guid(),
604 store()->WriteData(batch.get(), conflict_local.cache_guid(), 597 conflict_local.SerializeAsString());
605 conflict_local.SerializeAsString());
606 store()->CommitWriteBatch(std::move(batch), 598 store()->CommitWriteBatch(std::move(batch),
607 base::Bind(&VerifyResultIsSuccess)); 599 base::Bind(&VerifyResultIsSuccess));
608 600
609 InitializeAndPump(); 601 InitializeAndPump();
610 EXPECT_EQ(1, change_count()); 602 EXPECT_EQ(1, change_count());
611 603
612 EntityDataMap remote_input; 604 EntityDataMap remote_input;
613 remote_input[conflict_remote.cache_guid()] = 605 remote_input[conflict_remote.cache_guid()] =
614 SpecificsToEntity(conflict_remote); 606 SpecificsToEntity(conflict_remote);
615 remote_input[unique_remote.cache_guid()] = SpecificsToEntity(unique_remote); 607 remote_input[unique_remote.cache_guid()] = SpecificsToEntity(unique_remote);
(...skipping 30 matching lines...) Expand all
646 processor()->metadata()->GetModelTypeState().encryption_key_name()); 638 processor()->metadata()->GetModelTypeState().encryption_key_name());
647 } 639 }
648 640
649 TEST_F(DeviceInfoSyncBridgeTest, MergeLocalGuid) { 641 TEST_F(DeviceInfoSyncBridgeTest, MergeLocalGuid) {
650 const DeviceInfo* provider_info = local_device()->GetLocalDeviceInfo(); 642 const DeviceInfo* provider_info = local_device()->GetLocalDeviceInfo();
651 auto specifics = base::MakeUnique<DeviceInfoSpecifics>(CreateSpecifics(0)); 643 auto specifics = base::MakeUnique<DeviceInfoSpecifics>(CreateSpecifics(0));
652 specifics->set_last_updated_timestamp(TimeToProtoTime(Time::Now())); 644 specifics->set_last_updated_timestamp(TimeToProtoTime(Time::Now()));
653 const std::string guid = provider_info->guid(); 645 const std::string guid = provider_info->guid();
654 646
655 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 647 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
656 store()->WriteData(batch.get(), guid, specifics->SerializeAsString()); 648 batch->WriteData(guid, specifics->SerializeAsString());
657 store()->CommitWriteBatch(std::move(batch), 649 store()->CommitWriteBatch(std::move(batch),
658 base::Bind(&VerifyResultIsSuccess)); 650 base::Bind(&VerifyResultIsSuccess));
659 651
660 InitializeAndPump(); 652 InitializeAndPump();
661 653
662 EntityDataMap remote_input; 654 EntityDataMap remote_input;
663 remote_input[guid] = SpecificsToEntity(*specifics); 655 remote_input[guid] = SpecificsToEntity(*specifics);
664 656
665 const SyncError error = bridge()->MergeSyncData( 657 const SyncError error = bridge()->MergeSyncData(
666 bridge()->CreateMetadataChangeList(), remote_input); 658 bridge()->CreateMetadataChangeList(), remote_input);
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 744
753 // Reloading from storage shouldn't contain remote data. 745 // Reloading from storage shouldn't contain remote data.
754 RestartBridge(); 746 RestartBridge();
755 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size()); 747 EXPECT_EQ(1u, bridge()->GetAllDeviceInfo().size());
756 EXPECT_EQ(4, change_count()); 748 EXPECT_EQ(4, change_count());
757 } 749 }
758 750
759 } // namespace 751 } // namespace
760 752
761 } // namespace syncer 753 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/device_info/device_info_sync_bridge.cc ('k') | components/sync/model/mock_model_type_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698