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

Unified Diff: sync/engine/syncer_unittest.cc

Issue 331863010: sync: Remove support for hierarchy deletions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 5 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
« no previous file with comments | « sync/engine/get_commit_ids.cc ('k') | sync/protocol/sync.proto » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/engine/syncer_unittest.cc
diff --git a/sync/engine/syncer_unittest.cc b/sync/engine/syncer_unittest.cc
index 6f891e8df77f6b98b4a7f8abf4435f11c107c5f9..84f8e0e25d5e720988c13dec36b59a37ebf70a42 100644
--- a/sync/engine/syncer_unittest.cc
+++ b/sync/engine/syncer_unittest.cc
@@ -797,6 +797,64 @@ TEST_F(SyncerTest, GetCommitIdsFiltersUnreadyEntries) {
}
}
+// This test uses internal knowledge of the directory to test correctness of
+// GetCommitIds. In almost every other test, the hierarchy is created from
+// parent to child order, and so parents always have metahandles that are
+// smaller than those of their children. This makes it very difficult to test
+// some GetCommitIds edge cases, since it uses metahandle ordering as
+// a starting point.
+TEST_F(SyncerTest, GetCommitIds_VerifyDeletionCommitOrder) {
+ {
+ WriteTransaction trans(FROM_HERE, UNITTEST, directory());
+
+ // Create four bookmarks folders at the root node.
+ for (int i = 1; i < 5; ++i) {
+ MutableEntry entry(&trans, CREATE, BOOKMARKS, trans.root_id(), "");
+ entry.PutId(ids_.FromNumber(i));
+ entry.PutIsDir(true);
+ entry.PutBaseVersion(5);
+ entry.PutServerVersion(5);
+ entry.PutServerParentId(trans.root_id());
+ entry.PutServerIsDir(true);
+ entry.PutIsUnsynced(true);
+ entry.PutSpecifics(DefaultBookmarkSpecifics());
+ }
+
+ // Now iterate in reverse order make a hierarchy of them.
+ // While we're at it, also mark them as deleted.
+ syncable::Id parent_id = trans.root_id();
+ for (int i = 4; i > 0; --i) {
+ MutableEntry entry(&trans, GET_BY_ID, ids_.FromNumber(i));
+ entry.PutParentId(parent_id);
+ entry.PutServerParentId(parent_id);
+ entry.PutIsDel(true);
+ parent_id = ids_.FromNumber(i);
+ }
+ }
+
+ {
+ // Run GetCommitIds, the function being tested.
+ syncable::Directory::Metahandles result_handles;
+ syncable::ReadTransaction trans(FROM_HERE, directory());
+ GetCommitIdsForType(&trans, BOOKMARKS, 100, &result_handles);
+
+ // Now verify the output. We expect four results in child to parent order.
+ ASSERT_EQ(4U, result_handles.size());
+
+ Entry entry0(&trans, GET_BY_HANDLE, result_handles[0]);
+ EXPECT_EQ(ids_.FromNumber(1), entry0.GetId());
+
+ Entry entry1(&trans, GET_BY_HANDLE, result_handles[1]);
+ EXPECT_EQ(ids_.FromNumber(2), entry1.GetId());
+
+ Entry entry2(&trans, GET_BY_HANDLE, result_handles[2]);
+ EXPECT_EQ(ids_.FromNumber(3), entry2.GetId());
+
+ Entry entry3(&trans, GET_BY_HANDLE, result_handles[3]);
+ EXPECT_EQ(ids_.FromNumber(4), entry3.GetId());
+ }
+}
+
TEST_F(SyncerTest, EncryptionAwareConflicts) {
KeyParams key_params = {"localhost", "dummy", "foobar"};
Cryptographer other_cryptographer(&encryptor_);
@@ -1288,8 +1346,8 @@ TEST_F(SyncerTest,
TEST_F(SyncerTest, TestCommitListOrderingTwoLongDeletedItemWithUnroll) {
CommitOrderingTest items[] = {
- {0, ids_.FromNumber(1000), ids_.FromNumber(0), {DELETED, OLD_MTIME}},
- {-1, ids_.FromNumber(1001), ids_.FromNumber(1000), {DELETED, OLD_MTIME}},
+ {1, ids_.FromNumber(1000), ids_.FromNumber(0), {DELETED, OLD_MTIME}},
+ {0, ids_.FromNumber(1001), ids_.FromNumber(1000), {DELETED, OLD_MTIME}},
CommitOrderingTest::MakeLastCommitItem(),
};
RunCommitOrderingTest(items);
@@ -1298,9 +1356,9 @@ TEST_F(SyncerTest, TestCommitListOrderingTwoLongDeletedItemWithUnroll) {
TEST_F(SyncerTest, TestCommitListOrdering3LongDeletedItemsWithSizeLimit) {
context_->set_max_commit_batch_size(2);
CommitOrderingTest items[] = {
- {0, ids_.FromNumber(1000), ids_.FromNumber(0), {DELETED, OLD_MTIME}},
- {1, ids_.FromNumber(1001), ids_.FromNumber(0), {DELETED, OLD_MTIME}},
- {2, ids_.FromNumber(1002), ids_.FromNumber(0), {DELETED, OLD_MTIME}},
+ {2, ids_.FromNumber(1000), ids_.FromNumber(0), {DELETED, OLD_MTIME}},
+ {1, ids_.FromNumber(1001), ids_.FromNumber(1000), {DELETED, OLD_MTIME}},
+ {0, ids_.FromNumber(1002), ids_.FromNumber(1001), {DELETED, OLD_MTIME}},
CommitOrderingTest::MakeLastCommitItem(),
};
RunCommitOrderingTest(items);
@@ -1308,8 +1366,8 @@ TEST_F(SyncerTest, TestCommitListOrdering3LongDeletedItemsWithSizeLimit) {
TEST_F(SyncerTest, TestCommitListOrderingTwoDeletedItemsWithUnroll) {
CommitOrderingTest items[] = {
- {0, ids_.FromNumber(1000), ids_.FromNumber(0), {DELETED}},
- {-1, ids_.FromNumber(1001), ids_.FromNumber(1000), {DELETED}},
+ {1, ids_.FromNumber(1000), ids_.FromNumber(0), {DELETED}},
+ {0, ids_.FromNumber(1001), ids_.FromNumber(1000), {DELETED}},
CommitOrderingTest::MakeLastCommitItem(),
};
RunCommitOrderingTest(items);
@@ -1317,11 +1375,11 @@ TEST_F(SyncerTest, TestCommitListOrderingTwoDeletedItemsWithUnroll) {
TEST_F(SyncerTest, TestCommitListOrderingComplexDeletionScenario) {
CommitOrderingTest items[] = {
- { 0, ids_.FromNumber(1000), ids_.FromNumber(0), {DELETED, OLD_MTIME}},
+ {2, ids_.FromNumber(1000), ids_.FromNumber(0), {DELETED, OLD_MTIME}},
{-1, ids_.FromNumber(1001), ids_.FromNumber(0), {SYNCED}},
{1, ids_.FromNumber(1002), ids_.FromNumber(1001), {DELETED, OLD_MTIME}},
{-1, ids_.FromNumber(1003), ids_.FromNumber(1001), {SYNCED}},
- {2, ids_.FromNumber(1004), ids_.FromNumber(1003), {DELETED}},
+ {0, ids_.FromNumber(1004), ids_.FromNumber(1003), {DELETED}},
CommitOrderingTest::MakeLastCommitItem(),
};
RunCommitOrderingTest(items);
@@ -1330,12 +1388,12 @@ TEST_F(SyncerTest, TestCommitListOrderingComplexDeletionScenario) {
TEST_F(SyncerTest,
TestCommitListOrderingComplexDeletionScenarioWith2RecentDeletes) {
CommitOrderingTest items[] = {
- { 0, ids_.FromNumber(1000), ids_.FromNumber(0), {DELETED, OLD_MTIME}},
+ {3, ids_.FromNumber(1000), ids_.FromNumber(0), {DELETED, OLD_MTIME}},
{-1, ids_.FromNumber(1001), ids_.FromNumber(0), {SYNCED}},
- {1, ids_.FromNumber(1002), ids_.FromNumber(1001), {DELETED, OLD_MTIME}},
+ {2, ids_.FromNumber(1002), ids_.FromNumber(1001), {DELETED, OLD_MTIME}},
{-1, ids_.FromNumber(1003), ids_.FromNumber(1001), {SYNCED}},
- {2, ids_.FromNumber(1004), ids_.FromNumber(1003), {DELETED}},
- {3, ids_.FromNumber(1005), ids_.FromNumber(1003), {DELETED}},
+ {1, ids_.FromNumber(1004), ids_.FromNumber(1003), {DELETED}},
+ {0, ids_.FromNumber(1005), ids_.FromNumber(1003), {DELETED}},
CommitOrderingTest::MakeLastCommitItem(),
};
RunCommitOrderingTest(items);
« no previous file with comments | « sync/engine/get_commit_ids.cc ('k') | sync/protocol/sync.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698