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

Unified Diff: sync/engine/syncer_unittest.cc

Issue 867793003: Remove dependency on server generated type root folders (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added extra comment about existing type root folder. Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sync/engine/directory_update_handler_unittest.cc ('k') | sync/engine/syncer_util.cc » ('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 17e5f0924472a710e7d5e6ff27b2085baeaa52e2..471df65d03486650e81851fa997d5de506f36061 100644
--- a/sync/engine/syncer_unittest.cc
+++ b/sync/engine/syncer_unittest.cc
@@ -1261,13 +1261,10 @@ TEST_F(SyncerTest, TestPurgeWithJournal) {
}
TEST_F(SyncerTest, ResetVersions) {
- // Download the top level pref node and some pref items.
- mock_server_->AddUpdateDirectory(
- parent_id_, root_id_, "prefs", 1, 10, std::string(), std::string());
- mock_server_->SetLastUpdateServerTag(ModelTypeToRootTag(PREFERENCES));
- mock_server_->AddUpdatePref("id1", parent_id_.GetServerId(), "tag1", 20, 20);
- mock_server_->AddUpdatePref("id2", parent_id_.GetServerId(), "tag2", 30, 30);
- mock_server_->AddUpdatePref("id3", parent_id_.GetServerId(), "tag3", 40, 40);
+ // Download some pref items.
+ mock_server_->AddUpdatePref("id1", "", "tag1", 20, 20);
+ mock_server_->AddUpdatePref("id2", "", "tag2", 30, 30);
+ mock_server_->AddUpdatePref("id3", "", "tag3", 40, 40);
SyncShareNudge();
{
@@ -1280,7 +1277,7 @@ TEST_F(SyncerTest, ResetVersions) {
MutableEntry entry2(&wtrans, GET_BY_CLIENT_TAG, "tag2");
entry2.PutIsUnappliedUpdate(true);
- MutableEntry entry4(&wtrans, CREATE, PREFERENCES, parent_id_, "name");
+ MutableEntry entry4(&wtrans, CREATE, PREFERENCES, "name");
entry4.PutUniqueClientTag("tag4");
entry4.PutIsUnsynced(true);
}
@@ -2486,13 +2483,18 @@ TEST_F(SyncerTest, CommitsUpdateDoesntAlterEntry) {
}
TEST_F(SyncerTest, ParentAndChildBothMatch) {
+ // Disable PREFERENCES which is enabled at the setup step to avoid
+ // auto-creating
+ // PREFERENCES root folder and failing the test below that verifies the number
+ // of children at the root.
+ DisableDatatype(PREFERENCES);
+
const FullModelTypeSet all_types = FullModelTypeSet::All();
syncable::Id parent_id = ids_.NewServerId();
syncable::Id child_id = ids_.NewServerId();
syncable::Id parent_local_id;
syncable::Id child_local_id;
-
{
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory());
MutableEntry parent(&wtrans, CREATE, BOOKMARKS, root_id_, "Folder");
@@ -4086,12 +4088,10 @@ TEST_F(SyncerTest, ClientTagUpdateClashesWithLocalEntry) {
EXPECT_TRUE(ids_.FromNumber(3) < ids_.FromNumber(4));
syncable::Id id1 = TestIdFactory::MakeServer("1");
- mock_server_->AddUpdatePref(id1.GetServerId(), ids_.root().GetServerId(),
- "tag1", 10, 100);
+ mock_server_->AddUpdatePref(id1.GetServerId(), "", "tag1", 10, 100);
syncable::Id id4 = TestIdFactory::MakeServer("4");
- mock_server_->AddUpdatePref(id4.GetServerId(), ids_.root().GetServerId(),
- "tag2", 11, 110);
+ mock_server_->AddUpdatePref(id4.GetServerId(), "", "tag2", 11, 110);
mock_server_->set_conflict_all_commits(true);
@@ -4124,17 +4124,19 @@ TEST_F(SyncerTest, ClientTagUpdateClashesWithLocalEntry) {
EXPECT_EQ("tag2", tag2.GetUniqueClientTag());
tag2_metahandle = tag2.GetMetahandle();
+ // Preferences type root should have been created by the updates above.
+ Entry pref_root(&trans, GET_TYPE_ROOT, PREFERENCES);
+ ASSERT_TRUE(pref_root.good());
+
syncable::Directory::Metahandles children;
- directory()->GetChildHandlesById(&trans, trans.root_id(), &children);
+ directory()->GetChildHandlesById(&trans, pref_root.GetId(), &children);
ASSERT_EQ(2U, children.size());
}
syncable::Id id2 = TestIdFactory::MakeServer("2");
- mock_server_->AddUpdatePref(id2.GetServerId(), ids_.root().GetServerId(),
- "tag1", 12, 120);
+ mock_server_->AddUpdatePref(id2.GetServerId(), "", "tag1", 12, 120);
syncable::Id id3 = TestIdFactory::MakeServer("3");
- mock_server_->AddUpdatePref(id3.GetServerId(), ids_.root().GetServerId(),
- "tag2", 13, 130);
+ mock_server_->AddUpdatePref(id3.GetServerId(), "", "tag2", 13, 130);
SyncShareNudge();
{
@@ -4164,8 +4166,12 @@ TEST_F(SyncerTest, ClientTagUpdateClashesWithLocalEntry) {
EXPECT_EQ("tag2", tag2.GetUniqueClientTag());
EXPECT_EQ(tag2_metahandle, tag2.GetMetahandle());
+ // Preferences type root should have been created by the updates above.
+ Entry pref_root(&trans, GET_TYPE_ROOT, PREFERENCES);
+ ASSERT_TRUE(pref_root.good());
+
syncable::Directory::Metahandles children;
- directory()->GetChildHandlesById(&trans, trans.root_id(), &children);
+ directory()->GetChildHandlesById(&trans, pref_root.GetId(), &children);
ASSERT_EQ(2U, children.size());
}
}
@@ -4177,34 +4183,33 @@ TEST_F(SyncerTest, ClientTagClashWithinBatchOfUpdates) {
EXPECT_TRUE(ids_.FromNumber(201) < ids_.FromNumber(205));
// Least ID: winner.
- mock_server_->AddUpdatePref(ids_.FromNumber(1).GetServerId(),
- ids_.root().GetServerId(), "tag a", 1, 10);
- mock_server_->AddUpdatePref(ids_.FromNumber(2).GetServerId(),
- ids_.root().GetServerId(), "tag a", 11, 110);
- mock_server_->AddUpdatePref(ids_.FromNumber(3).GetServerId(),
- ids_.root().GetServerId(), "tag a", 12, 120);
- mock_server_->AddUpdatePref(ids_.FromNumber(4).GetServerId(),
- ids_.root().GetServerId(), "tag a", 13, 130);
-
- mock_server_->AddUpdatePref(ids_.FromNumber(105).GetServerId(),
- ids_.root().GetServerId(), "tag b", 14, 140);
- mock_server_->AddUpdatePref(ids_.FromNumber(102).GetServerId(),
- ids_.root().GetServerId(), "tag b", 15, 150);
+ mock_server_->AddUpdatePref(ids_.FromNumber(1).GetServerId(), "", "tag a", 1,
+ 10);
+ mock_server_->AddUpdatePref(ids_.FromNumber(2).GetServerId(), "", "tag a", 11,
+ 110);
+ mock_server_->AddUpdatePref(ids_.FromNumber(3).GetServerId(), "", "tag a", 12,
+ 120);
+ mock_server_->AddUpdatePref(ids_.FromNumber(4).GetServerId(), "", "tag a", 13,
+ 130);
+ mock_server_->AddUpdatePref(ids_.FromNumber(105).GetServerId(), "", "tag b",
+ 14, 140);
+ mock_server_->AddUpdatePref(ids_.FromNumber(102).GetServerId(), "", "tag b",
+ 15, 150);
// Least ID: winner.
- mock_server_->AddUpdatePref(ids_.FromNumber(101).GetServerId(),
- ids_.root().GetServerId(), "tag b", 16, 160);
- mock_server_->AddUpdatePref(ids_.FromNumber(104).GetServerId(),
- ids_.root().GetServerId(), "tag b", 17, 170);
-
- mock_server_->AddUpdatePref(ids_.FromNumber(205).GetServerId(),
- ids_.root().GetServerId(), "tag c", 18, 180);
- mock_server_->AddUpdatePref(ids_.FromNumber(202).GetServerId(),
- ids_.root().GetServerId(), "tag c", 19, 190);
- mock_server_->AddUpdatePref(ids_.FromNumber(204).GetServerId(),
- ids_.root().GetServerId(), "tag c", 20, 200);
+ mock_server_->AddUpdatePref(ids_.FromNumber(101).GetServerId(), "", "tag b",
+ 16, 160);
+ mock_server_->AddUpdatePref(ids_.FromNumber(104).GetServerId(), "", "tag b",
+ 17, 170);
+
+ mock_server_->AddUpdatePref(ids_.FromNumber(205).GetServerId(), "", "tag c",
+ 18, 180);
+ mock_server_->AddUpdatePref(ids_.FromNumber(202).GetServerId(), "", "tag c",
+ 19, 190);
+ mock_server_->AddUpdatePref(ids_.FromNumber(204).GetServerId(), "", "tag c",
+ 20, 200);
// Least ID: winner.
- mock_server_->AddUpdatePref(ids_.FromNumber(201).GetServerId(),
- ids_.root().GetServerId(), "tag c", 21, 210);
+ mock_server_->AddUpdatePref(ids_.FromNumber(201).GetServerId(), "", "tag c",
+ 21, 210);
mock_server_->set_conflict_all_commits(true);
@@ -4243,12 +4248,68 @@ TEST_F(SyncerTest, ClientTagClashWithinBatchOfUpdates) {
EXPECT_EQ(21, tag_c.GetBaseVersion());
EXPECT_EQ("tag c", tag_c.GetUniqueClientTag());
+ // Preferences type root should have been created by the updates above.
+ Entry pref_root(&trans, GET_TYPE_ROOT, PREFERENCES);
+ ASSERT_TRUE(pref_root.good());
+
+ // Verify that we have exactly 3 tagged nodes under the type root.
syncable::Directory::Metahandles children;
- directory()->GetChildHandlesById(&trans, trans.root_id(), &children);
+ directory()->GetChildHandlesById(&trans, pref_root.GetId(), &children);
ASSERT_EQ(3U, children.size());
}
}
+// This verifies transition to implicit permanent folders.
+TEST_F(SyncerTest, EntryWithParentIdUpdatedWithEntryWithoutParentId) {
+ // Make sure SPECIFICS root exists so that we can get its parent ID.
+ mock_server_->AddUpdateSpecifics(1, 0, "Folder", 10, 10, true, 1,
+ DefaultPreferencesSpecifics());
+ mock_server_->SetLastUpdateServerTag(ModelTypeToRootTag(PREFERENCES));
+ SyncShareNudge();
+
+ Id pref_root_id;
+ {
+ // Preferences type root should have been created by the update above.
+ // We need it in order to get its ID.
+ syncable::ReadTransaction trans(FROM_HERE, directory());
+ Entry pref_root(&trans, GET_TYPE_ROOT, PREFERENCES);
+ ASSERT_TRUE(pref_root.good());
+ pref_root_id = pref_root.GetId();
+ }
+
+ // Add a preference item with explicit parent ID.
+ mock_server_->AddUpdatePref(ids_.FromNumber(2).GetServerId(),
+ ids_.FromNumber(1).GetServerId(), "tag", 1, 10);
+
+ SyncShareNudge();
+
+ {
+ syncable::ReadTransaction trans(FROM_HERE, directory());
+ Entry pref_entry(&trans, GET_BY_CLIENT_TAG, "tag");
+ ASSERT_TRUE(pref_entry.good());
+ ASSERT_EQ(pref_root_id, pref_entry.GetParentId());
+ }
+
+ // Make another update where the same item get updated, this time
+ // with implicit parent ID.
+ mock_server_->AddUpdatePref(ids_.FromNumber(2).GetServerId(), "", "tag", 2,
+ 20);
+
+ SyncShareNudge();
+
+ {
+ syncable::ReadTransaction trans(FROM_HERE, directory());
+ Entry pref_entry(&trans, GET_BY_CLIENT_TAG, "tag");
+ ASSERT_TRUE(pref_entry.good());
+ ASSERT_TRUE(pref_entry.GetParentId().IsNull());
+
+ // Verify that there is still one node under the type root.
+ syncable::Directory::Metahandles children;
+ directory()->GetChildHandlesById(&trans, pref_root_id, &children);
+ ASSERT_EQ(1U, children.size());
+ }
+}
+
TEST_F(SyncerTest, UniqueServerTagUpdates) {
// As a hurdle, introduce an item whose name is the same as the tag value
// we'll use later.
« no previous file with comments | « sync/engine/directory_update_handler_unittest.cc ('k') | sync/engine/syncer_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698