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

Unified Diff: components/sync/device_info/device_info_service_unittest.cc

Issue 2406163006: [Sync] Services can now always assume processor exists. (Closed)
Patch Set: Updates for Max. 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 side-by-side diff with in-line comments
Download patch
Index: components/sync/device_info/device_info_service_unittest.cc
diff --git a/components/sync/device_info/device_info_service_unittest.cc b/components/sync/device_info/device_info_service_unittest.cc
index 907b2ca089d20472527b280b9a5d9ccf87f8dd8a..aa069d33532ff019f2f964c9d3ba456f5b934f92 100644
--- a/components/sync/device_info/device_info_service_unittest.cc
+++ b/components/sync/device_info/device_info_service_unittest.cc
@@ -179,8 +179,9 @@ class DeviceInfoServiceTest : public testing::Test,
std::unique_ptr<ModelTypeChangeProcessor> CreateModelTypeChangeProcessor(
ModelType type,
ModelTypeService* service) {
- processor_ = new RecordingModelTypeChangeProcessor();
- return base::WrapUnique(processor_);
+ auto processor = base::MakeUnique<RecordingModelTypeChangeProcessor>();
+ processor_ = processor.get();
+ return std::move(processor);
}
// Initialized the service based on the current local device and store. Can
@@ -196,11 +197,6 @@ class DeviceInfoServiceTest : public testing::Test,
service_->AddObserver(this);
}
- void OnSyncStarting() {
- service()->OnSyncStarting(base::MakeUnique<DataTypeErrorHandlerMock>(),
- StartCallback());
- }
-
// Creates the service and runs any outstanding tasks. This will typically
// cause all initialization callbacks between the sevice and store to fire.
void InitializeAndPump() {
@@ -208,14 +204,6 @@ class DeviceInfoServiceTest : public testing::Test,
base::RunLoop().RunUntilIdle();
}
- // Creates the service, runs any outstanding tasks, and then indicates to the
- // service that sync wants to start and forces the processor to be created.
- void InitializeAndPumpAndStart() {
- InitializeAndPump();
- OnSyncStarting();
- ASSERT_TRUE(processor_);
- }
-
// Generates a specifics object with slightly differing values. Will generate
// the same values on each run of a test because a simple counter is used to
// vary field values.
@@ -240,7 +228,7 @@ class DeviceInfoServiceTest : public testing::Test,
// Override to allow specific cache guids.
DeviceInfoSpecifics GenerateTestSpecifics(const std::string& guid) {
- DeviceInfoSpecifics specifics(GenerateTestSpecifics());
+ DeviceInfoSpecifics specifics = GenerateTestSpecifics();
specifics.set_cache_guid(guid);
return specifics;
}
@@ -321,54 +309,46 @@ namespace {
TEST_F(DeviceInfoServiceTest, EmptyDataReconciliation) {
InitializeAndPump();
- ASSERT_EQ(0u, service()->GetAllDeviceInfo().size());
- OnSyncStarting();
- DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
- ASSERT_EQ(1u, all_device_info.size());
- ASSERT_TRUE(
- local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
+ DeviceInfoList devices = service()->GetAllDeviceInfo();
+ ASSERT_EQ(1u, devices.size());
+ ASSERT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0]));
}
TEST_F(DeviceInfoServiceTest, EmptyDataReconciliationSlowLoad) {
InitializeService();
- OnSyncStarting();
ASSERT_EQ(0u, service()->GetAllDeviceInfo().size());
base::RunLoop().RunUntilIdle();
- DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
- ASSERT_EQ(1u, all_device_info.size());
- ASSERT_TRUE(
- local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
+ DeviceInfoList devices = service()->GetAllDeviceInfo();
+ ASSERT_EQ(1u, devices.size());
+ ASSERT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0]));
}
TEST_F(DeviceInfoServiceTest, LocalProviderSubscription) {
set_local_device(base::MakeUnique<LocalDeviceInfoProviderMock>());
- InitializeAndPumpAndStart();
+ InitializeAndPump();
ASSERT_EQ(0u, service()->GetAllDeviceInfo().size());
local_device()->Initialize(CreateDeviceInfo());
base::RunLoop().RunUntilIdle();
- DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
- ASSERT_EQ(1u, all_device_info.size());
- ASSERT_TRUE(
- local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
+ DeviceInfoList devices = service()->GetAllDeviceInfo();
+ ASSERT_EQ(1u, devices.size());
+ ASSERT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0]));
}
// Metadata shouldn't be loaded before the provider is initialized.
TEST_F(DeviceInfoServiceTest, LocalProviderInitRace) {
set_local_device(base::WrapUnique(new LocalDeviceInfoProviderMock()));
InitializeAndPump();
- OnSyncStarting();
EXPECT_FALSE(processor()->metadata());
ASSERT_EQ(0u, service()->GetAllDeviceInfo().size());
local_device()->Initialize(CreateDeviceInfo());
base::RunLoop().RunUntilIdle();
- DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
- ASSERT_EQ(1u, all_device_info.size());
- ASSERT_TRUE(
- local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
+ DeviceInfoList devices = service()->GetAllDeviceInfo();
+ ASSERT_EQ(1u, devices.size());
+ ASSERT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0]));
EXPECT_TRUE(processor()->metadata());
}
@@ -394,7 +374,7 @@ TEST_F(DeviceInfoServiceTest, GetClientTagEmpty) {
TEST_F(DeviceInfoServiceTest, TestWithLocalData) {
std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
- DeviceInfoSpecifics specifics(GenerateTestSpecifics());
+ DeviceInfoSpecifics specifics = GenerateTestSpecifics();
store()->WriteData(batch.get(), specifics.cache_guid(),
specifics.SerializeAsString());
store()->CommitWriteBatch(std::move(batch),
@@ -402,9 +382,7 @@ TEST_F(DeviceInfoServiceTest, TestWithLocalData) {
InitializeAndPump();
- DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
- ASSERT_EQ(1u, all_device_info.size());
- AssertEqual(specifics, *all_device_info[0]);
+ ASSERT_EQ(2u, service()->GetAllDeviceInfo().size());
AssertEqual(specifics,
*service()->GetDeviceInfo(specifics.cache_guid()).get());
}
@@ -417,16 +395,15 @@ TEST_F(DeviceInfoServiceTest, TestWithLocalMetadata) {
store()->CommitWriteBatch(std::move(batch),
base::Bind(&AssertResultIsSuccess));
InitializeAndPump();
- DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
- ASSERT_EQ(1u, all_device_info.size());
- ASSERT_TRUE(
- local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
+ DeviceInfoList devices = service()->GetAllDeviceInfo();
+ ASSERT_EQ(1u, devices.size());
+ ASSERT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0]));
EXPECT_EQ(1u, processor()->put_map().size());
}
TEST_F(DeviceInfoServiceTest, TestWithLocalDataAndMetadata) {
std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
- DeviceInfoSpecifics specifics(GenerateTestSpecifics());
+ DeviceInfoSpecifics specifics = GenerateTestSpecifics();
store()->WriteData(batch.get(), specifics.cache_guid(),
specifics.SerializeAsString());
ModelTypeState state;
@@ -437,8 +414,7 @@ TEST_F(DeviceInfoServiceTest, TestWithLocalDataAndMetadata) {
InitializeAndPump();
- DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
- ASSERT_EQ(2u, all_device_info.size());
+ ASSERT_EQ(2u, service()->GetAllDeviceInfo().size());
AssertEqual(specifics,
*service()->GetDeviceInfo(specifics.cache_guid()).get());
ASSERT_TRUE(processor()->metadata());
@@ -448,9 +424,9 @@ TEST_F(DeviceInfoServiceTest, TestWithLocalDataAndMetadata) {
TEST_F(DeviceInfoServiceTest, GetData) {
std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
- DeviceInfoSpecifics specifics1(GenerateTestSpecifics());
- DeviceInfoSpecifics specifics2(GenerateTestSpecifics());
- DeviceInfoSpecifics specifics3(GenerateTestSpecifics());
+ DeviceInfoSpecifics specifics1 = GenerateTestSpecifics();
+ DeviceInfoSpecifics specifics2 = GenerateTestSpecifics();
+ DeviceInfoSpecifics specifics3 = GenerateTestSpecifics();
store()->WriteData(batch.get(), specifics1.cache_guid(),
specifics1.SerializeAsString());
store()->WriteData(batch.get(), specifics2.cache_guid(),
@@ -483,8 +459,8 @@ TEST_F(DeviceInfoServiceTest, GetDataMissing) {
TEST_F(DeviceInfoServiceTest, GetAllData) {
std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
- DeviceInfoSpecifics specifics1(GenerateTestSpecifics());
- DeviceInfoSpecifics specifics2(GenerateTestSpecifics());
+ DeviceInfoSpecifics specifics1 = GenerateTestSpecifics();
+ DeviceInfoSpecifics specifics2 = GenerateTestSpecifics();
const std::string& guid1 = specifics1.cache_guid();
const std::string& guid2 = specifics2.cache_guid();
store()->WriteData(batch.get(), specifics1.cache_guid(),
@@ -508,14 +484,16 @@ TEST_F(DeviceInfoServiceTest, GetAllData) {
TEST_F(DeviceInfoServiceTest, ApplySyncChangesEmpty) {
InitializeAndPump();
+ EXPECT_EQ(1, change_count());
const SyncError error = service()->ApplySyncChanges(
service()->CreateMetadataChangeList(), EntityChangeList());
EXPECT_FALSE(error.IsSet());
- EXPECT_EQ(0, change_count());
+ EXPECT_EQ(1, change_count());
}
TEST_F(DeviceInfoServiceTest, ApplySyncChangesInMemory) {
InitializeAndPump();
+ EXPECT_EQ(1, change_count());
DeviceInfoSpecifics specifics = GenerateTestSpecifics();
EntityChangeList add_changes;
@@ -528,7 +506,7 @@ TEST_F(DeviceInfoServiceTest, ApplySyncChangesInMemory) {
service()->GetDeviceInfo(specifics.cache_guid());
ASSERT_TRUE(info);
AssertEqual(specifics, *info.get());
- EXPECT_EQ(1, change_count());
+ EXPECT_EQ(2, change_count());
EntityChangeList delete_changes;
delete_changes.push_back(EntityChange::CreateDelete(specifics.cache_guid()));
@@ -537,25 +515,26 @@ TEST_F(DeviceInfoServiceTest, ApplySyncChangesInMemory) {
EXPECT_FALSE(error.IsSet());
EXPECT_FALSE(service()->GetDeviceInfo(specifics.cache_guid()));
- EXPECT_EQ(2, change_count());
+ EXPECT_EQ(3, change_count());
}
TEST_F(DeviceInfoServiceTest, ApplySyncChangesStore) {
InitializeAndPump();
+ EXPECT_EQ(1, change_count());
DeviceInfoSpecifics specifics = GenerateTestSpecifics();
EntityChangeList data_changes;
PushBackEntityChangeAdd(specifics, &data_changes);
ModelTypeState state;
state.set_encryption_key_name("ekn");
- std::unique_ptr<MetadataChangeList> metadata_changes(
- service()->CreateMetadataChangeList());
+ std::unique_ptr<MetadataChangeList> metadata_changes =
+ service()->CreateMetadataChangeList();
metadata_changes->UpdateModelTypeState(state);
const SyncError error =
service()->ApplySyncChanges(std::move(metadata_changes), data_changes);
EXPECT_FALSE(error.IsSet());
- EXPECT_EQ(1, change_count());
+ EXPECT_EQ(2, change_count());
RestartService();
@@ -570,7 +549,7 @@ TEST_F(DeviceInfoServiceTest, ApplySyncChangesStore) {
}
TEST_F(DeviceInfoServiceTest, ApplySyncChangesWithLocalGuid) {
- InitializeAndPumpAndStart();
+ InitializeAndPump();
// The point of this test is to try to apply remote changes that have the same
// cache guid as the local device. The service should ignore these changes
@@ -609,7 +588,7 @@ TEST_F(DeviceInfoServiceTest, ApplySyncChangesWithLocalGuid) {
}
TEST_F(DeviceInfoServiceTest, ApplyDeleteNonexistent) {
- InitializeAndPumpAndStart();
+ InitializeAndPump();
EXPECT_EQ(1, change_count());
EntityChangeList delete_changes;
delete_changes.push_back(EntityChange::CreateDelete("guid"));
@@ -620,7 +599,7 @@ TEST_F(DeviceInfoServiceTest, ApplyDeleteNonexistent) {
}
TEST_F(DeviceInfoServiceTest, MergeEmpty) {
- InitializeAndPumpAndStart();
+ InitializeAndPump();
EXPECT_EQ(1, change_count());
const SyncError error = service()->MergeSyncData(
service()->CreateMetadataChangeList(), EntityDataMap());
@@ -632,14 +611,14 @@ TEST_F(DeviceInfoServiceTest, MergeEmpty) {
TEST_F(DeviceInfoServiceTest, MergeWithData) {
const std::string conflict_guid = "conflict_guid";
- const DeviceInfoSpecifics unique_local(
- GenerateTestSpecifics("unique_local_guid"));
- const DeviceInfoSpecifics conflict_local(
- GenerateTestSpecifics(conflict_guid));
- const DeviceInfoSpecifics conflict_remote(
- GenerateTestSpecifics(conflict_guid));
- const DeviceInfoSpecifics unique_remote(
- GenerateTestSpecifics("unique_remote_guid"));
+ const DeviceInfoSpecifics unique_local =
+ GenerateTestSpecifics("unique_local_guid");
+ const DeviceInfoSpecifics conflict_local =
+ GenerateTestSpecifics(conflict_guid);
+ const DeviceInfoSpecifics conflict_remote =
+ GenerateTestSpecifics(conflict_guid);
+ const DeviceInfoSpecifics unique_remote =
+ GenerateTestSpecifics("unique_remote_guid");
std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
store()->WriteData(batch.get(), unique_local.cache_guid(),
@@ -649,7 +628,7 @@ TEST_F(DeviceInfoServiceTest, MergeWithData) {
store()->CommitWriteBatch(std::move(batch),
base::Bind(&AssertResultIsSuccess));
- InitializeAndPumpAndStart();
+ InitializeAndPump();
EXPECT_EQ(1, change_count());
EntityDataMap remote_input;
@@ -690,8 +669,8 @@ TEST_F(DeviceInfoServiceTest, MergeWithData) {
TEST_F(DeviceInfoServiceTest, MergeLocalGuid) {
const DeviceInfo* local_device_info = local_device()->GetLocalDeviceInfo();
- std::unique_ptr<DeviceInfoSpecifics> specifics(
- CopyToSpecifics(*local_device_info));
+ std::unique_ptr<DeviceInfoSpecifics> specifics =
+ CopyToSpecifics(*local_device_info);
specifics->set_last_updated_timestamp(TimeToProtoTime(Time::Now()));
const std::string guid = local_device_info->guid();
@@ -700,7 +679,7 @@ TEST_F(DeviceInfoServiceTest, MergeLocalGuid) {
store()->CommitWriteBatch(std::move(batch),
base::Bind(&AssertResultIsSuccess));
- InitializeAndPumpAndStart();
+ InitializeAndPump();
EntityDataMap remote_input;
remote_input[guid] = SpecificsToEntity(*specifics);
@@ -717,8 +696,8 @@ TEST_F(DeviceInfoServiceTest, MergeLocalGuid) {
TEST_F(DeviceInfoServiceTest, GetLastUpdateTime) {
Time time1(Time() + TimeDelta::FromDays(1));
- DeviceInfoSpecifics specifics1(GenerateTestSpecifics());
- DeviceInfoSpecifics specifics2(GenerateTestSpecifics());
+ DeviceInfoSpecifics specifics1 = GenerateTestSpecifics();
+ DeviceInfoSpecifics specifics2 = GenerateTestSpecifics();
specifics2.set_last_updated_timestamp(TimeToProtoTime(time1));
EXPECT_EQ(Time(), GetLastUpdateTime(specifics1));
@@ -727,7 +706,7 @@ TEST_F(DeviceInfoServiceTest, GetLastUpdateTime) {
TEST_F(DeviceInfoServiceTest, CountActiveDevices) {
InitializeAndPump();
- EXPECT_EQ(0, service()->CountActiveDevices());
+ EXPECT_EQ(1, service()->CountActiveDevices());
DeviceInfoSpecifics specifics =
GenerateTestSpecifics(local_device()->GetLocalDeviceInfo()->guid());
@@ -735,21 +714,21 @@ TEST_F(DeviceInfoServiceTest, CountActiveDevices) {
PushBackEntityChangeAdd(specifics, &change_list);
service()->ApplySyncChanges(service()->CreateMetadataChangeList(),
change_list);
- EXPECT_EQ(0, service()->CountActiveDevices());
+ EXPECT_EQ(1, service()->CountActiveDevices());
change_list.clear();
specifics.set_last_updated_timestamp(TimeToProtoTime(Time::Now()));
PushBackEntityChangeAdd(specifics, &change_list);
service()->ApplySyncChanges(service()->CreateMetadataChangeList(),
change_list);
- EXPECT_EQ(0, service()->CountActiveDevices());
+ EXPECT_EQ(1, service()->CountActiveDevices());
change_list.clear();
specifics.set_cache_guid("non-local");
PushBackEntityChangeAdd(specifics, &change_list);
service()->ApplySyncChanges(service()->CreateMetadataChangeList(),
change_list);
- EXPECT_EQ(1, service()->CountActiveDevices());
+ EXPECT_EQ(2, service()->CountActiveDevices());
}
} // namespace
« no previous file with comments | « components/sync/device_info/device_info_service.cc ('k') | components/sync/driver/model_type_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698