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

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

Issue 2394573002: [Sync] Rename DataTypeState to ModelTypeState. (Closed)
Patch Set: Rebase. Created 4 years, 2 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/device_info/device_info_service.h" 5 #include "components/sync/device_info/device_info_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
13 #include "base/message_loop/message_loop.h" 13 #include "base/message_loop/message_loop.h"
14 #include "base/run_loop.h" 14 #include "base/run_loop.h"
15 #include "base/strings/stringprintf.h" 15 #include "base/strings/stringprintf.h"
16 #include "components/sync/api/data_batch.h" 16 #include "components/sync/api/data_batch.h"
17 #include "components/sync/api/data_type_error_handler_mock.h" 17 #include "components/sync/api/data_type_error_handler_mock.h"
18 #include "components/sync/api/entity_data.h" 18 #include "components/sync/api/entity_data.h"
19 #include "components/sync/api/fake_model_type_change_processor.h" 19 #include "components/sync/api/fake_model_type_change_processor.h"
20 #include "components/sync/api/metadata_batch.h" 20 #include "components/sync/api/metadata_batch.h"
21 #include "components/sync/base/time.h" 21 #include "components/sync/base/time.h"
22 #include "components/sync/core/test/model_type_store_test_util.h" 22 #include "components/sync/core/test/model_type_store_test_util.h"
23 #include "components/sync/device_info/local_device_info_provider_mock.h" 23 #include "components/sync/device_info/local_device_info_provider_mock.h"
24 #include "components/sync/protocol/data_type_state.pb.h" 24 #include "components/sync/protocol/model_type_state.pb.h"
25 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
26 26
27 namespace syncer { 27 namespace syncer {
28 28
29 using base::Time; 29 using base::Time;
30 using base::TimeDelta; 30 using base::TimeDelta;
31 using sync_pb::DataTypeState;
32 using sync_pb::DeviceInfoSpecifics; 31 using sync_pb::DeviceInfoSpecifics;
33 using sync_pb::EntitySpecifics; 32 using sync_pb::EntitySpecifics;
33 using sync_pb::ModelTypeState;
34 34
35 using DeviceInfoList = std::vector<std::unique_ptr<DeviceInfo>>; 35 using DeviceInfoList = std::vector<std::unique_ptr<DeviceInfo>>;
36 using StorageKeyList = ModelTypeService::StorageKeyList; 36 using StorageKeyList = ModelTypeService::StorageKeyList;
37 using RecordList = ModelTypeStore::RecordList; 37 using RecordList = ModelTypeStore::RecordList;
38 using Result = ModelTypeStore::Result; 38 using Result = ModelTypeStore::Result;
39 using StartCallback = ModelTypeChangeProcessor::StartCallback; 39 using StartCallback = ModelTypeChangeProcessor::StartCallback;
40 using WriteBatch = ModelTypeStore::WriteBatch; 40 using WriteBatch = ModelTypeStore::WriteBatch;
41 41
42 namespace { 42 namespace {
43 43
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 404
405 DeviceInfoList all_device_info(service()->GetAllDeviceInfo()); 405 DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
406 ASSERT_EQ(1u, all_device_info.size()); 406 ASSERT_EQ(1u, all_device_info.size());
407 AssertEqual(specifics, *all_device_info[0]); 407 AssertEqual(specifics, *all_device_info[0]);
408 AssertEqual(specifics, 408 AssertEqual(specifics,
409 *service()->GetDeviceInfo(specifics.cache_guid()).get()); 409 *service()->GetDeviceInfo(specifics.cache_guid()).get());
410 } 410 }
411 411
412 TEST_F(DeviceInfoServiceTest, TestWithLocalMetadata) { 412 TEST_F(DeviceInfoServiceTest, TestWithLocalMetadata) {
413 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 413 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
414 DataTypeState state; 414 ModelTypeState state;
415 state.set_encryption_key_name("ekn"); 415 state.set_encryption_key_name("ekn");
416 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString()); 416 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString());
417 store()->CommitWriteBatch(std::move(batch), 417 store()->CommitWriteBatch(std::move(batch),
418 base::Bind(&AssertResultIsSuccess)); 418 base::Bind(&AssertResultIsSuccess));
419 InitializeAndPump(); 419 InitializeAndPump();
420 DeviceInfoList all_device_info(service()->GetAllDeviceInfo()); 420 DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
421 ASSERT_EQ(1u, all_device_info.size()); 421 ASSERT_EQ(1u, all_device_info.size());
422 ASSERT_TRUE( 422 ASSERT_TRUE(
423 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); 423 local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
424 EXPECT_EQ(1u, processor()->put_map().size()); 424 EXPECT_EQ(1u, processor()->put_map().size());
425 } 425 }
426 426
427 TEST_F(DeviceInfoServiceTest, TestWithLocalDataAndMetadata) { 427 TEST_F(DeviceInfoServiceTest, TestWithLocalDataAndMetadata) {
428 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 428 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
429 DeviceInfoSpecifics specifics(GenerateTestSpecifics()); 429 DeviceInfoSpecifics specifics(GenerateTestSpecifics());
430 store()->WriteData(batch.get(), specifics.cache_guid(), 430 store()->WriteData(batch.get(), specifics.cache_guid(),
431 specifics.SerializeAsString()); 431 specifics.SerializeAsString());
432 DataTypeState state; 432 ModelTypeState state;
433 state.set_encryption_key_name("ekn"); 433 state.set_encryption_key_name("ekn");
434 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString()); 434 store()->WriteGlobalMetadata(batch.get(), state.SerializeAsString());
435 store()->CommitWriteBatch(std::move(batch), 435 store()->CommitWriteBatch(std::move(batch),
436 base::Bind(&AssertResultIsSuccess)); 436 base::Bind(&AssertResultIsSuccess));
437 437
438 InitializeAndPump(); 438 InitializeAndPump();
439 439
440 DeviceInfoList all_device_info(service()->GetAllDeviceInfo()); 440 DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
441 ASSERT_EQ(2u, all_device_info.size()); 441 ASSERT_EQ(2u, all_device_info.size());
442 AssertEqual(specifics, 442 AssertEqual(specifics,
443 *service()->GetDeviceInfo(specifics.cache_guid()).get()); 443 *service()->GetDeviceInfo(specifics.cache_guid()).get());
444 ASSERT_TRUE(processor()->metadata()); 444 ASSERT_TRUE(processor()->metadata());
445 ASSERT_EQ(state.encryption_key_name(), 445 ASSERT_EQ(state.encryption_key_name(),
446 processor()->metadata()->GetDataTypeState().encryption_key_name()); 446 processor()->metadata()->GetModelTypeState().encryption_key_name());
447 } 447 }
448 448
449 TEST_F(DeviceInfoServiceTest, GetData) { 449 TEST_F(DeviceInfoServiceTest, GetData) {
450 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 450 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
451 DeviceInfoSpecifics specifics1(GenerateTestSpecifics()); 451 DeviceInfoSpecifics specifics1(GenerateTestSpecifics());
452 DeviceInfoSpecifics specifics2(GenerateTestSpecifics()); 452 DeviceInfoSpecifics specifics2(GenerateTestSpecifics());
453 DeviceInfoSpecifics specifics3(GenerateTestSpecifics()); 453 DeviceInfoSpecifics specifics3(GenerateTestSpecifics());
454 store()->WriteData(batch.get(), specifics1.cache_guid(), 454 store()->WriteData(batch.get(), specifics1.cache_guid(),
455 specifics1.SerializeAsString()); 455 specifics1.SerializeAsString());
456 store()->WriteData(batch.get(), specifics2.cache_guid(), 456 store()->WriteData(batch.get(), specifics2.cache_guid(),
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 EXPECT_FALSE(service()->GetDeviceInfo(specifics.cache_guid())); 539 EXPECT_FALSE(service()->GetDeviceInfo(specifics.cache_guid()));
540 EXPECT_EQ(2, change_count()); 540 EXPECT_EQ(2, change_count());
541 } 541 }
542 542
543 TEST_F(DeviceInfoServiceTest, ApplySyncChangesStore) { 543 TEST_F(DeviceInfoServiceTest, ApplySyncChangesStore) {
544 InitializeAndPump(); 544 InitializeAndPump();
545 545
546 DeviceInfoSpecifics specifics = GenerateTestSpecifics(); 546 DeviceInfoSpecifics specifics = GenerateTestSpecifics();
547 EntityChangeList data_changes; 547 EntityChangeList data_changes;
548 PushBackEntityChangeAdd(specifics, &data_changes); 548 PushBackEntityChangeAdd(specifics, &data_changes);
549 DataTypeState state; 549 ModelTypeState state;
550 state.set_encryption_key_name("ekn"); 550 state.set_encryption_key_name("ekn");
551 std::unique_ptr<MetadataChangeList> metadata_changes( 551 std::unique_ptr<MetadataChangeList> metadata_changes(
552 service()->CreateMetadataChangeList()); 552 service()->CreateMetadataChangeList());
553 metadata_changes->UpdateDataTypeState(state); 553 metadata_changes->UpdateModelTypeState(state);
554 554
555 const SyncError error = 555 const SyncError error =
556 service()->ApplySyncChanges(std::move(metadata_changes), data_changes); 556 service()->ApplySyncChanges(std::move(metadata_changes), data_changes);
557 EXPECT_FALSE(error.IsSet()); 557 EXPECT_FALSE(error.IsSet());
558 EXPECT_EQ(1, change_count()); 558 EXPECT_EQ(1, change_count());
559 559
560 RestartService(); 560 RestartService();
561 561
562 std::unique_ptr<DeviceInfo> info = 562 std::unique_ptr<DeviceInfo> info =
563 service()->GetDeviceInfo(specifics.cache_guid()); 563 service()->GetDeviceInfo(specifics.cache_guid());
564 ASSERT_TRUE(info); 564 ASSERT_TRUE(info);
565 AssertEqual(specifics, *info.get()); 565 AssertEqual(specifics, *info.get());
566 566
567 EXPECT_TRUE(processor()->metadata()); 567 EXPECT_TRUE(processor()->metadata());
568 EXPECT_EQ(state.encryption_key_name(), 568 EXPECT_EQ(state.encryption_key_name(),
569 processor()->metadata()->GetDataTypeState().encryption_key_name()); 569 processor()->metadata()->GetModelTypeState().encryption_key_name());
570 } 570 }
571 571
572 TEST_F(DeviceInfoServiceTest, ApplySyncChangesWithLocalGuid) { 572 TEST_F(DeviceInfoServiceTest, ApplySyncChangesWithLocalGuid) {
573 InitializeAndPumpAndStart(); 573 InitializeAndPumpAndStart();
574 574
575 // The point of this test is to try to apply remote changes that have the same 575 // The point of this test is to try to apply remote changes that have the same
576 // cache guid as the local device. The service should ignore these changes 576 // cache guid as the local device. The service should ignore these changes
577 // since only it should be performing writes on its data. 577 // since only it should be performing writes on its data.
578 DeviceInfoSpecifics specifics = 578 DeviceInfoSpecifics specifics =
579 GenerateTestSpecifics(local_device()->GetLocalDeviceInfo()->guid()); 579 GenerateTestSpecifics(local_device()->GetLocalDeviceInfo()->guid());
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 base::Bind(&AssertResultIsSuccess)); 650 base::Bind(&AssertResultIsSuccess));
651 651
652 InitializeAndPumpAndStart(); 652 InitializeAndPumpAndStart();
653 EXPECT_EQ(1, change_count()); 653 EXPECT_EQ(1, change_count());
654 654
655 EntityDataMap remote_input; 655 EntityDataMap remote_input;
656 remote_input[conflict_remote.cache_guid()] = 656 remote_input[conflict_remote.cache_guid()] =
657 SpecificsToEntity(conflict_remote); 657 SpecificsToEntity(conflict_remote);
658 remote_input[unique_remote.cache_guid()] = SpecificsToEntity(unique_remote); 658 remote_input[unique_remote.cache_guid()] = SpecificsToEntity(unique_remote);
659 659
660 DataTypeState state; 660 ModelTypeState state;
661 state.set_encryption_key_name("ekn"); 661 state.set_encryption_key_name("ekn");
662 std::unique_ptr<MetadataChangeList> metadata_changes( 662 std::unique_ptr<MetadataChangeList> metadata_changes(
663 service()->CreateMetadataChangeList()); 663 service()->CreateMetadataChangeList());
664 metadata_changes->UpdateDataTypeState(state); 664 metadata_changes->UpdateModelTypeState(state);
665 665
666 const SyncError error = 666 const SyncError error =
667 service()->MergeSyncData(std::move(metadata_changes), remote_input); 667 service()->MergeSyncData(std::move(metadata_changes), remote_input);
668 EXPECT_FALSE(error.IsSet()); 668 EXPECT_FALSE(error.IsSet());
669 EXPECT_EQ(2, change_count()); 669 EXPECT_EQ(2, change_count());
670 670
671 // The remote should beat the local in conflict. 671 // The remote should beat the local in conflict.
672 EXPECT_EQ(4u, service()->GetAllDeviceInfo().size()); 672 EXPECT_EQ(4u, service()->GetAllDeviceInfo().size());
673 AssertEqual(unique_local, 673 AssertEqual(unique_local,
674 *service()->GetDeviceInfo(unique_local.cache_guid()).get()); 674 *service()->GetDeviceInfo(unique_local.cache_guid()).get());
675 AssertEqual(unique_remote, 675 AssertEqual(unique_remote,
676 *service()->GetDeviceInfo(unique_remote.cache_guid()).get()); 676 *service()->GetDeviceInfo(unique_remote.cache_guid()).get());
677 AssertEqual(conflict_remote, *service()->GetDeviceInfo(conflict_guid).get()); 677 AssertEqual(conflict_remote, *service()->GetDeviceInfo(conflict_guid).get());
678 678
679 // Service should have told the processor about the existance of unique_local. 679 // Service should have told the processor about the existance of unique_local.
680 EXPECT_TRUE(processor()->delete_set().empty()); 680 EXPECT_TRUE(processor()->delete_set().empty());
681 EXPECT_EQ(2u, processor()->put_map().size()); 681 EXPECT_EQ(2u, processor()->put_map().size());
682 const auto& it = processor()->put_map().find(unique_local.cache_guid()); 682 const auto& it = processor()->put_map().find(unique_local.cache_guid());
683 ASSERT_NE(processor()->put_map().end(), it); 683 ASSERT_NE(processor()->put_map().end(), it);
684 AssertEqual(unique_local, it->second->specifics.device_info()); 684 AssertEqual(unique_local, it->second->specifics.device_info());
685 685
686 RestartService(); 686 RestartService();
687 ASSERT_EQ(state.encryption_key_name(), 687 ASSERT_EQ(state.encryption_key_name(),
688 processor()->metadata()->GetDataTypeState().encryption_key_name()); 688 processor()->metadata()->GetModelTypeState().encryption_key_name());
689 } 689 }
690 690
691 TEST_F(DeviceInfoServiceTest, MergeLocalGuid) { 691 TEST_F(DeviceInfoServiceTest, MergeLocalGuid) {
692 const DeviceInfo* local_device_info = local_device()->GetLocalDeviceInfo(); 692 const DeviceInfo* local_device_info = local_device()->GetLocalDeviceInfo();
693 std::unique_ptr<DeviceInfoSpecifics> specifics( 693 std::unique_ptr<DeviceInfoSpecifics> specifics(
694 CopyToSpecifics(*local_device_info)); 694 CopyToSpecifics(*local_device_info));
695 specifics->set_last_updated_timestamp(TimeToProtoTime(Time::Now())); 695 specifics->set_last_updated_timestamp(TimeToProtoTime(Time::Now()));
696 const std::string guid = local_device_info->guid(); 696 const std::string guid = local_device_info->guid();
697 697
698 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); 698 std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 specifics.set_cache_guid("non-local"); 748 specifics.set_cache_guid("non-local");
749 PushBackEntityChangeAdd(specifics, &change_list); 749 PushBackEntityChangeAdd(specifics, &change_list);
750 service()->ApplySyncChanges(service()->CreateMetadataChangeList(), 750 service()->ApplySyncChanges(service()->CreateMetadataChangeList(),
751 change_list); 751 change_list);
752 EXPECT_EQ(1, service()->CountActiveDevices()); 752 EXPECT_EQ(1, service()->CountActiveDevices());
753 } 753 }
754 754
755 } // namespace 755 } // namespace
756 756
757 } // namespace syncer 757 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/device_info/device_info_service.cc ('k') | components/sync/driver/glue/sync_backend_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698