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

Unified Diff: sync/test/engine/single_type_mock_server.cc

Issue 330523002: sync: Refactor NonBlockingTypeProcessorCore tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix tests Created 6 years, 6 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/engine/single_type_mock_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/engine/single_type_mock_server.cc
diff --git a/sync/test/engine/single_type_mock_server.cc b/sync/test/engine/single_type_mock_server.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6f828fb0d51a8d5ae5b9b22c17de73659f212b05
--- /dev/null
+++ b/sync/test/engine/single_type_mock_server.cc
@@ -0,0 +1,179 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "sync/test/engine/single_type_mock_server.h"
+
+#include "sync/util/time.h"
+
+using google::protobuf::RepeatedPtrField;
+
+namespace syncer {
+
+SingleTypeMockServer::SingleTypeMockServer(syncer::ModelType type)
+ : type_(type), type_root_id_(ModelTypeToRootTag(type)) {
+}
+
+SingleTypeMockServer::~SingleTypeMockServer() {
+}
+
+sync_pb::SyncEntity SingleTypeMockServer::TypeRootUpdate() {
+ sync_pb::SyncEntity entity;
+
+ entity.set_id_string(type_root_id_);
+ entity.set_parent_id_string("r");
+ entity.set_version(1000);
+ entity.set_ctime(TimeToProtoTime(base::Time::UnixEpoch()));
+ entity.set_mtime(TimeToProtoTime(base::Time::UnixEpoch()));
+ entity.set_server_defined_unique_tag(ModelTypeToRootTag(type_));
+ entity.set_deleted(false);
+ AddDefaultFieldValue(type_, entity.mutable_specifics());
+
+ return entity;
+}
+
+sync_pb::SyncEntity SingleTypeMockServer::UpdateFromServer(
+ int64 version_offset,
+ const std::string& tag_hash,
+ const sync_pb::EntitySpecifics& specifics) {
+ int64 old_version = GetServerVersion(tag_hash);
+ int64 version = old_version + version_offset;
+ if (version > old_version) {
+ SetServerVersion(tag_hash, version);
+ }
+
+ sync_pb::SyncEntity entity;
+
+ entity.set_id_string(GenerateId(tag_hash));
+ entity.set_parent_id_string(type_root_id_);
+ entity.set_version(version);
+ entity.set_client_defined_unique_tag(tag_hash);
+ entity.set_deleted(false);
+ entity.mutable_specifics()->CopyFrom(specifics);
+
+ // Unimportant fields, set for completeness only.
+ base::Time ctime = base::Time::UnixEpoch() + base::TimeDelta::FromDays(1);
+ base::Time mtime = ctime + base::TimeDelta::FromSeconds(version);
+ entity.set_ctime(TimeToProtoTime(ctime));
+ entity.set_mtime(TimeToProtoTime(mtime));
+ entity.set_name("Name: " + tag_hash);
+
+ return entity;
+}
+
+sync_pb::SyncEntity SingleTypeMockServer::TombstoneFromServer(
+ int64 version_offset,
+ const std::string& tag_hash) {
+ int64 old_version = GetServerVersion(tag_hash);
+ int64 version = old_version + version_offset;
+ if (version > old_version) {
+ SetServerVersion(tag_hash, version);
+ }
+
+ sync_pb::SyncEntity entity;
+
+ entity.set_id_string(GenerateId(tag_hash));
+ entity.set_parent_id_string(type_root_id_);
+ entity.set_version(version);
+ entity.set_client_defined_unique_tag(tag_hash);
+ entity.set_deleted(false);
+ AddDefaultFieldValue(type_, entity.mutable_specifics());
+
+ // Unimportant fields, set for completeness only.
+ base::Time ctime = base::Time::UnixEpoch() + base::TimeDelta::FromDays(1);
+ base::Time mtime = ctime + base::TimeDelta::FromSeconds(version);
+ entity.set_ctime(TimeToProtoTime(ctime));
+ entity.set_mtime(TimeToProtoTime(mtime));
+ entity.set_name("Tombstone");
+
+ return entity;
+}
+
+sync_pb::ClientToServerResponse SingleTypeMockServer::DoSuccessfulCommit(
+ const sync_pb::ClientToServerMessage& message) {
+ commit_messages_.push_back(message);
+
+ sync_pb::ClientToServerResponse response;
+ sync_pb::CommitResponse* commit_response = response.mutable_commit();
+
+ const RepeatedPtrField<sync_pb::SyncEntity>& entries =
+ message.commit().entries();
+ for (RepeatedPtrField<sync_pb::SyncEntity>::const_iterator it =
+ entries.begin();
+ it != entries.end();
+ ++it) {
+ const std::string tag_hash = it->client_defined_unique_tag();
+
+ committed_items_[tag_hash] = *it;
+
+ // Every commit increments the version number.
+ int64 version = GetServerVersion(tag_hash);
+ version++;
+ SetServerVersion(tag_hash, version);
+
+ sync_pb::CommitResponse_EntryResponse* entryresponse =
+ commit_response->add_entryresponse();
+ entryresponse->set_response_type(sync_pb::CommitResponse::SUCCESS);
+ entryresponse->set_id_string(GenerateId(tag_hash));
+ entryresponse->set_parent_id_string(it->parent_id_string());
+ entryresponse->set_version(version);
+ entryresponse->set_name(it->name());
+ entryresponse->set_mtime(it->mtime());
+ }
+
+ return response;
+}
+
+size_t SingleTypeMockServer::GetNumCommitMessages() const {
+ return commit_messages_.size();
+}
+
+sync_pb::ClientToServerMessage SingleTypeMockServer::GetNthCommitMessage(
+ size_t n) const {
+ DCHECK_LT(n, GetNumCommitMessages());
+ return commit_messages_[n];
+}
+
+bool SingleTypeMockServer::HasCommitEntity(const std::string& tag_hash) const {
+ return committed_items_.find(tag_hash) != committed_items_.end();
+}
+
+sync_pb::SyncEntity SingleTypeMockServer::GetLastCommittedEntity(
+ const std::string& tag_hash) const {
+ DCHECK(HasCommitEntity(tag_hash));
+ return committed_items_.find(tag_hash)->second;
+}
+
+sync_pb::DataTypeProgressMarker SingleTypeMockServer::GetProgress() const {
+ sync_pb::DataTypeProgressMarker progress;
+ progress.set_data_type_id(type_);
+ progress.set_token("non_null_progress_token");
+ return progress;
+}
+
+sync_pb::DataTypeContext SingleTypeMockServer::GetContext() const {
+ return sync_pb::DataTypeContext();
+}
+
+std::string SingleTypeMockServer::GenerateId(const std::string& tag_hash) {
+ return "FakeId:" + tag_hash;
+}
+
+int64 SingleTypeMockServer::GetServerVersion(
+ const std::string& tag_hash) const {
+ std::map<const std::string, int64>::const_iterator it;
+ it = server_versions_.find(tag_hash);
+ // Server versions do not necessarily start at 1 or 0.
+ if (it == server_versions_.end()) {
+ return 2048;
+ } else {
+ return it->second;
+ }
+}
+
+void SingleTypeMockServer::SetServerVersion(const std::string& tag_hash,
+ int64 version) {
+ server_versions_[tag_hash] = version;
+}
+
+} // namespace syncer
« no previous file with comments | « sync/test/engine/single_type_mock_server.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698