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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "sync/test/fake_server/fake_server.h" 5 #include "sync/test/fake_server/fake_server.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 142
143 return scoped_ptr<UpdateSieve>( 143 return scoped_ptr<UpdateSieve>(
144 new UpdateSieve(request_from_version, min_version)); 144 new UpdateSieve(request_from_version, min_version));
145 } 145 }
146 146
147 } // namespace 147 } // namespace
148 148
149 FakeServer::FakeServer() : version_(0), 149 FakeServer::FakeServer() : version_(0),
150 store_birthday_(kDefaultStoreBirthday), 150 store_birthday_(kDefaultStoreBirthday),
151 authenticated_(true), 151 authenticated_(true),
152 error_type_(sync_pb::SyncEnums::SUCCESS) { 152 error_type_(sync_pb::SyncEnums::SUCCESS),
153 alternate_triggered_errors_(false),
154 request_counter_(0) {
153 keystore_keys_.push_back(kDefaultKeystoreKey); 155 keystore_keys_.push_back(kDefaultKeystoreKey);
154 CHECK(CreateDefaultPermanentItems()); 156 CHECK(CreateDefaultPermanentItems());
155 } 157 }
156 158
157 FakeServer::~FakeServer() { 159 FakeServer::~FakeServer() {
158 STLDeleteContainerPairSecondPointers(entities_.begin(), entities_.end()); 160 STLDeleteContainerPairSecondPointers(entities_.begin(), entities_.end());
159 } 161 }
160 162
161 bool FakeServer::CreateDefaultPermanentItems() { 163 bool FakeServer::CreateDefaultPermanentItems() {
162 ModelTypeSet all_types = syncer::ProtocolTypes(); 164 ModelTypeSet all_types = syncer::ProtocolTypes();
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 } 213 }
212 214
213 void FakeServer::SaveEntity(FakeServerEntity* entity) { 215 void FakeServer::SaveEntity(FakeServerEntity* entity) {
214 delete entities_[entity->GetId()]; 216 delete entities_[entity->GetId()];
215 entity->SetVersion(++version_); 217 entity->SetVersion(++version_);
216 entities_[entity->GetId()] = entity; 218 entities_[entity->GetId()] = entity;
217 } 219 }
218 220
219 void FakeServer::HandleCommand(const string& request, 221 void FakeServer::HandleCommand(const string& request,
220 const HandleCommandCallback& callback) { 222 const HandleCommandCallback& callback) {
223 request_counter_++;
224
221 if (!authenticated_) { 225 if (!authenticated_) {
222 callback.Run(0, net::HTTP_UNAUTHORIZED, string()); 226 callback.Run(0, net::HTTP_UNAUTHORIZED, string());
223 return; 227 return;
224 } 228 }
225 229
226 sync_pb::ClientToServerMessage message; 230 sync_pb::ClientToServerMessage message;
227 bool parsed = message.ParseFromString(request); 231 bool parsed = message.ParseFromString(request);
228 CHECK(parsed) << "Unable to parse the ClientToServerMessage."; 232 CHECK(parsed) << "Unable to parse the ClientToServerMessage.";
229 233
230 sync_pb::ClientToServerResponse response_proto; 234 sync_pb::ClientToServerResponse response_proto;
231 235
232 if (message.has_store_birthday() && 236 if (message.has_store_birthday() &&
233 message.store_birthday() != store_birthday_) { 237 message.store_birthday() != store_birthday_) {
234 response_proto.set_error_code(sync_pb::SyncEnums::NOT_MY_BIRTHDAY); 238 response_proto.set_error_code(sync_pb::SyncEnums::NOT_MY_BIRTHDAY);
235 } else if (error_type_ != sync_pb::SyncEnums::SUCCESS) { 239 } else if (error_type_ != sync_pb::SyncEnums::SUCCESS &&
240 ShouldSendTriggeredError()) {
236 response_proto.set_error_code(error_type_); 241 response_proto.set_error_code(error_type_);
237 } else if (triggered_actionable_error_.get()) { 242 } else if (triggered_actionable_error_.get() && ShouldSendTriggeredError()) {
238 sync_pb::ClientToServerResponse_Error* error = 243 sync_pb::ClientToServerResponse_Error* error =
239 response_proto.mutable_error(); 244 response_proto.mutable_error();
240 error->CopyFrom(*(triggered_actionable_error_.get())); 245 error->CopyFrom(*(triggered_actionable_error_.get()));
241 } else { 246 } else {
242 bool success = false; 247 bool success = false;
243 switch (message.message_contents()) { 248 switch (message.message_contents()) {
244 case sync_pb::ClientToServerMessage::GET_UPDATES: 249 case sync_pb::ClientToServerMessage::GET_UPDATES:
245 success = HandleGetUpdatesRequest(message.get_updates(), 250 success = HandleGetUpdatesRequest(message.get_updates(),
246 response_proto.mutable_get_updates()); 251 response_proto.mutable_get_updates());
247 break; 252 break;
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 } 503 }
499 504
500 void FakeServer::SetAuthenticated() { 505 void FakeServer::SetAuthenticated() {
501 authenticated_ = true; 506 authenticated_ = true;
502 } 507 }
503 508
504 void FakeServer::SetUnauthenticated() { 509 void FakeServer::SetUnauthenticated() {
505 authenticated_ = false; 510 authenticated_ = false;
506 } 511 }
507 512
508 void FakeServer::TriggerError(const sync_pb::SyncEnums::ErrorType& error_type) { 513 bool FakeServer::TriggerError(const sync_pb::SyncEnums::ErrorType& error_type) {
509 CHECK(!triggered_actionable_error_.get()) 514 if (triggered_actionable_error_.get()) {
510 << "Only one type of error can be triggered at any given time."; 515 DVLOG(1) << "Only one type of error can be triggered at any given time.";
516 return false;
517 }
518
511 error_type_ = error_type; 519 error_type_ = error_type;
520 return true;
512 } 521 }
513 522
514 bool FakeServer::TriggerActionableError( 523 bool FakeServer::TriggerActionableError(
515 const sync_pb::SyncEnums::ErrorType& error_type, 524 const sync_pb::SyncEnums::ErrorType& error_type,
516 const string& description, 525 const string& description,
517 const string& url, 526 const string& url,
518 const sync_pb::SyncEnums::Action& action) { 527 const sync_pb::SyncEnums::Action& action) {
519 if (error_type_ != sync_pb::SyncEnums::SUCCESS) { 528 if (error_type_ != sync_pb::SyncEnums::SUCCESS) {
520 DVLOG(1) << "Only one type of error can be triggered at any given time."; 529 DVLOG(1) << "Only one type of error can be triggered at any given time.";
521 return false; 530 return false;
522 } 531 }
523 532
524 sync_pb::ClientToServerResponse_Error* error = 533 sync_pb::ClientToServerResponse_Error* error =
525 new sync_pb::ClientToServerResponse_Error(); 534 new sync_pb::ClientToServerResponse_Error();
526 error->set_error_type(error_type); 535 error->set_error_type(error_type);
527 error->set_error_description(description); 536 error->set_error_description(description);
528 error->set_url(url); 537 error->set_url(url);
529 error->set_action(action); 538 error->set_action(action);
530 triggered_actionable_error_.reset(error); 539 triggered_actionable_error_.reset(error);
531 return true; 540 return true;
532 } 541 }
533 542
543 bool FakeServer::EnableAlternatingTriggeredErrors() {
544 if (error_type_ == sync_pb::SyncEnums::SUCCESS &&
545 !triggered_actionable_error_.get()) {
546 DVLOG(1) << "No triggered error set. Alternating can't be enabled.";
547 return false;
548 }
549
550 alternate_triggered_errors_ = true;
551 // Reset the counter so that the the first request yields a triggered error.
552 request_counter_ = 0;
553 return true;
554 }
555
556 bool FakeServer::ShouldSendTriggeredError() const {
557 if (!alternate_triggered_errors_)
558 return true;
559
560 // Check that the counter is odd so that we trigger an error on the first
561 // request after alternating is enabled.
562 return request_counter_ % 2 != 0;
563 }
564
534 void FakeServer::AddObserver(Observer* observer) { 565 void FakeServer::AddObserver(Observer* observer) {
535 observers_.AddObserver(observer); 566 observers_.AddObserver(observer);
536 } 567 }
537 568
538 void FakeServer::RemoveObserver(Observer* observer) { 569 void FakeServer::RemoveObserver(Observer* observer) {
539 observers_.RemoveObserver(observer); 570 observers_.RemoveObserver(observer);
540 } 571 }
541 572
542 } // namespace fake_server 573 } // namespace fake_server
OLDNEW
« 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