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

Side by Side Diff: chrome/browser/sync/engine/process_commit_response_command_unittest.cc

Issue 8402014: [Sync] Make GetFirstChildId return a flag indicating success (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleanup comments Created 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <vector> 5 #include <vector>
6 6
7 #include "base/location.h" 7 #include "base/location.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "chrome/browser/sync/engine/mock_model_safe_workers.h" 9 #include "chrome/browser/sync/engine/mock_model_safe_workers.h"
10 #include "chrome/browser/sync/engine/process_commit_response_command.h" 10 #include "chrome/browser/sync/engine/process_commit_response_command.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 // Returns the methandle of the created item in |metahandle_out| if not NULL. 85 // Returns the methandle of the created item in |metahandle_out| if not NULL.
86 void CreateUnsyncedItem(const Id& item_id, 86 void CreateUnsyncedItem(const Id& item_id,
87 const Id& parent_id, 87 const Id& parent_id,
88 const string& name, 88 const string& name,
89 bool is_folder, 89 bool is_folder,
90 syncable::ModelType model_type, 90 syncable::ModelType model_type,
91 int64* metahandle_out) { 91 int64* metahandle_out) {
92 ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); 92 ScopedDirLookup dir(syncdb()->manager(), syncdb()->name());
93 ASSERT_TRUE(dir.good()); 93 ASSERT_TRUE(dir.good());
94 WriteTransaction trans(FROM_HERE, UNITTEST, dir); 94 WriteTransaction trans(FROM_HERE, UNITTEST, dir);
95 Id predecessor_id = dir->GetLastChildId(&trans, parent_id); 95 Id predecessor_id;
96 ASSERT_TRUE(
97 dir->GetLastChildIdForTest(&trans, parent_id, &predecessor_id));
96 MutableEntry entry(&trans, syncable::CREATE, parent_id, name); 98 MutableEntry entry(&trans, syncable::CREATE, parent_id, name);
97 ASSERT_TRUE(entry.good()); 99 ASSERT_TRUE(entry.good());
98 entry.Put(syncable::ID, item_id); 100 entry.Put(syncable::ID, item_id);
99 entry.Put(syncable::BASE_VERSION, 101 entry.Put(syncable::BASE_VERSION,
100 item_id.ServerKnows() ? next_old_revision_++ : 0); 102 item_id.ServerKnows() ? next_old_revision_++ : 0);
101 entry.Put(syncable::IS_UNSYNCED, true); 103 entry.Put(syncable::IS_UNSYNCED, true);
102 entry.Put(syncable::IS_DIR, is_folder); 104 entry.Put(syncable::IS_DIR, is_folder);
103 entry.Put(syncable::IS_DEL, false); 105 entry.Put(syncable::IS_DEL, false);
104 entry.Put(syncable::PARENT_ID, parent_id); 106 entry.Put(syncable::PARENT_ID, parent_id);
105 entry.PutPredecessor(predecessor_id); 107 entry.PutPredecessor(predecessor_id);
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 CreateUnprocessedCommitResult(autofill_id1, id_factory_.root(), 229 CreateUnprocessedCommitResult(autofill_id1, id_factory_.root(),
228 "Autofill 1", syncable::AUTOFILL); 230 "Autofill 1", syncable::AUTOFILL);
229 CreateUnprocessedCommitResult(autofill_id2, id_factory_.root(), 231 CreateUnprocessedCommitResult(autofill_id2, id_factory_.root(),
230 "Autofill 2", syncable::AUTOFILL); 232 "Autofill 2", syncable::AUTOFILL);
231 233
232 command_.ExecuteImpl(session()); 234 command_.ExecuteImpl(session());
233 235
234 ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); 236 ScopedDirLookup dir(syncdb()->manager(), syncdb()->name());
235 ASSERT_TRUE(dir.good()); 237 ASSERT_TRUE(dir.good());
236 ReadTransaction trans(FROM_HERE, dir); 238 ReadTransaction trans(FROM_HERE, dir);
237 Id new_fid = dir->GetFirstChildId(&trans, id_factory_.root()); 239 Id new_fid;
240 ASSERT_TRUE(dir->GetFirstChildId(&trans, id_factory_.root(), &new_fid));
238 ASSERT_FALSE(new_fid.IsRoot()); 241 ASSERT_FALSE(new_fid.IsRoot());
239 EXPECT_TRUE(new_fid.ServerKnows()); 242 EXPECT_TRUE(new_fid.ServerKnows());
240 EXPECT_FALSE(bookmark_folder_id.ServerKnows()); 243 EXPECT_FALSE(bookmark_folder_id.ServerKnows());
241 EXPECT_FALSE(new_fid == bookmark_folder_id); 244 EXPECT_FALSE(new_fid == bookmark_folder_id);
242 Entry b_folder(&trans, syncable::GET_BY_ID, new_fid); 245 Entry b_folder(&trans, syncable::GET_BY_ID, new_fid);
243 ASSERT_TRUE(b_folder.good()); 246 ASSERT_TRUE(b_folder.good());
244 ASSERT_EQ("A bookmark folder", b_folder.Get(NON_UNIQUE_NAME)) 247 ASSERT_EQ("A bookmark folder", b_folder.Get(NON_UNIQUE_NAME))
245 << "Name of bookmark folder should not change."; 248 << "Name of bookmark folder should not change.";
246 ASSERT_LT(0, b_folder.Get(BASE_VERSION)) 249 ASSERT_LT(0, b_folder.Get(BASE_VERSION))
247 << "Bookmark folder should have a valid (positive) server base revision"; 250 << "Bookmark folder should have a valid (positive) server base revision";
248 251
249 // Look at the two bookmarks in bookmark_folder. 252 // Look at the two bookmarks in bookmark_folder.
250 Id cid = dir->GetFirstChildId(&trans, new_fid); 253 Id cid;
254 ASSERT_TRUE(dir->GetFirstChildId(&trans, new_fid, &cid));
251 Entry b1(&trans, syncable::GET_BY_ID, cid); 255 Entry b1(&trans, syncable::GET_BY_ID, cid);
252 Entry b2(&trans, syncable::GET_BY_ID, b1.Get(syncable::NEXT_ID)); 256 Entry b2(&trans, syncable::GET_BY_ID, b1.Get(syncable::NEXT_ID));
253 CheckEntry(&b1, "bookmark 1", syncable::BOOKMARKS, new_fid); 257 CheckEntry(&b1, "bookmark 1", syncable::BOOKMARKS, new_fid);
254 CheckEntry(&b2, "bookmark 2", syncable::BOOKMARKS, new_fid); 258 CheckEntry(&b2, "bookmark 2", syncable::BOOKMARKS, new_fid);
255 ASSERT_TRUE(b2.Get(syncable::NEXT_ID).IsRoot()); 259 ASSERT_TRUE(b2.Get(syncable::NEXT_ID).IsRoot());
256 260
257 // Look at the prefs and autofill items. 261 // Look at the prefs and autofill items.
258 Entry p1(&trans, syncable::GET_BY_ID, b_folder.Get(syncable::NEXT_ID)); 262 Entry p1(&trans, syncable::GET_BY_ID, b_folder.Get(syncable::NEXT_ID));
259 Entry p2(&trans, syncable::GET_BY_ID, p1.Get(syncable::NEXT_ID)); 263 Entry p2(&trans, syncable::GET_BY_ID, p1.Get(syncable::NEXT_ID));
260 CheckEntry(&p1, "Pref 1", syncable::PREFERENCES, id_factory_.root()); 264 CheckEntry(&p1, "Pref 1", syncable::PREFERENCES, id_factory_.root());
(...skipping 20 matching lines...) Expand all
281 // Create the parent folder, a new item whose ID will change on commit. 285 // Create the parent folder, a new item whose ID will change on commit.
282 Id folder_id = id_factory_.NewLocalId(); 286 Id folder_id = id_factory_.NewLocalId();
283 CreateUnprocessedCommitResult(folder_id, id_factory_.root(), "A", 287 CreateUnprocessedCommitResult(folder_id, id_factory_.root(), "A",
284 syncable::BOOKMARKS); 288 syncable::BOOKMARKS);
285 289
286 // Verify that the item is reachable. 290 // Verify that the item is reachable.
287 { 291 {
288 ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); 292 ScopedDirLookup dir(syncdb()->manager(), syncdb()->name());
289 ASSERT_TRUE(dir.good()); 293 ASSERT_TRUE(dir.good());
290 ReadTransaction trans(FROM_HERE, dir); 294 ReadTransaction trans(FROM_HERE, dir);
291 ASSERT_EQ(folder_id, dir->GetFirstChildId(&trans, id_factory_.root())); 295 Id child_id;
296 ASSERT_TRUE(dir->GetFirstChildId(&trans, id_factory_.root(), &child_id));
297 ASSERT_EQ(folder_id, child_id);
292 } 298 }
293 299
294 // The first 25 children of the parent folder will be part of the commit 300 // The first 25 children of the parent folder will be part of the commit
295 // batch. 301 // batch.
296 int batch_size = 25; 302 int batch_size = 25;
297 int i = 0; 303 int i = 0;
298 for (; i < batch_size; ++i) { 304 for (; i < batch_size; ++i) {
299 // Alternate between new and old child items, just for kicks. 305 // Alternate between new and old child items, just for kicks.
300 Id id = (i % 4 < 2) ? id_factory_.NewLocalId() : id_factory_.NewServerId(); 306 Id id = (i % 4 < 2) ? id_factory_.NewLocalId() : id_factory_.NewServerId();
301 CreateUnprocessedCommitResult( 307 CreateUnprocessedCommitResult(
(...skipping 14 matching lines...) Expand all
316 // 25 items. This should apply the values indicated by 322 // 25 items. This should apply the values indicated by
317 // each CommitResponse_EntryResponse to the syncable Entries. All new 323 // each CommitResponse_EntryResponse to the syncable Entries. All new
318 // items in the commit batch should have their IDs changed to server IDs. 324 // items in the commit batch should have their IDs changed to server IDs.
319 command_.ExecuteImpl(session()); 325 command_.ExecuteImpl(session());
320 326
321 ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); 327 ScopedDirLookup dir(syncdb()->manager(), syncdb()->name());
322 ASSERT_TRUE(dir.good()); 328 ASSERT_TRUE(dir.good());
323 ReadTransaction trans(FROM_HERE, dir); 329 ReadTransaction trans(FROM_HERE, dir);
324 // Lookup the parent folder by finding a child of the root. We can't use 330 // Lookup the parent folder by finding a child of the root. We can't use
325 // folder_id here, because it changed during the commit. 331 // folder_id here, because it changed during the commit.
326 Id new_fid = dir->GetFirstChildId(&trans, id_factory_.root()); 332 Id new_fid;
333 ASSERT_TRUE(dir->GetFirstChildId(&trans, id_factory_.root(), &new_fid));
327 ASSERT_FALSE(new_fid.IsRoot()); 334 ASSERT_FALSE(new_fid.IsRoot());
328 EXPECT_TRUE(new_fid.ServerKnows()); 335 EXPECT_TRUE(new_fid.ServerKnows());
329 EXPECT_FALSE(folder_id.ServerKnows()); 336 EXPECT_FALSE(folder_id.ServerKnows());
330 EXPECT_TRUE(new_fid != folder_id); 337 EXPECT_TRUE(new_fid != folder_id);
331 Entry parent(&trans, syncable::GET_BY_ID, new_fid); 338 Entry parent(&trans, syncable::GET_BY_ID, new_fid);
332 ASSERT_TRUE(parent.good()); 339 ASSERT_TRUE(parent.good());
333 ASSERT_EQ("A", parent.Get(NON_UNIQUE_NAME)) 340 ASSERT_EQ("A", parent.Get(NON_UNIQUE_NAME))
334 << "Name of parent folder should not change."; 341 << "Name of parent folder should not change.";
335 ASSERT_LT(0, parent.Get(BASE_VERSION)) 342 ASSERT_LT(0, parent.Get(BASE_VERSION))
336 << "Parent should have a valid (positive) server base revision"; 343 << "Parent should have a valid (positive) server base revision";
337 344
338 Id cid = dir->GetFirstChildId(&trans, new_fid); 345 Id cid;
346 ASSERT_TRUE(dir->GetFirstChildId(&trans, new_fid, &cid));
339 int child_count = 0; 347 int child_count = 0;
340 // Now loop over all the children of the parent folder, verifying 348 // Now loop over all the children of the parent folder, verifying
341 // that they are in their original order by checking to see that their 349 // that they are in their original order by checking to see that their
342 // names are still sequential. 350 // names are still sequential.
343 while (!cid.IsRoot()) { 351 while (!cid.IsRoot()) {
344 SCOPED_TRACE(::testing::Message("Examining item #") << child_count); 352 SCOPED_TRACE(::testing::Message("Examining item #") << child_count);
345 Entry c(&trans, syncable::GET_BY_ID, cid); 353 Entry c(&trans, syncable::GET_BY_ID, cid);
346 DCHECK(c.good()); 354 DCHECK(c.good());
347 ASSERT_EQ(base::StringPrintf("Item %d", child_count), 355 ASSERT_EQ(base::StringPrintf("Item %d", child_count),
348 c.Get(NON_UNIQUE_NAME)); 356 c.Get(NON_UNIQUE_NAME));
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 EXPECT_EQ(2049U, final_monitor_records["ABC"].bookmark_write_count); 439 EXPECT_EQ(2049U, final_monitor_records["ABC"].bookmark_write_count);
432 EXPECT_EQ(4U, final_monitor_records["xyz"].bookmark_write_count); 440 EXPECT_EQ(4U, final_monitor_records["xyz"].bookmark_write_count);
433 } else { 441 } else {
434 EXPECT_TRUE(final_monitor_records.empty()) 442 EXPECT_TRUE(final_monitor_records.empty())
435 << "Should not restore records after successful bookmark commit."; 443 << "Should not restore records after successful bookmark commit.";
436 } 444 }
437 } 445 }
438 446
439 447
440 } // namespace browser_sync 448 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698