summaryrefslogtreecommitdiffstats
path: root/sync
diff options
context:
space:
mode:
authorhaitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-11 06:34:03 +0000
committerhaitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-11 06:34:03 +0000
commit484fff5fdc1775264dd33b67b8ad584a90197386 (patch)
tree5174074bf39909bb6538047d61e138423a18445d /sync
parent26f5efb1b4d8c848d8858e8031ddf9327733062f (diff)
downloadchromium_src-484fff5fdc1775264dd33b67b8ad584a90197386.zip
chromium_src-484fff5fdc1775264dd33b67b8ad584a90197386.tar.gz
chromium_src-484fff5fdc1775264dd33b67b8ad584a90197386.tar.bz2
Add integraton test for sync backup/rollback.
BUG=362679 Review URL: https://codereview.chromium.org/310103004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@276281 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync')
-rw-r--r--sync/engine/sync_scheduler_impl.cc1
-rw-r--r--sync/test/fake_server/fake_server.cc14
-rw-r--r--sync/test/fake_server/fake_server.h5
3 files changed, 19 insertions, 1 deletions
diff --git a/sync/engine/sync_scheduler_impl.cc b/sync/engine/sync_scheduler_impl.cc
index b2774e7..01a054a 100644
--- a/sync/engine/sync_scheduler_impl.cc
+++ b/sync/engine/sync_scheduler_impl.cc
@@ -43,6 +43,7 @@ bool ShouldRequestEarlyExit(const SyncProtocolError& error) {
case NOT_MY_BIRTHDAY:
case CLEAR_PENDING:
case DISABLED_BY_ADMIN:
+ case USER_ROLLBACK:
// If we send terminate sync early then |sync_cycle_ended| notification
// would not be sent. If there were no actions then |ACTIONABLE_ERROR|
// notification wouldnt be sent either. Then the UI layer would be left
diff --git a/sync/test/fake_server/fake_server.cc b/sync/test/fake_server/fake_server.cc
index d881080..56780e5 100644
--- a/sync/test/fake_server/fake_server.cc
+++ b/sync/test/fake_server/fake_server.cc
@@ -148,7 +148,8 @@ scoped_ptr<UpdateSieve> UpdateSieve::Create(
FakeServer::FakeServer() : version_(0),
store_birthday_(kDefaultStoreBirthday),
- authenticated_(true) {
+ authenticated_(true),
+ error_type_(sync_pb::SyncEnums::SUCCESS) {
keystore_keys_.push_back(kDefaultKeystoreKey);
CHECK(CreateDefaultPermanentItems());
}
@@ -232,6 +233,8 @@ void FakeServer::HandleCommand(const string& request,
if (message.has_store_birthday() &&
message.store_birthday() != store_birthday_) {
error_code = sync_pb::SyncEnums::NOT_MY_BIRTHDAY;
+ } else if (error_type_ != sync_pb::SyncEnums::SUCCESS) {
+ error_code = error_type_;
} else {
bool success = false;
switch (message.message_contents()) {
@@ -506,6 +509,15 @@ void FakeServer::SetUnauthenticated() {
authenticated_ = false;
}
+// TODO(pvalenzuela): comments from Richard: we should look at
+// mock_connection_manager.cc and take it as a warning. This style of injecting
+// errors works when there's one or two conditions we care about, but it can
+// eventually lead to a hairball once we have many different conditions and
+// triggering logic.
+void FakeServer::TriggerError(const sync_pb::SyncEnums::ErrorType& error_type) {
+ error_type_ = error_type;
+}
+
void FakeServer::AddObserver(Observer* observer) {
observers_.AddObserver(observer);
}
diff --git a/sync/test/fake_server/fake_server.h b/sync/test/fake_server/fake_server.h
index 71fdc9c..fa1b4d5 100644
--- a/sync/test/fake_server/fake_server.h
+++ b/sync/test/fake_server/fake_server.h
@@ -70,6 +70,9 @@ class FakeServer {
// authentication error.
void SetUnauthenticated();
+ // Return |error_type| on next sync request.
+ void TriggerError(const sync_pb::SyncEnums::ErrorType& error_type);
+
// Adds |observer| to FakeServer's observer list. This should be called
// before the Profile associated with |observer| is connected to the server.
void AddObserver(Observer* observer);
@@ -142,6 +145,8 @@ class FakeServer {
// All Keystore keys known to the server.
std::vector<std::string> keystore_keys_;
+ sync_pb::SyncEnums::ErrorType error_type_;
+
// FakeServer's observers.
ObserverList<Observer, true> observers_;
};