Index: sync/engine/syncer_unittest.cc |
diff --git a/sync/engine/syncer_unittest.cc b/sync/engine/syncer_unittest.cc |
index df4196022489bbd6f553bcdc2beb5a524d0ea49c..15564571ad4a46e1e0d420d58068fc76b1af4519 100644 |
--- a/sync/engine/syncer_unittest.cc |
+++ b/sync/engine/syncer_unittest.cc |
@@ -33,7 +33,6 @@ |
#include "sync/engine/traffic_recorder.h" |
#include "sync/internal_api/public/base/model_type.h" |
#include "sync/internal_api/public/engine/model_safe_worker.h" |
-#include "sync/internal_api/public/base/node_ordinal.h" |
#include "sync/protocol/bookmark_specifics.pb.h" |
#include "sync/protocol/nigori_specifics.pb.h" |
#include "sync/protocol/preference_specifics.pb.h" |
@@ -58,10 +57,12 @@ |
using base::TimeDelta; |
+using std::count; |
using std::map; |
using std::multimap; |
using std::set; |
using std::string; |
+using std::vector; |
namespace syncer { |
@@ -78,7 +79,8 @@ using syncable::MutableEntry; |
using syncable::WriteTransaction; |
using syncable::BASE_VERSION; |
-using syncable::CREATE; |
+using syncable::CREATE_BOOKMARK; |
+using syncable::CREATE_UNIQUE; |
using syncable::GET_BY_HANDLE; |
using syncable::GET_BY_ID; |
using syncable::GET_BY_CLIENT_TAG; |
@@ -90,14 +92,11 @@ using syncable::IS_UNAPPLIED_UPDATE; |
using syncable::IS_UNSYNCED; |
using syncable::META_HANDLE; |
using syncable::MTIME; |
-using syncable::NEXT_ID; |
using syncable::NON_UNIQUE_NAME; |
using syncable::PARENT_ID; |
-using syncable::PREV_ID; |
using syncable::BASE_SERVER_SPECIFICS; |
using syncable::SERVER_IS_DEL; |
using syncable::SERVER_PARENT_ID; |
-using syncable::SERVER_ORDINAL_IN_PARENT; |
using syncable::SERVER_SPECIFICS; |
using syncable::SERVER_VERSION; |
using syncable::UNIQUE_CLIENT_TAG; |
@@ -357,7 +356,7 @@ class SyncerTest : public testing::Test, |
} |
string utf8_name = test->id.GetServerId(); |
string name(utf8_name.begin(), utf8_name.end()); |
- MutableEntry entry(&trans, CREATE, test->parent_id, name); |
+ MutableEntry entry(&trans, CREATE_BOOKMARK, test->parent_id, name); |
entry.Put(syncable::ID, test->id); |
if (test->id.ServerKnows()) { |
@@ -460,7 +459,7 @@ class SyncerTest : public testing::Test, |
int64 CreateUnsyncedDirectory(const string& entry_name, |
const syncable::Id& id) { |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry entry(&wtrans, syncable::CREATE, wtrans.root_id(), |
+ MutableEntry entry(&wtrans, syncable::CREATE_BOOKMARK, wtrans.root_id(), |
entry_name); |
EXPECT_TRUE(entry.good()); |
entry.Put(syncable::IS_UNSYNCED, true); |
@@ -850,9 +849,18 @@ TEST_F(SyncerTest, EncryptionAwareConflicts) { |
EXPECT_TRUE(GetCryptographer(&wtrans)->has_pending_keys()); |
} |
- mock_server_->AddUpdateSpecifics(1, 0, "A", 10, 10, true, 0, bookmark); |
- mock_server_->AddUpdateSpecifics(2, 1, "B", 10, 10, false, 2, bookmark); |
- mock_server_->AddUpdateSpecifics(3, 1, "C", 10, 10, false, 1, bookmark); |
+ // We need to remember the exact position of our local items, so we can |
+ // make updates that do not modify those positions. |
+ UniquePosition pos1; |
+ UniquePosition pos2; |
+ UniquePosition pos3; |
+ |
+ mock_server_->AddBookmarkUpdateSpecifics( |
+ 1, 0, "A", 10, 10, true, 0, bookmark); |
+ mock_server_->AddBookmarkUpdateSpecifics( |
+ 2, 1, "B", 10, 10, false, 2, bookmark); |
+ mock_server_->AddBookmarkUpdateSpecifics( |
+ 3, 1, "C", 10, 10, false, 1, bookmark); |
mock_server_->AddUpdateSpecifics(4, 0, "D", 10, 10, false, 0, pref); |
SyncShareNudge(); |
{ |
@@ -862,16 +870,25 @@ TEST_F(SyncerTest, EncryptionAwareConflicts) { |
VERIFY_ENTRY(2, false, false, false, 1, 10, 10, ids_, &rtrans); |
VERIFY_ENTRY(3, false, false, false, 1, 10, 10, ids_, &rtrans); |
VERIFY_ENTRY(4, false, false, false, 0, 10, 10, ids_, &rtrans); |
+ |
+ Entry entry1(&rtrans, syncable::GET_BY_ID, ids_.FromNumber(1)); |
+ ASSERT_TRUE(entry1.Get(syncable::UNIQUE_POSITION).Equals( |
+ entry1.Get(syncable::SERVER_UNIQUE_POSITION))); |
+ pos1 = entry1.Get(syncable::UNIQUE_POSITION); |
+ Entry entry2(&rtrans, syncable::GET_BY_ID, ids_.FromNumber(2)); |
+ pos2 = entry2.Get(syncable::UNIQUE_POSITION); |
+ Entry entry3(&rtrans, syncable::GET_BY_ID, ids_.FromNumber(3)); |
+ pos3 = entry3.Get(syncable::UNIQUE_POSITION); |
} |
// Server side encryption will not be applied due to undecryptable data. |
// At this point, BASE_SERVER_SPECIFICS should be filled for all four items. |
- mock_server_->AddUpdateSpecifics(1, 0, kEncryptedString, 20, 20, true, 0, |
- encrypted_bookmark); |
- mock_server_->AddUpdateSpecifics(2, 1, kEncryptedString, 20, 20, false, 2, |
- encrypted_bookmark); |
- mock_server_->AddUpdateSpecifics(3, 1, kEncryptedString, 20, 20, false, 1, |
- encrypted_bookmark); |
+ mock_server_->AddBookmarkUpdateSpecifics( |
+ 1, 0, kEncryptedString, 20, 20, true, pos1, encrypted_bookmark); |
+ mock_server_->AddBookmarkUpdateSpecifics( |
+ 2, 1, kEncryptedString, 20, 20, false, pos2, encrypted_bookmark); |
+ mock_server_->AddBookmarkUpdateSpecifics( |
+ 3, 1, kEncryptedString, 20, 20, false, pos3, encrypted_bookmark); |
mock_server_->AddUpdateSpecifics(4, 0, kEncryptedString, 20, 20, false, 0, |
encrypted_pref); |
SyncShareNudge(); |
@@ -887,10 +904,10 @@ TEST_F(SyncerTest, EncryptionAwareConflicts) { |
// Server side change that don't modify anything should not affect |
// BASE_SERVER_SPECIFICS (such as name changes and mtime changes). |
- mock_server_->AddUpdateSpecifics(1, 0, kEncryptedString, 30, 30, true, 0, |
- encrypted_bookmark); |
- mock_server_->AddUpdateSpecifics(2, 1, kEncryptedString, 30, 30, false, 2, |
- encrypted_bookmark); |
+ mock_server_->AddBookmarkUpdateSpecifics( |
+ 1, 0, kEncryptedString, 30, 30, true, pos1, encrypted_bookmark); |
+ mock_server_->AddBookmarkUpdateSpecifics( |
+ 2, 1, kEncryptedString, 30, 30, false, pos2, encrypted_bookmark); |
// Item 3 doesn't change. |
mock_server_->AddUpdateSpecifics(4, 0, kEncryptedString, 30, 30, false, 0, |
encrypted_pref); |
@@ -908,10 +925,11 @@ TEST_F(SyncerTest, EncryptionAwareConflicts) { |
// Positional changes, parent changes, and specifics changes should reset |
// BASE_SERVER_SPECIFICS. |
// Became unencrypted. |
- mock_server_->AddUpdateSpecifics(1, 0, "A", 40, 40, true, 0, bookmark); |
+ mock_server_->AddBookmarkUpdateSpecifics( |
+ 1, 0, "A", 40, 40, true, 0, bookmark); |
// Reordered to after item 2. |
- mock_server_->AddUpdateSpecifics(3, 1, kEncryptedString, 30, 30, false, 3, |
- encrypted_bookmark); |
+ mock_server_->AddBookmarkUpdateSpecifics( |
+ 3, 1, kEncryptedString, 30, 30, false, 3, encrypted_bookmark); |
SyncShareNudge(); |
{ |
// Items 2 and 4 should be the only ones with BASE_SERVER_SPECIFICS set. |
@@ -989,7 +1007,7 @@ TEST_F(SyncerTest, EncryptionAwareConflicts) { |
TEST_F(SyncerTest, TestGetUnsyncedAndSimpleCommit) { |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), |
+ MutableEntry parent(&wtrans, syncable::CREATE_BOOKMARK, wtrans.root_id(), |
"Pete"); |
ASSERT_TRUE(parent.good()); |
parent.Put(syncable::IS_UNSYNCED, true); |
@@ -997,7 +1015,7 @@ TEST_F(SyncerTest, TestGetUnsyncedAndSimpleCommit) { |
parent.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
parent.Put(syncable::BASE_VERSION, 1); |
parent.Put(syncable::ID, parent_id_); |
- MutableEntry child(&wtrans, syncable::CREATE, parent_id_, "Pete"); |
+ MutableEntry child(&wtrans, syncable::CREATE_BOOKMARK, parent_id_, "Pete"); |
ASSERT_TRUE(child.good()); |
child.Put(syncable::ID, child_id_); |
child.Put(syncable::BASE_VERSION, 1); |
@@ -1022,20 +1040,22 @@ TEST_F(SyncerTest, TestPurgeWhileUnsynced) { |
syncable::Id pref_node_id = TestIdFactory::MakeServer("Tim"); |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), "Pete"); |
+ MutableEntry parent( |
+ &wtrans, syncable::CREATE_BOOKMARK, wtrans.root_id(), "Pete"); |
ASSERT_TRUE(parent.good()); |
parent.Put(syncable::IS_UNSYNCED, true); |
parent.Put(syncable::IS_DIR, true); |
parent.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
parent.Put(syncable::BASE_VERSION, 1); |
parent.Put(syncable::ID, parent_id_); |
- MutableEntry child(&wtrans, syncable::CREATE, parent_id_, "Pete"); |
+ MutableEntry child(&wtrans, syncable::CREATE_BOOKMARK, parent_id_, "Pete"); |
ASSERT_TRUE(child.good()); |
child.Put(syncable::ID, child_id_); |
child.Put(syncable::BASE_VERSION, 1); |
WriteTestDataToEntry(&wtrans, &child); |
- MutableEntry parent2(&wtrans, syncable::CREATE, wtrans.root_id(), "Tim"); |
+ MutableEntry parent2( |
+ &wtrans, syncable::CREATE_BOOKMARK, wtrans.root_id(), "Tim"); |
ASSERT_TRUE(parent2.good()); |
parent2.Put(syncable::IS_UNSYNCED, true); |
parent2.Put(syncable::IS_DIR, true); |
@@ -1069,7 +1089,8 @@ TEST_F(SyncerTest, TestPurgeWhileUnapplied) { |
// Similar to above, but for unapplied items. Bug 49278. |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), "Pete"); |
+ MutableEntry parent( |
+ &wtrans, syncable::CREATE_BOOKMARK, wtrans.root_id(), "Pete"); |
ASSERT_TRUE(parent.good()); |
parent.Put(syncable::IS_UNAPPLIED_UPDATE, true); |
parent.Put(syncable::IS_DIR, true); |
@@ -1224,7 +1245,7 @@ TEST_F(SyncerTest, TestCommitListOrderingWithNesting) { |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
{ |
- MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), |
+ MutableEntry parent(&wtrans, syncable::CREATE_BOOKMARK, wtrans.root_id(), |
"Bob"); |
ASSERT_TRUE(parent.good()); |
parent.Put(syncable::IS_UNSYNCED, true); |
@@ -1232,16 +1253,16 @@ TEST_F(SyncerTest, TestCommitListOrderingWithNesting) { |
parent.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
parent.Put(syncable::ID, ids_.FromNumber(100)); |
parent.Put(syncable::BASE_VERSION, 1); |
- MutableEntry child(&wtrans, syncable::CREATE, ids_.FromNumber(100), |
- "Bob"); |
+ MutableEntry child( |
+ &wtrans, syncable::CREATE_BOOKMARK, ids_.FromNumber(100), "Bob"); |
ASSERT_TRUE(child.good()); |
child.Put(syncable::IS_UNSYNCED, true); |
child.Put(syncable::IS_DIR, true); |
child.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
child.Put(syncable::ID, ids_.FromNumber(101)); |
child.Put(syncable::BASE_VERSION, 1); |
- MutableEntry grandchild(&wtrans, syncable::CREATE, ids_.FromNumber(101), |
- "Bob"); |
+ MutableEntry grandchild( |
+ &wtrans, syncable::CREATE_BOOKMARK, ids_.FromNumber(101), "Bob"); |
ASSERT_TRUE(grandchild.good()); |
grandchild.Put(syncable::ID, ids_.FromNumber(102)); |
grandchild.Put(syncable::IS_UNSYNCED, true); |
@@ -1251,7 +1272,7 @@ TEST_F(SyncerTest, TestCommitListOrderingWithNesting) { |
{ |
// Create three deleted items which deletions we expect to be sent to the |
// server. |
- MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), |
+ MutableEntry parent(&wtrans, syncable::CREATE_BOOKMARK, wtrans.root_id(), |
"Pete"); |
ASSERT_TRUE(parent.good()); |
parent.Put(syncable::ID, ids_.FromNumber(103)); |
@@ -1261,8 +1282,8 @@ TEST_F(SyncerTest, TestCommitListOrderingWithNesting) { |
parent.Put(syncable::IS_DEL, true); |
parent.Put(syncable::BASE_VERSION, 1); |
parent.Put(syncable::MTIME, now_minus_2h); |
- MutableEntry child(&wtrans, syncable::CREATE, ids_.FromNumber(103), |
- "Pete"); |
+ MutableEntry child( |
+ &wtrans, syncable::CREATE_BOOKMARK, ids_.FromNumber(103), "Pete"); |
ASSERT_TRUE(child.good()); |
child.Put(syncable::ID, ids_.FromNumber(104)); |
child.Put(syncable::IS_UNSYNCED, true); |
@@ -1271,8 +1292,8 @@ TEST_F(SyncerTest, TestCommitListOrderingWithNesting) { |
child.Put(syncable::IS_DEL, true); |
child.Put(syncable::BASE_VERSION, 1); |
child.Put(syncable::MTIME, now_minus_2h); |
- MutableEntry grandchild(&wtrans, syncable::CREATE, ids_.FromNumber(104), |
- "Pete"); |
+ MutableEntry grandchild( |
+ &wtrans, syncable::CREATE_BOOKMARK, ids_.FromNumber(104), "Pete"); |
ASSERT_TRUE(grandchild.good()); |
grandchild.Put(syncable::ID, ids_.FromNumber(105)); |
grandchild.Put(syncable::IS_UNSYNCED, true); |
@@ -1301,32 +1322,37 @@ TEST_F(SyncerTest, TestCommitListOrderingWithNesting) { |
} |
TEST_F(SyncerTest, TestCommitListOrderingWithNewItems) { |
+ syncable::Id parent1_id = ids_.MakeServer("p1"); |
+ syncable::Id parent2_id = ids_.MakeServer("p2"); |
+ |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), "1"); |
+ MutableEntry parent( |
+ &wtrans, syncable::CREATE_BOOKMARK, wtrans.root_id(), "1"); |
ASSERT_TRUE(parent.good()); |
parent.Put(syncable::IS_UNSYNCED, true); |
parent.Put(syncable::IS_DIR, true); |
parent.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
- parent.Put(syncable::ID, parent_id_); |
- MutableEntry child(&wtrans, syncable::CREATE, wtrans.root_id(), "2"); |
+ parent.Put(syncable::ID, parent1_id); |
+ MutableEntry child( |
+ &wtrans, syncable::CREATE_BOOKMARK, wtrans.root_id(), "2"); |
ASSERT_TRUE(child.good()); |
child.Put(syncable::IS_UNSYNCED, true); |
child.Put(syncable::IS_DIR, true); |
child.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
- child.Put(syncable::ID, child_id_); |
+ child.Put(syncable::ID, parent2_id); |
parent.Put(syncable::BASE_VERSION, 1); |
child.Put(syncable::BASE_VERSION, 1); |
} |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&wtrans, syncable::CREATE, parent_id_, "A"); |
+ MutableEntry parent(&wtrans, syncable::CREATE_BOOKMARK, parent1_id, "A"); |
ASSERT_TRUE(parent.good()); |
parent.Put(syncable::IS_UNSYNCED, true); |
parent.Put(syncable::IS_DIR, true); |
parent.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
parent.Put(syncable::ID, ids_.FromNumber(102)); |
- MutableEntry child(&wtrans, syncable::CREATE, parent_id_, "B"); |
+ MutableEntry child(&wtrans, syncable::CREATE_BOOKMARK, parent1_id, "B"); |
ASSERT_TRUE(child.good()); |
child.Put(syncable::IS_UNSYNCED, true); |
child.Put(syncable::IS_DIR, true); |
@@ -1336,13 +1362,13 @@ TEST_F(SyncerTest, TestCommitListOrderingWithNewItems) { |
} |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&wtrans, syncable::CREATE, child_id_, "A"); |
+ MutableEntry parent(&wtrans, syncable::CREATE_BOOKMARK, parent2_id, "A"); |
ASSERT_TRUE(parent.good()); |
parent.Put(syncable::IS_UNSYNCED, true); |
parent.Put(syncable::IS_DIR, true); |
parent.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
parent.Put(syncable::ID, ids_.FromNumber(-104)); |
- MutableEntry child(&wtrans, syncable::CREATE, child_id_, "B"); |
+ MutableEntry child(&wtrans, syncable::CREATE_BOOKMARK, parent2_id, "B"); |
ASSERT_TRUE(child.good()); |
child.Put(syncable::IS_UNSYNCED, true); |
child.Put(syncable::IS_DIR, true); |
@@ -1353,13 +1379,29 @@ TEST_F(SyncerTest, TestCommitListOrderingWithNewItems) { |
SyncShareNudge(); |
ASSERT_EQ(6u, mock_server_->committed_ids().size()); |
- // If this test starts failing, be aware other sort orders could be valid. |
- EXPECT_TRUE(parent_id_ == mock_server_->committed_ids()[0]); |
- EXPECT_TRUE(child_id_ == mock_server_->committed_ids()[1]); |
- EXPECT_TRUE(ids_.FromNumber(102) == mock_server_->committed_ids()[2]); |
- EXPECT_TRUE(ids_.FromNumber(-103) == mock_server_->committed_ids()[3]); |
- EXPECT_TRUE(ids_.FromNumber(-104) == mock_server_->committed_ids()[4]); |
- EXPECT_TRUE(ids_.FromNumber(105) == mock_server_->committed_ids()[5]); |
+ |
+ // This strange iteration and std::count() usage is to allow the order to |
+ // vary. All we really care about is that parent1_id and parent2_id are the |
+ // first two IDs, and that the children make up the next four. Other than |
+ // that, ordering doesn't matter. |
+ |
+ vector<syncable::Id>::const_iterator i = |
+ mock_server_->committed_ids().begin(); |
+ vector<syncable::Id>::const_iterator parents_begin = i; |
+ i++; |
+ i++; |
+ vector<syncable::Id>::const_iterator parents_end = i; |
+ vector<syncable::Id>::const_iterator children_begin = i; |
+ vector<syncable::Id>::const_iterator children_end = |
+ mock_server_->committed_ids().end(); |
+ |
+ EXPECT_EQ(1, count(parents_begin, parents_end, parent1_id)); |
+ EXPECT_EQ(1, count(parents_begin, parents_end, parent2_id)); |
+ |
+ EXPECT_EQ(1, count(children_begin, children_end, ids_.FromNumber(-103))); |
+ EXPECT_EQ(1, count(children_begin, children_end, ids_.FromNumber(102))); |
+ EXPECT_EQ(1, count(children_begin, children_end, ids_.FromNumber(105))); |
+ EXPECT_EQ(1, count(children_begin, children_end, ids_.FromNumber(-104))); |
} |
TEST_F(SyncerTest, TestCommitListOrderingCounterexample) { |
@@ -1367,18 +1409,19 @@ TEST_F(SyncerTest, TestCommitListOrderingCounterexample) { |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), "P"); |
+ MutableEntry parent( |
+ &wtrans, syncable::CREATE_BOOKMARK, wtrans.root_id(), "P"); |
ASSERT_TRUE(parent.good()); |
parent.Put(syncable::IS_UNSYNCED, true); |
parent.Put(syncable::IS_DIR, true); |
parent.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
parent.Put(syncable::ID, parent_id_); |
- MutableEntry child1(&wtrans, syncable::CREATE, parent_id_, "1"); |
+ MutableEntry child1(&wtrans, syncable::CREATE_BOOKMARK, parent_id_, "1"); |
ASSERT_TRUE(child1.good()); |
child1.Put(syncable::IS_UNSYNCED, true); |
child1.Put(syncable::ID, child_id_); |
child1.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
- MutableEntry child2(&wtrans, syncable::CREATE, parent_id_, "2"); |
+ MutableEntry child2(&wtrans, syncable::CREATE_BOOKMARK, parent_id_, "2"); |
ASSERT_TRUE(child2.good()); |
child2.Put(syncable::IS_UNSYNCED, true); |
child2.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
@@ -1391,10 +1434,15 @@ TEST_F(SyncerTest, TestCommitListOrderingCounterexample) { |
SyncShareNudge(); |
ASSERT_EQ(3u, mock_server_->committed_ids().size()); |
- // If this test starts failing, be aware other sort orders could be valid. |
EXPECT_TRUE(parent_id_ == mock_server_->committed_ids()[0]); |
- EXPECT_TRUE(child_id_ == mock_server_->committed_ids()[1]); |
- EXPECT_TRUE(child2_id == mock_server_->committed_ids()[2]); |
+ // There are two possible valid orderings. |
+ if (child2_id == mock_server_->committed_ids()[1]) { |
+ EXPECT_TRUE(child2_id == mock_server_->committed_ids()[1]); |
+ EXPECT_TRUE(child_id_ == mock_server_->committed_ids()[2]); |
+ } else { |
+ EXPECT_TRUE(child_id_ == mock_server_->committed_ids()[1]); |
+ EXPECT_TRUE(child2_id == mock_server_->committed_ids()[2]); |
+ } |
} |
TEST_F(SyncerTest, TestCommitListOrderingAndNewParent) { |
@@ -1404,7 +1452,7 @@ TEST_F(SyncerTest, TestCommitListOrderingAndNewParent) { |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), |
+ MutableEntry parent(&wtrans, syncable::CREATE_BOOKMARK, wtrans.root_id(), |
parent1_name); |
ASSERT_TRUE(parent.good()); |
parent.Put(syncable::IS_UNSYNCED, true); |
@@ -1418,14 +1466,16 @@ TEST_F(SyncerTest, TestCommitListOrderingAndNewParent) { |
syncable::Id child_id = ids_.NewServerId(); |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent2(&wtrans, syncable::CREATE, parent_id_, parent2_name); |
+ MutableEntry parent2( |
+ &wtrans, syncable::CREATE_BOOKMARK, parent_id_, parent2_name); |
ASSERT_TRUE(parent2.good()); |
parent2.Put(syncable::IS_UNSYNCED, true); |
parent2.Put(syncable::IS_DIR, true); |
parent2.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
parent2.Put(syncable::ID, parent2_id); |
- MutableEntry child(&wtrans, syncable::CREATE, parent2_id, child_name); |
+ MutableEntry child( |
+ &wtrans, syncable::CREATE_BOOKMARK, parent2_id, child_name); |
ASSERT_TRUE(child.good()); |
child.Put(syncable::IS_UNSYNCED, true); |
child.Put(syncable::IS_DIR, true); |
@@ -1472,7 +1522,7 @@ TEST_F(SyncerTest, TestCommitListOrderingAndNewParentAndChild) { |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
MutableEntry parent(&wtrans, |
- syncable::CREATE, |
+ syncable::CREATE_BOOKMARK, |
wtrans.root_id(), |
parent_name); |
ASSERT_TRUE(parent.good()); |
@@ -1488,14 +1538,16 @@ TEST_F(SyncerTest, TestCommitListOrderingAndNewParentAndChild) { |
const Id child_local_id = ids_.NewLocalId(); |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent2(&wtrans, syncable::CREATE, parent_id_, parent2_name); |
+ MutableEntry parent2( |
+ &wtrans, syncable::CREATE_BOOKMARK, parent_id_, parent2_name); |
ASSERT_TRUE(parent2.good()); |
parent2.Put(syncable::IS_UNSYNCED, true); |
parent2.Put(syncable::IS_DIR, true); |
parent2.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
parent2.Put(syncable::ID, parent2_local_id); |
- MutableEntry child(&wtrans, syncable::CREATE, parent2_local_id, child_name); |
+ MutableEntry child( |
+ &wtrans, syncable::CREATE_BOOKMARK, parent2_local_id, child_name); |
ASSERT_TRUE(child.good()); |
child.Put(syncable::IS_UNSYNCED, true); |
child.Put(syncable::IS_DIR, true); |
@@ -1713,14 +1765,14 @@ TEST_F(SyncerTest, CommitTimeRename) { |
// Create a folder and an entry. |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&trans, CREATE, root_id_, "Folder"); |
+ MutableEntry parent(&trans, CREATE_BOOKMARK, root_id_, "Folder"); |
ASSERT_TRUE(parent.good()); |
parent.Put(IS_DIR, true); |
parent.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
parent.Put(IS_UNSYNCED, true); |
metahandle_folder = parent.Get(META_HANDLE); |
- MutableEntry entry(&trans, CREATE, parent.Get(ID), "new_entry"); |
+ MutableEntry entry(&trans, CREATE_BOOKMARK, parent.Get(ID), "new_entry"); |
ASSERT_TRUE(entry.good()); |
metahandle_new_entry = entry.Get(META_HANDLE); |
WriteTestDataToEntry(&trans, &entry); |
@@ -1761,7 +1813,7 @@ TEST_F(SyncerTest, CommitTimeRenameI18N) { |
// Create a folder, expect a commit time rename. |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&trans, CREATE, root_id_, "Folder"); |
+ MutableEntry parent(&trans, CREATE_BOOKMARK, root_id_, "Folder"); |
ASSERT_TRUE(parent.good()); |
parent.Put(IS_DIR, true); |
parent.Put(SPECIFICS, DefaultBookmarkSpecifics()); |
@@ -1792,7 +1844,7 @@ TEST_F(SyncerTest, CommitReuniteUpdateAdjustsChildren) { |
int64 metahandle_folder; |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry entry(&trans, CREATE, trans.root_id(), "new_folder"); |
+ MutableEntry entry(&trans, CREATE_BOOKMARK, trans.root_id(), "new_folder"); |
ASSERT_TRUE(entry.good()); |
entry.Put(IS_DIR, true); |
entry.Put(SPECIFICS, DefaultBookmarkSpecifics()); |
@@ -1814,7 +1866,7 @@ TEST_F(SyncerTest, CommitReuniteUpdateAdjustsChildren) { |
// Create an entry in the newly created folder. |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry entry(&trans, CREATE, folder_id, "new_entry"); |
+ MutableEntry entry(&trans, CREATE_BOOKMARK, folder_id, "new_entry"); |
ASSERT_TRUE(entry.good()); |
metahandle_entry = entry.Get(META_HANDLE); |
WriteTestDataToEntry(&trans, &entry); |
@@ -1883,7 +1935,7 @@ TEST_F(SyncerTest, CommitReuniteUpdate) { |
int64 entry_metahandle; |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry entry(&trans, CREATE, trans.root_id(), "new_entry"); |
+ MutableEntry entry(&trans, CREATE_BOOKMARK, trans.root_id(), "new_entry"); |
ASSERT_TRUE(entry.good()); |
entry_metahandle = entry.Get(META_HANDLE); |
WriteTestDataToEntry(&trans, &entry); |
@@ -1937,7 +1989,7 @@ TEST_F(SyncerTest, CommitReuniteUpdateDoesNotChokeOnDeletedLocalEntry) { |
int64 entry_metahandle; |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry entry(&trans, CREATE, trans.root_id(), "new_entry"); |
+ MutableEntry entry(&trans, CREATE_BOOKMARK, trans.root_id(), "new_entry"); |
ASSERT_TRUE(entry.good()); |
entry_metahandle = entry.Get(META_HANDLE); |
WriteTestDataToEntry(&trans, &entry); |
@@ -2101,8 +2153,8 @@ class EntryCreatedInNewFolderTest : public SyncerTest { |
"bob")); |
CHECK(bob.good()); |
- MutableEntry entry2(&trans, syncable::CREATE, bob.Get(syncable::ID), |
- "bob"); |
+ MutableEntry entry2( |
+ &trans, syncable::CREATE_BOOKMARK, bob.Get(syncable::ID), "bob"); |
CHECK(entry2.good()); |
entry2.Put(syncable::IS_DIR, true); |
entry2.Put(syncable::IS_UNSYNCED, true); |
@@ -2113,7 +2165,7 @@ class EntryCreatedInNewFolderTest : public SyncerTest { |
TEST_F(EntryCreatedInNewFolderTest, EntryCreatedInNewFolderMidSync) { |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry entry(&trans, syncable::CREATE, trans.root_id(), |
+ MutableEntry entry(&trans, syncable::CREATE_BOOKMARK, trans.root_id(), |
"bob"); |
ASSERT_TRUE(entry.good()); |
entry.Put(syncable::IS_DIR, true); |
@@ -2152,7 +2204,7 @@ TEST_F(SyncerTest, UnappliedUpdateOnCreatedItemItemDoesNotCrash) { |
{ |
// Create an item. |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry fred_match(&trans, CREATE, trans.root_id(), |
+ MutableEntry fred_match(&trans, CREATE_BOOKMARK, trans.root_id(), |
"fred_match"); |
ASSERT_TRUE(fred_match.good()); |
metahandle_fred = fred_match.Get(META_HANDLE); |
@@ -2188,13 +2240,14 @@ TEST_F(SyncerTest, UnappliedUpdateOnCreatedItemItemDoesNotCrash) { |
TEST_F(SyncerTest, DoublyChangedWithResolver) { |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&wtrans, syncable::CREATE, root_id_, "Folder"); |
+ MutableEntry parent(&wtrans, syncable::CREATE_BOOKMARK, root_id_, "Folder"); |
ASSERT_TRUE(parent.good()); |
parent.Put(syncable::IS_DIR, true); |
parent.Put(syncable::ID, parent_id_); |
parent.Put(syncable::BASE_VERSION, 5); |
parent.Put(syncable::SPECIFICS, DefaultBookmarkSpecifics()); |
- MutableEntry child(&wtrans, syncable::CREATE, parent_id_, "Pete.htm"); |
+ MutableEntry child( |
+ &wtrans, syncable::CREATE_BOOKMARK, parent_id_, "Pete.htm"); |
ASSERT_TRUE(child.good()); |
child.Put(syncable::ID, child_id_); |
child.Put(syncable::BASE_VERSION, 10); |
@@ -2229,7 +2282,7 @@ TEST_F(SyncerTest, CommitsUpdateDoesntAlterEntry) { |
int64 entry_metahandle; |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry entry(&wtrans, syncable::CREATE, root_id_, "Pete"); |
+ MutableEntry entry(&wtrans, syncable::CREATE_BOOKMARK, root_id_, "Pete"); |
ASSERT_TRUE(entry.good()); |
EXPECT_FALSE(entry.Get(ID).ServerKnows()); |
entry.Put(syncable::IS_DIR, true); |
@@ -2241,7 +2294,6 @@ TEST_F(SyncerTest, CommitsUpdateDoesntAlterEntry) { |
SyncShareNudge(); |
syncable::Id id; |
int64 version; |
- NodeOrdinal server_ordinal_in_parent; |
{ |
syncable::ReadTransaction trans(FROM_HERE, directory()); |
Entry entry(&trans, syncable::GET_BY_HANDLE, entry_metahandle); |
@@ -2249,16 +2301,12 @@ TEST_F(SyncerTest, CommitsUpdateDoesntAlterEntry) { |
id = entry.Get(ID); |
EXPECT_TRUE(id.ServerKnows()); |
version = entry.Get(BASE_VERSION); |
- server_ordinal_in_parent = entry.Get(SERVER_ORDINAL_IN_PARENT); |
} |
sync_pb::SyncEntity* update = mock_server_->AddUpdateFromLastCommit(); |
EXPECT_EQ("Pete", update->name()); |
EXPECT_EQ(id.GetServerId(), update->id_string()); |
EXPECT_EQ(root_id_.GetServerId(), update->parent_id_string()); |
EXPECT_EQ(version, update->version()); |
- EXPECT_EQ( |
- NodeOrdinalToInt64(server_ordinal_in_parent), |
- update->position_in_parent()); |
SyncShareNudge(); |
{ |
syncable::ReadTransaction trans(FROM_HERE, directory()); |
@@ -2275,7 +2323,7 @@ TEST_F(SyncerTest, ParentAndChildBothMatch) { |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&wtrans, CREATE, root_id_, "Folder"); |
+ MutableEntry parent(&wtrans, CREATE_BOOKMARK, root_id_, "Folder"); |
ASSERT_TRUE(parent.good()); |
parent.Put(IS_DIR, true); |
parent.Put(IS_UNSYNCED, true); |
@@ -2283,7 +2331,7 @@ TEST_F(SyncerTest, ParentAndChildBothMatch) { |
parent.Put(BASE_VERSION, 1); |
parent.Put(SPECIFICS, DefaultBookmarkSpecifics()); |
- MutableEntry child(&wtrans, CREATE, parent.Get(ID), "test.htm"); |
+ MutableEntry child(&wtrans, CREATE_BOOKMARK, parent.Get(ID), "test.htm"); |
ASSERT_TRUE(child.good()); |
child.Put(ID, child_id); |
child.Put(BASE_VERSION, 1); |
@@ -2316,7 +2364,7 @@ TEST_F(SyncerTest, ParentAndChildBothMatch) { |
TEST_F(SyncerTest, CommittingNewDeleted) { |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry entry(&trans, CREATE, trans.root_id(), "bob"); |
+ MutableEntry entry(&trans, CREATE_BOOKMARK, trans.root_id(), "bob"); |
entry.Put(IS_UNSYNCED, true); |
entry.Put(IS_DEL, true); |
} |
@@ -2337,7 +2385,7 @@ TEST_F(SyncerTest, UnappliedUpdateDuringCommit) { |
// This test is a little fake. |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry entry(&trans, CREATE, trans.root_id(), "bob"); |
+ MutableEntry entry(&trans, CREATE_BOOKMARK, trans.root_id(), "bob"); |
entry.Put(ID, ids_.FromNumber(20)); |
entry.Put(BASE_VERSION, 1); |
entry.Put(SERVER_VERSION, 1); |
@@ -2369,7 +2417,7 @@ TEST_F(SyncerTest, DeletingEntryInFolder) { |
int64 existing_metahandle; |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry entry(&trans, CREATE, trans.root_id(), "existing"); |
+ MutableEntry entry(&trans, CREATE_BOOKMARK, trans.root_id(), "existing"); |
ASSERT_TRUE(entry.good()); |
entry.Put(IS_DIR, true); |
entry.Put(SPECIFICS, DefaultBookmarkSpecifics()); |
@@ -2379,7 +2427,7 @@ TEST_F(SyncerTest, DeletingEntryInFolder) { |
syncer_->SyncShare(session_.get(), SYNCER_BEGIN, SYNCER_END); |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry newfolder(&trans, CREATE, trans.root_id(), "new"); |
+ MutableEntry newfolder(&trans, CREATE_BOOKMARK, trans.root_id(), "new"); |
ASSERT_TRUE(newfolder.good()); |
newfolder.Put(IS_DIR, true); |
newfolder.Put(SPECIFICS, DefaultBookmarkSpecifics()); |
@@ -2405,7 +2453,8 @@ TEST_F(SyncerTest, DeletingEntryWithLocalEdits) { |
SyncShareNudge(); |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry newfolder(&trans, CREATE, ids_.FromNumber(1), "local"); |
+ MutableEntry newfolder( |
+ &trans, CREATE_BOOKMARK, ids_.FromNumber(1), "local"); |
ASSERT_TRUE(newfolder.good()); |
newfolder.Put(IS_UNSYNCED, true); |
newfolder.Put(IS_DIR, true); |
@@ -2496,7 +2545,7 @@ TEST_F(SyncerTest, CommitManyItemsInOneGo_Success) { |
for (uint32 i = 0; i < items_to_commit; i++) { |
string nameutf8 = base::StringPrintf("%d", i); |
string name(nameutf8.begin(), nameutf8.end()); |
- MutableEntry e(&trans, CREATE, trans.root_id(), name); |
+ MutableEntry e(&trans, CREATE_BOOKMARK, trans.root_id(), name); |
e.Put(IS_UNSYNCED, true); |
e.Put(IS_DIR, true); |
e.Put(SPECIFICS, DefaultBookmarkSpecifics()); |
@@ -2519,7 +2568,7 @@ TEST_F(SyncerTest, CommitManyItemsInOneGo_PostBufferFail) { |
for (uint32 i = 0; i < items_to_commit; i++) { |
string nameutf8 = base::StringPrintf("%d", i); |
string name(nameutf8.begin(), nameutf8.end()); |
- MutableEntry e(&trans, CREATE, trans.root_id(), name); |
+ MutableEntry e(&trans, CREATE_BOOKMARK, trans.root_id(), name); |
e.Put(IS_UNSYNCED, true); |
e.Put(IS_DIR, true); |
e.Put(SPECIFICS, DefaultBookmarkSpecifics()); |
@@ -2549,7 +2598,7 @@ TEST_F(SyncerTest, CommitManyItemsInOneGo_CommitConflict) { |
for (uint32 i = 0; i < items_to_commit; i++) { |
string nameutf8 = base::StringPrintf("%d", i); |
string name(nameutf8.begin(), nameutf8.end()); |
- MutableEntry e(&trans, CREATE, trans.root_id(), name); |
+ MutableEntry e(&trans, CREATE_BOOKMARK, trans.root_id(), name); |
e.Put(IS_UNSYNCED, true); |
e.Put(IS_DIR, true); |
e.Put(SPECIFICS, DefaultBookmarkSpecifics()); |
@@ -2647,7 +2696,8 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath) { |
syncable::Id local_folder_id; |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry new_entry(&wtrans, CREATE, wtrans.root_id(), "Bar.htm"); |
+ MutableEntry new_entry( |
+ &wtrans, CREATE_BOOKMARK, wtrans.root_id(), "Bar.htm"); |
ASSERT_TRUE(new_entry.good()); |
local_folder_id = new_entry.Get(ID); |
local_folder_handle = new_entry.Get(META_HANDLE); |
@@ -2713,7 +2763,8 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath_OldBookmarksProto) { |
syncable::Id local_folder_id; |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry new_entry(&wtrans, CREATE, wtrans.root_id(), "Bar.htm"); |
+ MutableEntry new_entry( |
+ &wtrans, CREATE_BOOKMARK, wtrans.root_id(), "Bar.htm"); |
ASSERT_TRUE(new_entry.good()); |
local_folder_id = new_entry.Get(ID); |
local_folder_handle = new_entry.Get(META_HANDLE); |
@@ -2885,12 +2936,12 @@ TEST_F(SyncerTest, ResolveWeWroteTheyDeleted) { |
TEST_F(SyncerTest, DuplicateIDReturn) { |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry folder(&trans, CREATE, trans.root_id(), "bob"); |
+ MutableEntry folder(&trans, CREATE_BOOKMARK, trans.root_id(), "bob"); |
ASSERT_TRUE(folder.good()); |
folder.Put(IS_UNSYNCED, true); |
folder.Put(IS_DIR, true); |
folder.Put(SPECIFICS, DefaultBookmarkSpecifics()); |
- MutableEntry folder2(&trans, CREATE, trans.root_id(), "fred"); |
+ MutableEntry folder2(&trans, CREATE_BOOKMARK, trans.root_id(), "fred"); |
ASSERT_TRUE(folder2.good()); |
folder2.Put(IS_UNSYNCED, false); |
folder2.Put(IS_DIR, true); |
@@ -2929,7 +2980,8 @@ TEST_F(SyncerTest, ConflictResolverMergesLocalDeleteAndServerUpdate) { |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry local_deleted(&trans, CREATE, trans.root_id(), "name"); |
+ MutableEntry local_deleted( |
+ &trans, CREATE_BOOKMARK, trans.root_id(), "name"); |
local_deleted.Put(ID, ids_.FromNumber(1)); |
local_deleted.Put(BASE_VERSION, 1); |
local_deleted.Put(IS_DEL, true); |
@@ -2962,7 +3014,8 @@ TEST_F(SyncerTest, UpdateFlipsTheFolderBit) { |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry local_deleted(&trans, CREATE, trans.root_id(), "name"); |
+ MutableEntry local_deleted( |
+ &trans, CREATE_BOOKMARK, trans.root_id(), "name"); |
local_deleted.Put(ID, ids_.FromNumber(1)); |
local_deleted.Put(BASE_VERSION, 1); |
local_deleted.Put(IS_DEL, true); |
@@ -3000,7 +3053,8 @@ TEST_F(SyncerTest, MergingExistingItems) { |
SyncShareNudge(); |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry entry(&trans, CREATE, trans.root_id(), "Copy of base"); |
+ MutableEntry entry( |
+ &trans, CREATE_BOOKMARK, trans.root_id(), "Copy of base"); |
WriteTestDataToEntry(&trans, &entry); |
} |
mock_server_->AddUpdateBookmark(1, 0, "Copy of base", 50, 50); |
@@ -3190,7 +3244,7 @@ TEST_F(SyncerTest, DirectoryCommitTest) { |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry parent(&wtrans, syncable::CREATE, root_id_, "foo"); |
+ MutableEntry parent(&wtrans, syncable::CREATE_BOOKMARK, root_id_, "foo"); |
ASSERT_TRUE(parent.good()); |
parent.Put(syncable::IS_UNSYNCED, true); |
parent.Put(syncable::IS_DIR, true); |
@@ -3198,7 +3252,8 @@ TEST_F(SyncerTest, DirectoryCommitTest) { |
in_root_id = parent.Get(syncable::ID); |
foo_metahandle = parent.Get(META_HANDLE); |
- MutableEntry child(&wtrans, syncable::CREATE, parent.Get(ID), "bar"); |
+ MutableEntry child( |
+ &wtrans, syncable::CREATE_BOOKMARK, parent.Get(ID), "bar"); |
ASSERT_TRUE(child.good()); |
child.Put(syncable::IS_UNSYNCED, true); |
child.Put(syncable::IS_DIR, true); |
@@ -3310,7 +3365,7 @@ TEST_F(SyncerTest, EnsureWeSendUpOldParent) { |
entry.Put(PARENT_ID, folder_two_id); |
entry.Put(IS_UNSYNCED, true); |
// A new entry should send no "old parent." |
- MutableEntry create(&trans, CREATE, trans.root_id(), "new_folder"); |
+ MutableEntry create(&trans, CREATE_BOOKMARK, trans.root_id(), "new_folder"); |
create.Put(IS_UNSYNCED, true); |
create.Put(SPECIFICS, DefaultBookmarkSpecifics()); |
} |
@@ -3330,7 +3385,8 @@ TEST_F(SyncerTest, Test64BitVersionSupport) { |
// Try writing max int64 to the version fields of a meta entry. |
{ |
WriteTransaction wtrans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry entry(&wtrans, syncable::CREATE, wtrans.root_id(), name); |
+ MutableEntry entry( |
+ &wtrans, syncable::CREATE_BOOKMARK, wtrans.root_id(), name); |
ASSERT_TRUE(entry.good()); |
entry.Put(syncable::BASE_VERSION, really_big_int); |
entry.Put(syncable::SERVER_VERSION, really_big_int); |
@@ -3541,7 +3597,8 @@ TEST_F(SyncerTest, ClientTagUncommittedTagMatchesUpdate) { |
{ |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry perm_folder(&trans, CREATE, ids_.root(), "clientname"); |
+ MutableEntry perm_folder( |
+ &trans, CREATE_BOOKMARK, ids_.root(), "clientname"); |
ASSERT_TRUE(perm_folder.good()); |
perm_folder.Put(UNIQUE_CLIENT_TAG, "clientperm"); |
perm_folder.Put(SPECIFICS, local_bookmark); |
@@ -3606,7 +3663,8 @@ TEST_F(SyncerTest, ClientTagConflictWithDeletedLocalEntry) { |
{ |
// Create a deleted local entry with a unique client tag. |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry perm_folder(&trans, CREATE, ids_.root(), "clientname"); |
+ MutableEntry perm_folder( |
+ &trans, CREATE_BOOKMARK, ids_.root(), "clientname"); |
ASSERT_TRUE(perm_folder.good()); |
ASSERT_FALSE(perm_folder.Get(ID).ServerKnows()); |
perm_folder.Put(UNIQUE_CLIENT_TAG, "clientperm"); |
@@ -4068,7 +4126,8 @@ class SyncerUndeletionTest : public SyncerTest { |
void Create() { |
WriteTransaction trans(FROM_HERE, UNITTEST, directory()); |
- MutableEntry perm_folder(&trans, CREATE, ids_.root(), "clientname"); |
+ MutableEntry perm_folder( |
+ &trans, CREATE_BOOKMARK, ids_.root(), "clientname"); |
ASSERT_TRUE(perm_folder.good()); |
perm_folder.Put(UNIQUE_CLIENT_TAG, client_tag_); |
perm_folder.Put(IS_UNSYNCED, true); |
@@ -4489,220 +4548,4 @@ TEST_F(SyncerUndeletionTest, OtherClientUndeletesImmediately) { |
EXPECT_EQ("Thadeusz", Get(metahandle_, NON_UNIQUE_NAME)); |
} |
-// A group of tests exercising the syncer's handling of sibling ordering, as |
-// represented in the sync protocol. |
-class SyncerPositionUpdateTest : public SyncerTest { |
- public: |
- SyncerPositionUpdateTest() : next_update_id_(1), next_revision_(1) {} |
- |
- protected: |
- void ExpectLocalItemsInServerOrder() { |
- if (position_map_.empty()) |
- return; |
- |
- syncable::ReadTransaction trans(FROM_HERE, directory()); |
- |
- Id prev_id; |
- DCHECK(prev_id.IsRoot()); |
- PosMap::iterator next = position_map_.begin(); |
- for (PosMap::iterator i = next++; i != position_map_.end(); ++i) { |
- Id id = i->second; |
- Entry entry_with_id(&trans, GET_BY_ID, id); |
- EXPECT_TRUE(entry_with_id.good()); |
- EXPECT_EQ(prev_id, entry_with_id.Get(PREV_ID)); |
- EXPECT_EQ( |
- i->first, |
- NodeOrdinalToInt64(entry_with_id.Get(SERVER_ORDINAL_IN_PARENT))); |
- if (next == position_map_.end()) { |
- EXPECT_EQ(Id(), entry_with_id.Get(NEXT_ID)); |
- } else { |
- EXPECT_EQ(next->second, entry_with_id.Get(NEXT_ID)); |
- next++; |
- } |
- prev_id = id; |
- } |
- } |
- |
- void AddRootItemWithPosition(int64 position) { |
- string id = string("ServerId") + base::Int64ToString(next_update_id_++); |
- string name = "my name is my id -- " + id; |
- int revision = next_revision_++; |
- mock_server_->AddUpdateDirectory(id, kRootId, name, revision, revision); |
- mock_server_->SetLastUpdatePosition(position); |
- position_map_.insert( |
- PosMap::value_type(position, Id::CreateFromServerId(id))); |
- } |
- private: |
- typedef multimap<int64, Id> PosMap; |
- PosMap position_map_; |
- int next_update_id_; |
- int next_revision_; |
- DISALLOW_COPY_AND_ASSIGN(SyncerPositionUpdateTest); |
-}; |
- |
-TEST_F(SyncerPositionUpdateTest, InOrderPositive) { |
- // Add a bunch of items in increasing order, starting with just positive |
- // position values. |
- AddRootItemWithPosition(100); |
- AddRootItemWithPosition(199); |
- AddRootItemWithPosition(200); |
- AddRootItemWithPosition(201); |
- AddRootItemWithPosition(400); |
- |
- SyncShareNudge(); |
- ExpectLocalItemsInServerOrder(); |
-} |
- |
-TEST_F(SyncerPositionUpdateTest, InOrderNegative) { |
- // Test negative position values, but in increasing order. |
- AddRootItemWithPosition(-400); |
- AddRootItemWithPosition(-201); |
- AddRootItemWithPosition(-200); |
- AddRootItemWithPosition(-150); |
- AddRootItemWithPosition(100); |
- |
- SyncShareNudge(); |
- ExpectLocalItemsInServerOrder(); |
-} |
- |
-TEST_F(SyncerPositionUpdateTest, ReverseOrder) { |
- // Test when items are sent in the reverse order. |
- AddRootItemWithPosition(400); |
- AddRootItemWithPosition(201); |
- AddRootItemWithPosition(200); |
- AddRootItemWithPosition(100); |
- AddRootItemWithPosition(-150); |
- AddRootItemWithPosition(-201); |
- AddRootItemWithPosition(-200); |
- AddRootItemWithPosition(-400); |
- |
- SyncShareNudge(); |
- ExpectLocalItemsInServerOrder(); |
-} |
- |
-TEST_F(SyncerPositionUpdateTest, RandomOrderInBatches) { |
- // Mix it all up, interleaving position values, and try multiple batches of |
- // updates. |
- AddRootItemWithPosition(400); |
- AddRootItemWithPosition(201); |
- AddRootItemWithPosition(-400); |
- AddRootItemWithPosition(100); |
- |
- SyncShareNudge(); |
- ExpectLocalItemsInServerOrder(); |
- |
- AddRootItemWithPosition(-150); |
- AddRootItemWithPosition(-200); |
- AddRootItemWithPosition(200); |
- AddRootItemWithPosition(-201); |
- |
- SyncShareNudge(); |
- ExpectLocalItemsInServerOrder(); |
- |
- AddRootItemWithPosition(-144); |
- |
- SyncShareNudge(); |
- ExpectLocalItemsInServerOrder(); |
-} |
- |
-class SyncerPositionTiebreakingTest : public SyncerTest { |
- public: |
- SyncerPositionTiebreakingTest() |
- : low_id_(Id::CreateFromServerId("A")), |
- mid_id_(Id::CreateFromServerId("M")), |
- high_id_(Id::CreateFromServerId("Z")), |
- next_revision_(1) { |
- DCHECK(low_id_ < mid_id_); |
- DCHECK(mid_id_ < high_id_); |
- DCHECK(low_id_ < high_id_); |
- } |
- |
- // Adds the item by its Id, using a constant value for the position |
- // so that the syncer has to resolve the order some other way. |
- void Add(const Id& id) { |
- int revision = next_revision_++; |
- mock_server_->AddUpdateDirectory(id.GetServerId(), kRootId, |
- id.GetServerId(), revision, revision); |
- // The update position doesn't vary. |
- mock_server_->SetLastUpdatePosition(90210); |
- } |
- |
- void ExpectLocalOrderIsByServerId() { |
- syncable::ReadTransaction trans(FROM_HERE, directory()); |
- Id null_id; |
- Entry low(&trans, GET_BY_ID, low_id_); |
- Entry mid(&trans, GET_BY_ID, mid_id_); |
- Entry high(&trans, GET_BY_ID, high_id_); |
- EXPECT_TRUE(low.good()); |
- EXPECT_TRUE(mid.good()); |
- EXPECT_TRUE(high.good()); |
- EXPECT_TRUE(low.Get(PREV_ID) == null_id); |
- EXPECT_TRUE(mid.Get(PREV_ID) == low_id_); |
- EXPECT_TRUE(high.Get(PREV_ID) == mid_id_); |
- EXPECT_TRUE(high.Get(NEXT_ID) == null_id); |
- EXPECT_TRUE(mid.Get(NEXT_ID) == high_id_); |
- EXPECT_TRUE(low.Get(NEXT_ID) == mid_id_); |
- } |
- |
- protected: |
- // When there's a tiebreak on the numeric position, it's supposed to be |
- // broken by string comparison of the ids. These ids are in increasing |
- // order. |
- const Id low_id_; |
- const Id mid_id_; |
- const Id high_id_; |
- |
- private: |
- int next_revision_; |
- DISALLOW_COPY_AND_ASSIGN(SyncerPositionTiebreakingTest); |
-}; |
- |
-TEST_F(SyncerPositionTiebreakingTest, LowMidHigh) { |
- Add(low_id_); |
- Add(mid_id_); |
- Add(high_id_); |
- SyncShareNudge(); |
- ExpectLocalOrderIsByServerId(); |
-} |
- |
-TEST_F(SyncerPositionTiebreakingTest, LowHighMid) { |
- Add(low_id_); |
- Add(high_id_); |
- Add(mid_id_); |
- SyncShareNudge(); |
- ExpectLocalOrderIsByServerId(); |
-} |
- |
-TEST_F(SyncerPositionTiebreakingTest, HighMidLow) { |
- Add(high_id_); |
- Add(mid_id_); |
- Add(low_id_); |
- SyncShareNudge(); |
- ExpectLocalOrderIsByServerId(); |
-} |
- |
-TEST_F(SyncerPositionTiebreakingTest, HighLowMid) { |
- Add(high_id_); |
- Add(low_id_); |
- Add(mid_id_); |
- SyncShareNudge(); |
- ExpectLocalOrderIsByServerId(); |
-} |
- |
-TEST_F(SyncerPositionTiebreakingTest, MidHighLow) { |
- Add(mid_id_); |
- Add(high_id_); |
- Add(low_id_); |
- SyncShareNudge(); |
- ExpectLocalOrderIsByServerId(); |
-} |
- |
-TEST_F(SyncerPositionTiebreakingTest, MidLowHigh) { |
- Add(mid_id_); |
- Add(low_id_); |
- Add(high_id_); |
- SyncShareNudge(); |
- ExpectLocalOrderIsByServerId(); |
-} |
- |
} // namespace syncer |