| Index: sync/test/fake_server/fake_server.cc
|
| diff --git a/sync/test/fake_server/fake_server.cc b/sync/test/fake_server/fake_server.cc
|
| index 7626073eb73d7cf895416c490971b1413328807e..2227535e9d4fbedbb25b5d2c0c351ce92a5a3545 100644
|
| --- a/sync/test/fake_server/fake_server.cc
|
| +++ b/sync/test/fake_server/fake_server.cc
|
| @@ -149,7 +149,9 @@ scoped_ptr<UpdateSieve> UpdateSieve::Create(
|
| FakeServer::FakeServer() : version_(0),
|
| store_birthday_(kDefaultStoreBirthday),
|
| authenticated_(true),
|
| - error_type_(sync_pb::SyncEnums::SUCCESS) {
|
| + error_type_(sync_pb::SyncEnums::SUCCESS),
|
| + alternate_triggered_errors_(false),
|
| + request_counter_(0) {
|
| keystore_keys_.push_back(kDefaultKeystoreKey);
|
| CHECK(CreateDefaultPermanentItems());
|
| }
|
| @@ -218,6 +220,8 @@ void FakeServer::SaveEntity(FakeServerEntity* entity) {
|
|
|
| void FakeServer::HandleCommand(const string& request,
|
| const HandleCommandCallback& callback) {
|
| + request_counter_++;
|
| +
|
| if (!authenticated_) {
|
| callback.Run(0, net::HTTP_UNAUTHORIZED, string());
|
| return;
|
| @@ -232,9 +236,10 @@ void FakeServer::HandleCommand(const string& request,
|
| if (message.has_store_birthday() &&
|
| message.store_birthday() != store_birthday_) {
|
| response_proto.set_error_code(sync_pb::SyncEnums::NOT_MY_BIRTHDAY);
|
| - } else if (error_type_ != sync_pb::SyncEnums::SUCCESS) {
|
| + } else if (error_type_ != sync_pb::SyncEnums::SUCCESS &&
|
| + ShouldSendTriggeredError()) {
|
| response_proto.set_error_code(error_type_);
|
| - } else if (triggered_actionable_error_.get()) {
|
| + } else if (triggered_actionable_error_.get() && ShouldSendTriggeredError()) {
|
| sync_pb::ClientToServerResponse_Error* error =
|
| response_proto.mutable_error();
|
| error->CopyFrom(*(triggered_actionable_error_.get()));
|
| @@ -505,10 +510,14 @@ void FakeServer::SetUnauthenticated() {
|
| authenticated_ = false;
|
| }
|
|
|
| -void FakeServer::TriggerError(const sync_pb::SyncEnums::ErrorType& error_type) {
|
| - CHECK(!triggered_actionable_error_.get())
|
| - << "Only one type of error can be triggered at any given time.";
|
| +bool FakeServer::TriggerError(const sync_pb::SyncEnums::ErrorType& error_type) {
|
| + if (triggered_actionable_error_.get()) {
|
| + DVLOG(1) << "Only one type of error can be triggered at any given time.";
|
| + return false;
|
| + }
|
| +
|
| error_type_ = error_type;
|
| + return true;
|
| }
|
|
|
| bool FakeServer::TriggerActionableError(
|
| @@ -531,6 +540,28 @@ bool FakeServer::TriggerActionableError(
|
| return true;
|
| }
|
|
|
| +bool FakeServer::EnableAlternatingTriggeredErrors() {
|
| + if (error_type_ == sync_pb::SyncEnums::SUCCESS &&
|
| + !triggered_actionable_error_.get()) {
|
| + DVLOG(1) << "No triggered error set. Alternating can't be enabled.";
|
| + return false;
|
| + }
|
| +
|
| + alternate_triggered_errors_ = true;
|
| + // Reset the counter so that the the first request yields a triggered error.
|
| + request_counter_ = 0;
|
| + return true;
|
| +}
|
| +
|
| +bool FakeServer::ShouldSendTriggeredError() const {
|
| + if (!alternate_triggered_errors_)
|
| + return true;
|
| +
|
| + // Check that the counter is odd so that we trigger an error on the first
|
| + // request after alternating is enabled.
|
| + return request_counter_ % 2 != 0;
|
| +}
|
| +
|
| void FakeServer::AddObserver(Observer* observer) {
|
| observers_.AddObserver(observer);
|
| }
|
|
|