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

Unified Diff: sync/test/fake_server/fake_server.cc

Issue 650463003: Improve error triggering in sync_integration_tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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
« sync/test/fake_server/fake_server.h ('K') | « sync/test/fake_server/fake_server.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« sync/test/fake_server/fake_server.h ('K') | « sync/test/fake_server/fake_server.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698