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

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: 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, key),
86 key),
87 scoped_ptr<base::Value>(new base::StringValue(value))); 88 scoped_ptr<base::Value>(new base::StringValue(value)));
88 } 89 }
89 90
90 void UploadAtomicItem(const std::string& value) { 91 void UploadAtomicItem(const std::string& value) {
91 atomic_setting_value_.reset(new base::StringValue(value)); 92 atomic_setting_value_.reset(new base::StringValue(value));
92 settings_service_.UploadItem( 93 settings_service_.UploadItem(
93 kAtomicItemName, 94 kAtomicItemName,
94 scoped_ptr<base::Value>(new base::StringValue(value))); 95 scoped_ptr<base::Value>(new base::StringValue(value)));
95 } 96 }
96 97
97 void VerifySyncDataItem(syncer::SyncData sync_data) { 98 void VerifySyncDataItem(syncer::SyncData sync_data) {
98 const sync_pb::ManagedUserSettingSpecifics& supervised_user_setting = 99 const sync_pb::ManagedUserSettingSpecifics& supervised_user_setting =
99 sync_data.GetSpecifics().managed_user_setting(); 100 sync_data.GetSpecifics().managed_user_setting();
100 base::Value* expected_value = NULL; 101 base::Value* expected_value = nullptr;
101 if (supervised_user_setting.name() == kAtomicItemName) { 102 if (supervised_user_setting.name() == kAtomicItemName) {
102 expected_value = atomic_setting_value_.get(); 103 expected_value = atomic_setting_value_.get();
103 } else { 104 } else {
104 EXPECT_TRUE(base::StartsWith(supervised_user_setting.name(), 105 EXPECT_TRUE(base::StartsWith(supervised_user_setting.name(),
105 std::string(kSplitItemName) + ':', 106 std::string(kSplitItemName) + ':',
106 base::CompareCase::SENSITIVE)); 107 base::CompareCase::SENSITIVE));
107 std::string key = 108 std::string key =
108 supervised_user_setting.name().substr(strlen(kSplitItemName) + 1); 109 supervised_user_setting.name().substr(strlen(kSplitItemName) + 1);
109 EXPECT_TRUE(split_items_.GetWithoutPathExpansion(key, &expected_value)); 110 EXPECT_TRUE(split_items_.GetWithoutPathExpansion(key, &expected_value));
110 } 111 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 scoped_ptr<base::DictionaryValue> settings_; 144 scoped_ptr<base::DictionaryValue> settings_;
144 scoped_ptr<base::CallbackList<void( 145 scoped_ptr<base::CallbackList<void(
145 const base::DictionaryValue*)>::Subscription> user_settings_subscription_; 146 const base::DictionaryValue*)>::Subscription> user_settings_subscription_;
146 147
147 scoped_ptr<syncer::FakeSyncChangeProcessor> sync_processor_; 148 scoped_ptr<syncer::FakeSyncChangeProcessor> sync_processor_;
148 }; 149 };
149 150
150 TEST_F(SupervisedUserSettingsServiceTest, ProcessAtomicSetting) { 151 TEST_F(SupervisedUserSettingsServiceTest, ProcessAtomicSetting) {
151 StartSyncing(syncer::SyncDataList()); 152 StartSyncing(syncer::SyncDataList());
152 ASSERT_TRUE(settings_); 153 ASSERT_TRUE(settings_);
153 const base::Value* value = NULL; 154 const base::Value* value = nullptr;
154 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); 155 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
155 156
156 settings_.reset(); 157 settings_.reset();
157 syncer::SyncData data = 158 syncer::SyncData data =
158 SupervisedUserSettingsService::CreateSyncDataForSetting( 159 SupervisedUserSettingsService::CreateSyncDataForSetting(
159 kSettingsName, base::StringValue(kSettingsValue)); 160 kSettingsName, base::StringValue(kSettingsValue));
160 syncer::SyncChangeList change_list; 161 syncer::SyncChangeList change_list;
161 change_list.push_back( 162 change_list.push_back(
162 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data)); 163 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data));
163 syncer::SyncError error = 164 syncer::SyncError error =
164 settings_service_.ProcessSyncChanges(FROM_HERE, change_list); 165 settings_service_.ProcessSyncChanges(FROM_HERE, change_list);
165 EXPECT_FALSE(error.IsSet()) << error.ToString(); 166 EXPECT_FALSE(error.IsSet()) << error.ToString();
166 ASSERT_TRUE(settings_); 167 ASSERT_TRUE(settings_);
167 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); 168 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
168 std::string string_value; 169 std::string string_value;
169 EXPECT_TRUE(value->GetAsString(&string_value)); 170 EXPECT_TRUE(value->GetAsString(&string_value));
170 EXPECT_EQ(kSettingsValue, string_value); 171 EXPECT_EQ(kSettingsValue, string_value);
171 } 172 }
172 173
173 TEST_F(SupervisedUserSettingsServiceTest, ProcessSplitSetting) { 174 TEST_F(SupervisedUserSettingsServiceTest, ProcessSplitSetting) {
174 StartSyncing(syncer::SyncDataList()); 175 StartSyncing(syncer::SyncDataList());
175 ASSERT_TRUE(settings_); 176 ASSERT_TRUE(settings_);
176 const base::Value* value = NULL; 177 const base::Value* value = nullptr;
177 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); 178 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
178 179
179 base::DictionaryValue dict; 180 base::DictionaryValue dict;
180 dict.SetString("foo", "bar"); 181 dict.SetString("foo", "bar");
181 dict.SetBoolean("awesomesauce", true); 182 dict.SetBoolean("awesomesauce", true);
182 dict.SetInteger("eaudecologne", 4711); 183 dict.SetInteger("eaudecologne", 4711);
183 184
184 settings_.reset(); 185 settings_.reset();
185 syncer::SyncChangeList change_list; 186 syncer::SyncChangeList change_list;
186 for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) { 187 for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) {
187 syncer::SyncData data = 188 syncer::SyncData data =
188 SupervisedUserSettingsService::CreateSyncDataForSetting( 189 SupervisedUserSettingsService::CreateSyncDataForSetting(
189 SupervisedUserSettingsService::MakeSplitSettingKey(kSettingsName, 190 SupervisedUserSettingsService::MakeSplitSettingKey(kSettingsName,
190 it.key()), 191 it.key()),
191 it.value()); 192 it.value());
192 change_list.push_back( 193 change_list.push_back(
193 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data)); 194 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data));
194 } 195 }
195 syncer::SyncError error = 196 syncer::SyncError error =
196 settings_service_.ProcessSyncChanges(FROM_HERE, change_list); 197 settings_service_.ProcessSyncChanges(FROM_HERE, change_list);
197 EXPECT_FALSE(error.IsSet()) << error.ToString(); 198 EXPECT_FALSE(error.IsSet()) << error.ToString();
198 ASSERT_TRUE(settings_); 199 ASSERT_TRUE(settings_);
199 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); 200 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
200 const base::DictionaryValue* dict_value = NULL; 201 const base::DictionaryValue* dict_value = nullptr;
201 ASSERT_TRUE(value->GetAsDictionary(&dict_value)); 202 ASSERT_TRUE(value->GetAsDictionary(&dict_value));
202 EXPECT_TRUE(dict_value->Equals(&dict)); 203 EXPECT_TRUE(dict_value->Equals(&dict));
203 } 204 }
204 205
206 TEST_F(SupervisedUserSettingsServiceTest, Merge) {
207 syncer::SyncMergeResult result = StartSyncing(syncer::SyncDataList());
208 EXPECT_EQ(0, result.num_items_added());
209 EXPECT_EQ(0, result.num_items_deleted());
210 EXPECT_EQ(0, result.num_items_modified());
211 EXPECT_EQ(0, result.num_items_before_association());
212 EXPECT_EQ(0, result.num_items_after_association());
213
214 ASSERT_TRUE(settings_);
215 const base::Value* value = nullptr;
216 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
217
218 base::DictionaryValue dict;
Bernhard Bauer 2016/01/28 13:56:33 Could you move this to right after line 227, so it
Deepak 2016/01/29 07:00:29 Done.
219 dict.SetString("foo", "bar");
220 dict.SetInteger("eaudecologne", 4711);
221
222 settings_.reset();
223 syncer::SyncDataList sync_data;
224 // Adding 1 Atomic entry.
225 sync_data.push_back(SupervisedUserSettingsService::CreateSyncDataForSetting(
226 kSettingsName, base::StringValue(kSettingsValue)));
227 // Adding 2 SplitSettings from dictionary.
228 for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) {
229 sync_data.push_back(SupervisedUserSettingsService::CreateSyncDataForSetting(
230 SupervisedUserSettingsService::MakeSplitSettingKey(kSplitItemName,
231 it.key()),
232 it.value()));
233 }
234
235 result = StartSyncing(sync_data);
236 EXPECT_EQ(3, 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(3, result.num_items_after_association());
241
242 settings_service_.StopSyncing(syncer::SUPERVISED_USER_SETTINGS);
243 sync_data.clear();
244
245 // Adding 1 atomic Item in the queue.
246 UploadAtomicItem("hurdle");
247 // Adding 2 split Item in the queue.
248 UploadSplitItem("burp", "baz");
249 UploadSplitItem("item", "second");
250
251 dict.Clear();
252 dict.SetString("foo", "burp");
253 dict.SetString("item", "first");
254 // Adding 2 SplitSettings from dictionary.
255 for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) {
256 sync_data.push_back(SupervisedUserSettingsService::CreateSyncDataForSetting(
257 SupervisedUserSettingsService::MakeSplitSettingKey(kSplitItemName,
258 it.key()),
259 it.value()));
260 }
261
262 result = StartSyncing(sync_data);
263 EXPECT_EQ(0, result.num_items_added());
264 EXPECT_EQ(2, result.num_items_deleted());
265 EXPECT_EQ(2, result.num_items_modified());
266 EXPECT_EQ(3, result.num_items_before_association());
267 EXPECT_EQ(4, result.num_items_after_association());
268 }
269
205 TEST_F(SupervisedUserSettingsServiceTest, SetLocalSetting) { 270 TEST_F(SupervisedUserSettingsServiceTest, SetLocalSetting) {
206 const base::Value* value = NULL; 271 const base::Value* value = nullptr;
207 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); 272 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
208 273
209 settings_.reset(); 274 settings_.reset();
210 settings_service_.SetLocalSetting( 275 settings_service_.SetLocalSetting(
211 kSettingsName, 276 kSettingsName,
212 scoped_ptr<base::Value>(new base::StringValue(kSettingsValue))); 277 scoped_ptr<base::Value>(new base::StringValue(kSettingsValue)));
213 ASSERT_TRUE(settings_); 278 ASSERT_TRUE(settings_);
214 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); 279 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value));
215 std::string string_value; 280 std::string string_value;
216 EXPECT_TRUE(value->GetAsString(&string_value)); 281 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()); 342 EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, change.change_type());
278 VerifySyncDataItem(change.sync_data()); 343 VerifySyncDataItem(change.sync_data());
279 344
280 sync_data = settings_service_.GetAllSyncData( 345 sync_data = settings_service_.GetAllSyncData(
281 syncer::SUPERVISED_USER_SETTINGS); 346 syncer::SUPERVISED_USER_SETTINGS);
282 EXPECT_EQ(4u, sync_data.size()); 347 EXPECT_EQ(4u, sync_data.size());
283 for (const syncer::SyncData& sync_data_item : sync_data) 348 for (const syncer::SyncData& sync_data_item : sync_data)
284 VerifySyncDataItem(sync_data_item); 349 VerifySyncDataItem(sync_data_item);
285 350
286 // The uploaded items should not show up as settings. 351 // The uploaded items should not show up as settings.
287 const base::Value* value = NULL; 352 const base::Value* value = nullptr;
288 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kAtomicItemName, &value)); 353 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kAtomicItemName, &value));
289 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSplitItemName, &value)); 354 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSplitItemName, &value));
290 355
291 // Restarting sync should not create any new changes. 356 // Restarting sync should not create any new changes.
292 settings_service_.StopSyncing(syncer::SUPERVISED_USER_SETTINGS); 357 settings_service_.StopSyncing(syncer::SUPERVISED_USER_SETTINGS);
293 StartSyncing(sync_data); 358 StartSyncing(sync_data);
294 ASSERT_EQ(0u, sync_processor_->changes().size()); 359 ASSERT_EQ(0u, sync_processor_->changes().size());
295 } 360 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698