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

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
« no previous file with comments | « 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 6981632f0b8e2df3b11f309a128e252a68d5e0e7..74637035cdb45f20dd451bde950c055005e58982 100644
--- a/sync/test/fake_server/fake_server.cc
+++ b/sync/test/fake_server/fake_server.cc
@@ -150,6 +150,8 @@ FakeServer::FakeServer() : version_(0),
store_birthday_(kDefaultStoreBirthday),
authenticated_(true),
error_type_(sync_pb::SyncEnums::SUCCESS),
+ alternate_triggered_errors_(false),
+ request_counter_(0),
network_enabled_(true) {
keystore_keys_.push_back(kDefaultKeystoreKey);
CHECK(CreateDefaultPermanentItems());
@@ -223,6 +225,7 @@ void FakeServer::HandleCommand(const string& request,
callback.Run(net::ERR_FAILED, net::ERR_FAILED, string());
return;
}
+ request_counter_++;
if (!authenticated_) {
callback.Run(0, net::HTTP_UNAUTHORIZED, string());
@@ -238,9 +241,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()));
@@ -511,10 +515,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(
@@ -537,6 +545,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);
}
« no previous file with comments | « 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