diff options
author | haitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-11 06:34:03 +0000 |
---|---|---|
committer | haitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-11 06:34:03 +0000 |
commit | 484fff5fdc1775264dd33b67b8ad584a90197386 (patch) | |
tree | 5174074bf39909bb6538047d61e138423a18445d /sync/test | |
parent | 26f5efb1b4d8c848d8858e8031ddf9327733062f (diff) | |
download | chromium_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/test')
-rw-r--r-- | sync/test/fake_server/fake_server.cc | 14 | ||||
-rw-r--r-- | sync/test/fake_server/fake_server.h | 5 |
2 files changed, 18 insertions, 1 deletions
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_; }; |