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

Side by Side Diff: chrome/browser/supervised_user/supervised_user_settings_service_unittest.cc

Issue 1563833002: [Part-2]Add Statistics for SupervisedUserSettingService during merging and syncing data. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes as per review comments. Created 4 years, 11 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/supervised_user/supervised_user_settings_service.h" 5 #include "chrome/browser/supervised_user/supervised_user_settings_service.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 protected: 63 protected:
64 SupervisedUserSettingsServiceTest() : settings_service_(nullptr) {} 64 SupervisedUserSettingsServiceTest() : settings_service_(nullptr) {}
65 ~SupervisedUserSettingsServiceTest() override {} 65 ~SupervisedUserSettingsServiceTest() override {}
66 66
67 scoped_ptr<syncer::SyncChangeProcessor> CreateSyncProcessor() { 67 scoped_ptr<syncer::SyncChangeProcessor> CreateSyncProcessor() {
68 sync_processor_.reset(new syncer::FakeSyncChangeProcessor); 68 sync_processor_.reset(new syncer::FakeSyncChangeProcessor);
69 return scoped_ptr<syncer::SyncChangeProcessor>( 69 return scoped_ptr<syncer::SyncChangeProcessor>(
70 new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get())); 70 new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get()));
71 } 71 }
72 72
73 void StartSyncing(const syncer::SyncDataList& initial_sync_data) { 73 syncer::SyncMergeResult StartSyncing(
74 const syncer::SyncDataList& initial_sync_data) {
74 scoped_ptr<syncer::SyncErrorFactory> error_handler( 75 scoped_ptr<syncer::SyncErrorFactory> error_handler(
75 new MockSyncErrorFactory(syncer::SUPERVISED_USER_SETTINGS)); 76 new MockSyncErrorFactory(syncer::SUPERVISED_USER_SETTINGS));
76 syncer::SyncMergeResult result = settings_service_.MergeDataAndStartSyncing( 77 syncer::SyncMergeResult result = settings_service_.MergeDataAndStartSyncing(
77 syncer::SUPERVISED_USER_SETTINGS, initial_sync_data, 78 syncer::SUPERVISED_USER_SETTINGS, initial_sync_data,
78 CreateSyncProcessor(), std::move(error_handler)); 79 CreateSyncProcessor(), std::move(error_handler));
79 EXPECT_FALSE(result.error().IsSet()); 80 EXPECT_FALSE(result.error().IsSet());
81 return result;
80 } 82 }
81 83
82 void UploadSplitItem(const std::string& key, const std::string& value) { 84 void UploadSplitItem(const std::string& key, const std::string& value) {
83 split_items_.SetStringWithoutPathExpansion(key, value); 85 split_items_.SetStringWithoutPathExpansion(key, value);
84 settings_service_.UploadItem( 86 settings_service_.UploadItem(
85 SupervisedUserSettingsService::MakeSplitSettingKey(kSplitItemName, 87 SupervisedUserSettingsService::MakeSplitSettingKey(kSplitItemName,
86 key), 88 key),
87 scoped_ptr<base::Value>(new base::StringValue(value))); 89 scoped_ptr<base::Value>(new base::StringValue(value)));
88 } 90 }
89 91
90 void UploadAtomicItem(const std::string& value) { 92 void UploadAtomicItem(const std::string& value) {
91 atomic_setting_value_.reset(new base::StringValue(value)); 93 atomic_setting_value_.reset(new base::StringValue(value));
92 settings_service_.UploadItem( 94 settings_service_.UploadItem(
93 kAtomicItemName, 95 kAtomicItemName,
94 scoped_ptr<base::Value>(new base::StringValue(value))); 96 scoped_ptr<base::Value>(new base::StringValue(value)));
95 } 97 }
96 98
97 void VerifySyncDataItem(syncer::SyncData sync_data) { 99 void VerifySyncDataItem(syncer::SyncData sync_data) {
98 const sync_pb::ManagedUserSettingSpecifics& supervised_user_setting = 100 const sync_pb::ManagedUserSettingSpecifics& supervised_user_setting =
99 sync_data.GetSpecifics().managed_user_setting(); 101 sync_data.GetSpecifics().managed_user_setting();
100 base::Value* expected_value = NULL; 102 base::Value* expected_value = nullptr;
101 if (supervised_user_setting.name() == kAtomicItemName) { 103 if (supervised_user_setting.name() == kAtomicItemName) {
102 expected_value = atomic_setting_value_.get(); 104 expected_value = atomic_setting_value_.get();
103 } else { 105 } else {
104 EXPECT_TRUE(base::StartsWith(supervised_user_setting.name(), 106 EXPECT_TRUE(base::StartsWith(supervised_user_setting.name(),
105 std::string(kSplitItemName) + ':', 107 std::string(kSplitItemName) + ':',
106 base::CompareCase::SENSITIVE)); 108 base::CompareCase::SENSITIVE));
107 std::string key = 109 std::string key =
108 supervised_user_setting.name().substr(strlen(kSplitItemName) + 1); 110 supervised_user_setting.name().substr(strlen(kSplitItemName) + 1);
109 EXPECT_TRUE(split_items_.GetWithoutPathExpansion(key, &expected_value)); 111 EXPECT_TRUE(split_items_.GetWithoutPathExpansion(key, &expected_value));
110 } 112 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 scoped_ptr<base::DictionaryValue> settings_; 145 scoped_ptr<base::DictionaryValue> settings_;
144 scoped_ptr<base::CallbackList<void( 146 scoped_ptr<base::CallbackList<void(
145 const base::DictionaryValue*)>::Subscription> user_settings_subscription_; 147 const base::DictionaryValue*)>::Subscription> user_settings_subscription_;
146 148
147 scoped_ptr<syncer::FakeSyncChangeProcessor> sync_processor_; 149 scoped_ptr<syncer::FakeSyncChangeProcessor> sync_processor_;
148 }; 150 };
149 151
150 TEST_F(SupervisedUserSettingsServiceTest, ProcessAtomicSetting) { 152 TEST_F(SupervisedUserSettingsServiceTest, ProcessAtomicSetting) {
151 StartSyncing(syncer::SyncDataList()); 153 StartSyncing(syncer::SyncDataList());
152 ASSERT_TRUE(settings_); 154 ASSERT_TRUE(settings_);
153 const base::Value* value = NULL; 155 const base::Value* value = nullptr;
154 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); 156 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
155 157
156 settings_.reset(); 158 settings_.reset();
157 syncer::SyncData data = 159 syncer::SyncData data =
158 SupervisedUserSettingsService::CreateSyncDataForSetting( 160 SupervisedUserSettingsService::CreateSyncDataForSetting(
159 kSettingsName, base::StringValue(kSettingsValue)); 161 kSettingsName, base::StringValue(kSettingsValue));
160 syncer::SyncChangeList change_list; 162 syncer::SyncChangeList change_list;
161 change_list.push_back( 163 change_list.push_back(
162 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data)); 164 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data));
163 syncer::SyncError error = 165 syncer::SyncError error =
164 settings_service_.ProcessSyncChanges(FROM_HERE, change_list); 166 settings_service_.ProcessSyncChanges(FROM_HERE, change_list);
165 EXPECT_FALSE(error.IsSet()) << error.ToString(); 167 EXPECT_FALSE(error.IsSet()) << error.ToString();
166 ASSERT_TRUE(settings_); 168 ASSERT_TRUE(settings_);
167 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); 169 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
168 std::string string_value; 170 std::string string_value;
169 EXPECT_TRUE(value->GetAsString(&string_value)); 171 EXPECT_TRUE(value->GetAsString(&string_value));
170 EXPECT_EQ(kSettingsValue, string_value); 172 EXPECT_EQ(kSettingsValue, string_value);
171 } 173 }
172 174
173 TEST_F(SupervisedUserSettingsServiceTest, ProcessSplitSetting) { 175 TEST_F(SupervisedUserSettingsServiceTest, ProcessSplitSetting) {
174 StartSyncing(syncer::SyncDataList()); 176 StartSyncing(syncer::SyncDataList());
175 ASSERT_TRUE(settings_); 177 ASSERT_TRUE(settings_);
176 const base::Value* value = NULL; 178 const base::Value* value = nullptr;
177 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); 179 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
178 180
179 base::DictionaryValue dict; 181 base::DictionaryValue dict;
180 dict.SetString("foo", "bar"); 182 dict.SetString("foo", "bar");
181 dict.SetBoolean("awesomesauce", true); 183 dict.SetBoolean("awesomesauce", true);
182 dict.SetInteger("eaudecologne", 4711); 184 dict.SetInteger("eaudecologne", 4711);
183 185
184 settings_.reset(); 186 settings_.reset();
185 syncer::SyncChangeList change_list; 187 syncer::SyncChangeList change_list;
186 for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) { 188 for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) {
187 syncer::SyncData data = 189 syncer::SyncData data =
188 SupervisedUserSettingsService::CreateSyncDataForSetting( 190 SupervisedUserSettingsService::CreateSyncDataForSetting(
189 SupervisedUserSettingsService::MakeSplitSettingKey(kSettingsName, 191 SupervisedUserSettingsService::MakeSplitSettingKey(kSettingsName,
190 it.key()), 192 it.key()),
191 it.value()); 193 it.value());
192 change_list.push_back( 194 change_list.push_back(
193 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data)); 195 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data));
194 } 196 }
195 syncer::SyncError error = 197 syncer::SyncError error =
196 settings_service_.ProcessSyncChanges(FROM_HERE, change_list); 198 settings_service_.ProcessSyncChanges(FROM_HERE, change_list);
197 EXPECT_FALSE(error.IsSet()) << error.ToString(); 199 EXPECT_FALSE(error.IsSet()) << error.ToString();
198 ASSERT_TRUE(settings_); 200 ASSERT_TRUE(settings_);
199 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); 201 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
200 const base::DictionaryValue* dict_value = NULL; 202 const base::DictionaryValue* dict_value = nullptr;
201 ASSERT_TRUE(value->GetAsDictionary(&dict_value)); 203 ASSERT_TRUE(value->GetAsDictionary(&dict_value));
202 EXPECT_TRUE(dict_value->Equals(&dict)); 204 EXPECT_TRUE(dict_value->Equals(&dict));
203 } 205 }
204 206
207 TEST_F(SupervisedUserSettingsServiceTest, Merge) {
208 syncer::SyncMergeResult result = StartSyncing(syncer::SyncDataList());
209 EXPECT_EQ(0, result.num_items_added());
210 EXPECT_EQ(0, result.num_items_deleted());
211 EXPECT_EQ(0, result.num_items_modified());
212 EXPECT_EQ(0, result.num_items_before_association());
213 EXPECT_EQ(0, result.num_items_after_association());
214
215 ASSERT_TRUE(settings_);
216 const base::Value* value = nullptr;
217 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
218
219 base::DictionaryValue dict;
220 dict.SetString("foo", "bar");
221 dict.SetBoolean("awesomesauce", true);
222 dict.SetInteger("eaudecologne", 4711);
223
224 settings_.reset();
225 syncer::SyncDataList sync_data;
226 sync_data.push_back(SupervisedUserSettingsService::CreateSyncDataForSetting(
227 kSettingsName, base::StringValue(kSettingsValue)));
228 for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) {
229 sync_data.push_back(SupervisedUserSettingsService::CreateSyncDataForSetting(
230 SupervisedUserSettingsService::MakeSplitSettingKey(kSettingsName,
231 it.key()),
232 it.value()));
233 }
234
235 result = StartSyncing(sync_data);
236 EXPECT_EQ(4, result.num_items_added());
237 EXPECT_EQ(0, result.num_items_deleted());
238 EXPECT_EQ(0, result.num_items_modified());
239 EXPECT_EQ(0, result.num_items_before_association());
240 EXPECT_EQ(4, result.num_items_after_association());
241
242 settings_service_.StopSyncing(syncer::SUPERVISED_USER_SETTINGS);
243 sync_data.clear();
244 // Adding split Item in the queue.
245 UploadSplitItem("blurp", "baz");
246 // Adding atomic Item in the queue.
247 UploadAtomicItem("hurdle");
248
249 dict.Clear();
250 dict.SetString("foo", "burp");
251 dict.SetString("item", "first");
252
253 for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) {
254 sync_data.push_back(SupervisedUserSettingsService::CreateSyncDataForSetting(
255 SupervisedUserSettingsService::MakeSplitSettingKey(kSettingsName,
256 it.key()),
257 it.value()));
258 }
259
260 result = StartSyncing(sync_data);
261 EXPECT_EQ(3, result.num_items_added());
262 EXPECT_EQ(3, result.num_items_deleted());
263 EXPECT_EQ(1, result.num_items_modified());
264 EXPECT_EQ(4, result.num_items_before_association());
265 EXPECT_EQ(4, result.num_items_after_association());
266 }
267
205 TEST_F(SupervisedUserSettingsServiceTest, SetLocalSetting) { 268 TEST_F(SupervisedUserSettingsServiceTest, SetLocalSetting) {
206 const base::Value* value = NULL; 269 const base::Value* value = nullptr;
207 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); 270 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
208 271
209 settings_.reset(); 272 settings_.reset();
210 settings_service_.SetLocalSetting( 273 settings_service_.SetLocalSetting(
211 kSettingsName, 274 kSettingsName,
212 scoped_ptr<base::Value>(new base::StringValue(kSettingsValue))); 275 scoped_ptr<base::Value>(new base::StringValue(kSettingsValue)));
213 ASSERT_TRUE(settings_); 276 ASSERT_TRUE(settings_);
214 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); 277 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
215 std::string string_value; 278 std::string string_value;
216 EXPECT_TRUE(value->GetAsString(&string_value)); 279 EXPECT_TRUE(value->GetAsString(&string_value));
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, change.change_type()); 340 EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, change.change_type());
278 VerifySyncDataItem(change.sync_data()); 341 VerifySyncDataItem(change.sync_data());
279 342
280 sync_data = settings_service_.GetAllSyncData( 343 sync_data = settings_service_.GetAllSyncData(
281 syncer::SUPERVISED_USER_SETTINGS); 344 syncer::SUPERVISED_USER_SETTINGS);
282 EXPECT_EQ(4u, sync_data.size()); 345 EXPECT_EQ(4u, sync_data.size());
283 for (const syncer::SyncData& sync_data_item : sync_data) 346 for (const syncer::SyncData& sync_data_item : sync_data)
284 VerifySyncDataItem(sync_data_item); 347 VerifySyncDataItem(sync_data_item);
285 348
286 // The uploaded items should not show up as settings. 349 // The uploaded items should not show up as settings.
287 const base::Value* value = NULL; 350 const base::Value* value = nullptr;
288 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kAtomicItemName, &value)); 351 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kAtomicItemName, &value));
289 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSplitItemName, &value)); 352 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSplitItemName, &value));
290 353
291 // Restarting sync should not create any new changes. 354 // Restarting sync should not create any new changes.
292 settings_service_.StopSyncing(syncer::SUPERVISED_USER_SETTINGS); 355 settings_service_.StopSyncing(syncer::SUPERVISED_USER_SETTINGS);
293 StartSyncing(sync_data); 356 StartSyncing(sync_data);
294 ASSERT_EQ(0u, sync_processor_->changes().size()); 357 ASSERT_EQ(0u, sync_processor_->changes().size());
295 } 358 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698