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

Unified Diff: sync/engine/apply_updates_and_resolve_conflicts_command_unittest.cc

Issue 11192071: sync: Merge apply updates and resolve conflicts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Retry (base files were missing) Created 8 years, 2 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/apply_updates_and_resolve_conflicts_command.cc ('k') | sync/engine/apply_updates_command.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/engine/apply_updates_and_resolve_conflicts_command_unittest.cc
diff --git a/sync/engine/apply_updates_command_unittest.cc b/sync/engine/apply_updates_and_resolve_conflicts_command_unittest.cc
similarity index 78%
rename from sync/engine/apply_updates_command_unittest.cc
rename to sync/engine/apply_updates_and_resolve_conflicts_command_unittest.cc
index b261c1dcd32127c0e26511ff5f9b964692aa78bb..fb6480a5fe2c933704001a113e183ffe29f82f72 100644
--- a/sync/engine/apply_updates_command_unittest.cc
+++ b/sync/engine/apply_updates_and_resolve_conflicts_command_unittest.cc
@@ -7,7 +7,7 @@
#include "base/location.h"
#include "base/memory/scoped_ptr.h"
#include "base/stringprintf.h"
-#include "sync/engine/apply_updates_command.h"
+#include "sync/engine/apply_updates_and_resolve_conflicts_command.h"
#include "sync/engine/syncer.h"
#include "sync/internal_api/public/test/test_entry_factory.h"
#include "sync/protocol/bookmark_specifics.pb.h"
@@ -40,12 +40,12 @@ sync_pb::EntitySpecifics DefaultBookmarkSpecifics() {
}
} // namespace
-// A test fixture for tests exercising ApplyUpdatesCommand.
-class ApplyUpdatesCommandTest : public SyncerCommandTest {
+// A test fixture for tests exercising ApplyUpdatesAndResolveConflictsCommand.
+class ApplyUpdatesAndResolveConflictsCommandTest : public SyncerCommandTest {
public:
protected:
- ApplyUpdatesCommandTest() {}
- virtual ~ApplyUpdatesCommandTest() {}
+ ApplyUpdatesAndResolveConflictsCommandTest() {}
+ virtual ~ApplyUpdatesAndResolveConflictsCommandTest() {}
virtual void SetUp() {
workers()->clear();
@@ -63,13 +63,13 @@ class ApplyUpdatesCommandTest : public SyncerCommandTest {
}
protected:
- DISALLOW_COPY_AND_ASSIGN(ApplyUpdatesCommandTest);
+ DISALLOW_COPY_AND_ASSIGN(ApplyUpdatesAndResolveConflictsCommandTest);
- ApplyUpdatesCommand apply_updates_command_;
+ ApplyUpdatesAndResolveConflictsCommand apply_updates_command_;
scoped_ptr<TestEntryFactory> entry_factory_;
};
-TEST_F(ApplyUpdatesCommandTest, Simple) {
+TEST_F(ApplyUpdatesAndResolveConflictsCommandTest, Simple) {
string root_server_id = syncable::GetNullId().GetServerId();
entry_factory_->CreateUnappliedNewItemWithParent("parent",
DefaultBookmarkSpecifics(),
@@ -82,8 +82,6 @@ TEST_F(ApplyUpdatesCommandTest, Simple) {
apply_updates_command_.ExecuteImpl(session());
const sessions::StatusController& status = session()->status_controller();
- EXPECT_EQ(0, status.num_simple_conflicts())
- << "Simple update shouldn't result in conflicts";
EXPECT_EQ(0, status.num_encryption_conflicts())
<< "Simple update shouldn't result in conflicts";
EXPECT_EQ(0, status.num_hierarchy_conflicts())
@@ -92,7 +90,8 @@ TEST_F(ApplyUpdatesCommandTest, Simple) {
<< "All items should have been successfully applied";
}
-TEST_F(ApplyUpdatesCommandTest, UpdateWithChildrenBeforeParents) {
+TEST_F(ApplyUpdatesAndResolveConflictsCommandTest,
+ UpdateWithChildrenBeforeParents) {
// Set a bunch of updates which are difficult to apply in the order
// they're received due to dependencies on other unseen items.
string root_server_id = syncable::GetNullId().GetServerId();
@@ -111,33 +110,34 @@ TEST_F(ApplyUpdatesCommandTest, UpdateWithChildrenBeforeParents) {
apply_updates_command_.ExecuteImpl(session());
const sessions::StatusController& status = session()->status_controller();
- EXPECT_EQ(0, status.num_simple_conflicts())
- << "Simple update shouldn't result in conflicts, even if out-of-order";
EXPECT_EQ(5, status.num_updates_applied())
<< "All updates should have been successfully applied";
}
-// Runs the ApplyUpdatesCommand on an item that has both local and remote
-// modifications (IS_UNSYNCED and IS_UNAPPLIED_UPDATE). We expect the command
-// to detect that this update can't be applied because it is in a CONFLICT
-// state.
-TEST_F(ApplyUpdatesCommandTest, SimpleConflict) {
+// Runs the ApplyUpdatesAndResolveConflictsCommand on an item that has both
+// local and remote modifications (IS_UNSYNCED and IS_UNAPPLIED_UPDATE). We
+// expect the command to detect that this update can't be applied because it is
+// in a CONFLICT state.
+TEST_F(ApplyUpdatesAndResolveConflictsCommandTest, SimpleConflict) {
entry_factory_->CreateUnappliedAndUnsyncedItem("item", BOOKMARKS);
ExpectGroupToChange(apply_updates_command_, GROUP_UI);
apply_updates_command_.ExecuteImpl(session());
const sessions::StatusController& status = session()->status_controller();
- EXPECT_EQ(1, status.num_simple_conflicts())
- << "Unsynced and unapplied item should be a simple conflict";
+ EXPECT_EQ(1, status.num_server_overwrites())
+ << "Unsynced and unapplied item conflict should be resolved";
+ EXPECT_EQ(0, status.num_updates_applied())
+ << "Update should not be applied; we should override the server.";
}
-// Runs the ApplyUpdatesCommand on an item that has both local and remote
-// modifications *and* the remote modification cannot be applied without
-// violating the tree constraints. We expect the command to detect that this
-// update can't be applied and that this situation can't be resolved with the
-// simple conflict processing logic; it is in a CONFLICT_HIERARCHY state.
-TEST_F(ApplyUpdatesCommandTest, HierarchyAndSimpleConflict) {
+// Runs the ApplyUpdatesAndResolveConflictsCommand on an item that has both
+// local and remote modifications *and* the remote modification cannot be
+// applied without violating the tree constraints. We expect the command to
+// detect that this update can't be applied and that this situation can't be
+// resolved with the simple conflict processing logic; it is in a
+// CONFLICT_HIERARCHY state.
+TEST_F(ApplyUpdatesAndResolveConflictsCommandTest, HierarchyAndSimpleConflict) {
// Create a simply-conflicting item. It will start with valid parent ids.
int64 handle = entry_factory_->CreateUnappliedAndUnsyncedItem(
"orphaned_by_server", BOOKMARKS);
@@ -156,19 +156,16 @@ TEST_F(ApplyUpdatesCommandTest, HierarchyAndSimpleConflict) {
apply_updates_command_.ExecuteImpl(session());
const sessions::StatusController& status = session()->status_controller();
-
- // An update that is both a simple conflict and a hierarchy conflict should be
- // treated as a hierarchy conflict.
EXPECT_EQ(1, status.num_hierarchy_conflicts());
- EXPECT_EQ(0, status.num_simple_conflicts());
}
-// Runs the ApplyUpdatesCommand on an item with remote modifications that would
-// create a directory loop if the update were applied. We expect the command to
-// detect that this update can't be applied because it is in a
-// CONFLICT_HIERARCHY state.
-TEST_F(ApplyUpdatesCommandTest, HierarchyConflictDirectoryLoop) {
+// Runs the ApplyUpdatesAndResolveConflictsCommand on an item with remote
+// modifications that would create a directory loop if the update were applied.
+// We expect the command to detect that this update can't be applied because it
+// is in a CONFLICT_HIERARCHY state.
+TEST_F(ApplyUpdatesAndResolveConflictsCommandTest,
+ HierarchyConflictDirectoryLoop) {
// Item 'X' locally has parent of 'root'. Server is updating it to have
// parent of 'Y'.
{
@@ -202,14 +199,14 @@ TEST_F(ApplyUpdatesCommandTest, HierarchyConflictDirectoryLoop) {
// This should count as a hierarchy conflict.
EXPECT_EQ(1, status.num_hierarchy_conflicts());
- EXPECT_EQ(0, status.num_simple_conflicts());
}
-// Runs the ApplyUpdatesCommand on a directory where the server sent us an
-// update to add a child to a locally deleted (and unsynced) parent. We expect
-// the command to not apply the update and to indicate the update is in a
-// CONFLICT_HIERARCHY state.
-TEST_F(ApplyUpdatesCommandTest, HierarchyConflictDeletedParent) {
+// Runs the ApplyUpdatesAndResolveConflictsCommand on a directory where the
+// server sent us an update to add a child to a locally deleted (and unsynced)
+// parent. We expect the command to not apply the update and to indicate the
+// update is in a CONFLICT_HIERARCHY state.
+TEST_F(ApplyUpdatesAndResolveConflictsCommandTest,
+ HierarchyConflictDeletedParent) {
// Create a locally deleted parent item.
int64 parent_handle;
entry_factory_->CreateUnsyncedItem(
@@ -234,14 +231,14 @@ TEST_F(ApplyUpdatesCommandTest, HierarchyConflictDeletedParent) {
const sessions::StatusController& status = session()->status_controller();
EXPECT_EQ(1, status.num_hierarchy_conflicts());
- EXPECT_EQ(0, status.num_simple_conflicts());
}
-// Runs the ApplyUpdatesCommand on a directory where the server is trying to
-// delete a folder that has a recently added (and unsynced) child. We expect
-// the command to not apply the update because it is in a CONFLICT_HIERARCHY
-// state.
-TEST_F(ApplyUpdatesCommandTest, HierarchyConflictDeleteNonEmptyDirectory) {
+// Runs the ApplyUpdatesAndResolveConflictsCommand on a directory where the
+// server is trying to delete a folder that has a recently added (and unsynced)
+// child. We expect the command to not apply the update because it is in a
+// CONFLICT_HIERARCHY state.
+TEST_F(ApplyUpdatesAndResolveConflictsCommandTest,
+ HierarchyConflictDeleteNonEmptyDirectory) {
// Create a server-deleted directory.
{
// Create it as a child of root node.
@@ -273,13 +270,13 @@ TEST_F(ApplyUpdatesCommandTest, HierarchyConflictDeleteNonEmptyDirectory) {
const sessions::StatusController& status = session()->status_controller();
// This should count as a hierarchy conflict.
EXPECT_EQ(1, status.num_hierarchy_conflicts());
- EXPECT_EQ(0, status.num_simple_conflicts());
}
-// Runs the ApplyUpdatesCommand on a server-created item that has a locally
-// unknown parent. We expect the command to not apply the update because the
-// item is in a CONFLICT_HIERARCHY state.
-TEST_F(ApplyUpdatesCommandTest, HierarchyConflictUnknownParent) {
+// Runs the ApplyUpdatesAndResolveConflictsCommand on a server-created item that
+// has a locally unknown parent. We expect the command to not apply the update
+// because the item is in a CONFLICT_HIERARCHY state.
+TEST_F(ApplyUpdatesAndResolveConflictsCommandTest,
+ HierarchyConflictUnknownParent) {
// We shouldn't be able to do anything with either of these items.
entry_factory_->CreateUnappliedNewItemWithParent(
"some_item", DefaultBookmarkSpecifics(), "unknown_parent");
@@ -290,16 +287,13 @@ TEST_F(ApplyUpdatesCommandTest, HierarchyConflictUnknownParent) {
apply_updates_command_.ExecuteImpl(session());
const sessions::StatusController& status = session()->status_controller();
- EXPECT_EQ(0, status.num_simple_conflicts())
- << "Updates with unknown parent should not be treated as 'simple'"
- << " conflicts";
EXPECT_EQ(2, status.num_hierarchy_conflicts())
<< "All updates with an unknown ancestors should be in conflict";
EXPECT_EQ(0, status.num_updates_applied())
<< "No item with an unknown ancestor should be applied";
}
-TEST_F(ApplyUpdatesCommandTest, ItemsBothKnownAndUnknown) {
+TEST_F(ApplyUpdatesAndResolveConflictsCommandTest, ItemsBothKnownAndUnknown) {
// See what happens when there's a mixture of good and bad updates.
string root_server_id = syncable::GetNullId().GetServerId();
entry_factory_->CreateUnappliedNewItemWithParent(
@@ -325,7 +319,7 @@ TEST_F(ApplyUpdatesCommandTest, ItemsBothKnownAndUnknown) {
<< "The updates with known ancestors should be successfully applied";
}
-TEST_F(ApplyUpdatesCommandTest, DecryptablePassword) {
+TEST_F(ApplyUpdatesAndResolveConflictsCommandTest, DecryptablePassword) {
// Decryptable password updates should be applied.
Cryptographer* cryptographer;
{
@@ -350,13 +344,11 @@ TEST_F(ApplyUpdatesCommandTest, DecryptablePassword) {
apply_updates_command_.ExecuteImpl(session());
const sessions::StatusController& status = session()->status_controller();
- EXPECT_EQ(0, status.num_simple_conflicts())
- << "No update should be in conflict because they're all decryptable";
EXPECT_EQ(1, status.num_updates_applied())
<< "The updates that can be decrypted should be applied";
}
-TEST_F(ApplyUpdatesCommandTest, UndecryptableData) {
+TEST_F(ApplyUpdatesAndResolveConflictsCommandTest, UndecryptableData) {
// Undecryptable updates should not be applied.
sync_pb::EntitySpecifics encrypted_bookmark;
encrypted_bookmark.mutable_encrypted();
@@ -373,18 +365,13 @@ TEST_F(ApplyUpdatesCommandTest, UndecryptableData) {
apply_updates_command_.ExecuteImpl(session());
const sessions::StatusController& status = session()->status_controller();
- EXPECT_TRUE(status.HasConflictingUpdates())
- << "Updates that can't be decrypted should trigger the syncer to have "
- << "conflicting updates.";
- EXPECT_EQ(0, status.num_simple_conflicts())
- << "Updates that can't be decrypted should not be in regular conflict";
EXPECT_EQ(3, status.num_encryption_conflicts())
<< "Updates that can't be decrypted should be in encryption conflict";
EXPECT_EQ(0, status.num_updates_applied())
<< "No update that can't be decrypted should be applied";
}
-TEST_F(ApplyUpdatesCommandTest, SomeUndecryptablePassword) {
+TEST_F(ApplyUpdatesAndResolveConflictsCommandTest, SomeUndecryptablePassword) {
Cryptographer* cryptographer;
// Only decryptable password updates should be applied.
{
@@ -422,12 +409,6 @@ TEST_F(ApplyUpdatesCommandTest, SomeUndecryptablePassword) {
apply_updates_command_.ExecuteImpl(session());
const sessions::StatusController& status = session()->status_controller();
- EXPECT_TRUE(status.HasConflictingUpdates())
- << "Updates that can't be decrypted should trigger the syncer to have "
- << "conflicting updates.";
- EXPECT_EQ(0, status.num_simple_conflicts())
- << "The updates that can't be decrypted should not be in regular "
- << "conflict";
EXPECT_EQ(1, status.num_encryption_conflicts())
<< "The updates that can't be decrypted should be in encryption "
<< "conflict";
« no previous file with comments | « sync/engine/apply_updates_and_resolve_conflicts_command.cc ('k') | sync/engine/apply_updates_command.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698