| Index: sync/test/engine/mock_connection_manager.h
|
| diff --git a/sync/test/engine/mock_connection_manager.h b/sync/test/engine/mock_connection_manager.h
|
| deleted file mode 100644
|
| index a47c4b30b17f4c3a435994f22552900147ab3262..0000000000000000000000000000000000000000
|
| --- a/sync/test/engine/mock_connection_manager.h
|
| +++ /dev/null
|
| @@ -1,423 +0,0 @@
|
| -// Copyright (c) 2012 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.
|
| -//
|
| -// Mock ServerConnectionManager class for use in client unit tests.
|
| -
|
| -#ifndef SYNC_TEST_ENGINE_MOCK_CONNECTION_MANAGER_H_
|
| -#define SYNC_TEST_ENGINE_MOCK_CONNECTION_MANAGER_H_
|
| -
|
| -#include <stdint.h>
|
| -
|
| -#include <bitset>
|
| -#include <list>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/callback.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/macros.h"
|
| -#include "base/memory/scoped_vector.h"
|
| -#include "base/synchronization/lock.h"
|
| -#include "sync/engine/net/server_connection_manager.h"
|
| -#include "sync/internal_api/public/base/model_type.h"
|
| -#include "sync/internal_api/public/base/unique_position.h"
|
| -#include "sync/protocol/sync.pb.h"
|
| -
|
| -namespace syncer {
|
| -
|
| -class MockConnectionManager : public ServerConnectionManager {
|
| - public:
|
| - class MidCommitObserver {
|
| - public:
|
| - virtual void Observe() = 0;
|
| -
|
| - protected:
|
| - virtual ~MidCommitObserver() {}
|
| - };
|
| -
|
| - MockConnectionManager(syncable::Directory*,
|
| - CancelationSignal* signal);
|
| - ~MockConnectionManager() override;
|
| -
|
| - // Overridden ServerConnectionManager functions.
|
| - bool PostBufferToPath(PostBufferParams*,
|
| - const std::string& path,
|
| - const std::string& auth_token) override;
|
| -
|
| - // Control of commit response.
|
| - // NOTE: Commit callback is invoked only once then reset.
|
| - void SetMidCommitCallback(const base::Closure& callback);
|
| - void SetMidCommitObserver(MidCommitObserver* observer);
|
| -
|
| - // Set this if you want commit to perform commit time rename. Will request
|
| - // that the client renames all commited entries, prepending this string.
|
| - void SetCommitTimeRename(const std::string& prepend);
|
| -
|
| - // Generic versions of AddUpdate functions. Tests using these function should
|
| - // compile for both the int64_t and string id based versions of the server.
|
| - // The SyncEntity returned is only valid until the Sync is completed
|
| - // (e.g. with SyncShare.) It allows to add further entity properties before
|
| - // sync, using SetLastXXX() methods and/or GetMutableLastUpdate().
|
| - sync_pb::SyncEntity* AddUpdateDirectory(
|
| - syncable::Id id,
|
| - syncable::Id parent_id,
|
| - const std::string& name,
|
| - int64_t version,
|
| - int64_t sync_ts,
|
| - const std::string& originator_cache_guid,
|
| - const std::string& originator_client_item_id);
|
| - sync_pb::SyncEntity* AddUpdateBookmark(
|
| - syncable::Id id,
|
| - syncable::Id parent_id,
|
| - const std::string& name,
|
| - int64_t version,
|
| - int64_t sync_ts,
|
| - const std::string& originator_cache_guid,
|
| - const std::string& originator_client_item_id);
|
| - // Versions of the AddUpdate functions that accept integer IDs.
|
| - sync_pb::SyncEntity* AddUpdateDirectory(
|
| - int id,
|
| - int parent_id,
|
| - const std::string& name,
|
| - int64_t version,
|
| - int64_t sync_ts,
|
| - const std::string& originator_cache_guid,
|
| - const std::string& originator_client_item_id);
|
| - sync_pb::SyncEntity* AddUpdateBookmark(
|
| - int id,
|
| - int parent_id,
|
| - const std::string& name,
|
| - int64_t version,
|
| - int64_t sync_ts,
|
| - const std::string& originator_cache_guid,
|
| - const std::string& originator_client_item_id);
|
| - // New protocol versions of the AddUpdate functions.
|
| - sync_pb::SyncEntity* AddUpdateDirectory(
|
| - const std::string& id,
|
| - const std::string& parent_id,
|
| - const std::string& name,
|
| - int64_t version,
|
| - int64_t sync_ts,
|
| - const std::string& originator_cache_guid,
|
| - const std::string& originator_client_item_id);
|
| - sync_pb::SyncEntity* AddUpdateBookmark(
|
| - const std::string& id,
|
| - const std::string& parent_id,
|
| - const std::string& name,
|
| - int64_t version,
|
| - int64_t sync_ts,
|
| - const std::string& originator_cache_guid,
|
| - const std::string& originator_client_item_id);
|
| - // Versions of the AddUpdate function that accept specifics.
|
| - sync_pb::SyncEntity* AddUpdateSpecifics(
|
| - int id,
|
| - int parent_id,
|
| - const std::string& name,
|
| - int64_t version,
|
| - int64_t sync_ts,
|
| - bool is_dir,
|
| - int64_t position,
|
| - const sync_pb::EntitySpecifics& specifics);
|
| - sync_pb::SyncEntity* AddUpdateSpecifics(
|
| - int id,
|
| - int parent_id,
|
| - const std::string& name,
|
| - int64_t version,
|
| - int64_t sync_ts,
|
| - bool is_dir,
|
| - int64_t position,
|
| - const sync_pb::EntitySpecifics& specifics,
|
| - const std::string& originator_cache_guid,
|
| - const std::string& originator_client_item_id);
|
| - sync_pb::SyncEntity* SetNigori(int id,
|
| - int64_t version,
|
| - int64_t sync_ts,
|
| - const sync_pb::EntitySpecifics& specifics);
|
| - // Unique client tag variant for adding items.
|
| - sync_pb::SyncEntity* AddUpdatePref(const std::string& id,
|
| - const std::string& parent_id,
|
| - const std::string& client_tag,
|
| - int64_t version,
|
| - int64_t sync_ts);
|
| -
|
| - // Find the last commit sent by the client, and replay it for the next get
|
| - // updates command. This can be used to simulate the GetUpdates that happens
|
| - // immediately after a successful commit.
|
| - sync_pb::SyncEntity* AddUpdateFromLastCommit();
|
| -
|
| - // Add a deleted item. Deletion records typically contain no
|
| - // additional information beyond the deletion, and no specifics.
|
| - // The server may send the originator fields.
|
| - void AddUpdateTombstone(const syncable::Id& id, ModelType type);
|
| -
|
| - void SetLastUpdateDeleted();
|
| - void SetLastUpdateServerTag(const std::string& tag);
|
| - void SetLastUpdateClientTag(const std::string& tag);
|
| - void SetLastUpdateOriginatorFields(const std::string& client_id,
|
| - const std::string& entry_id);
|
| - void SetLastUpdatePosition(int64_t position_in_parent);
|
| - void SetNewTimestamp(int ts);
|
| - void SetChangesRemaining(int64_t count);
|
| -
|
| - // Add a new batch of updates after the current one. Allows multiple
|
| - // GetUpdates responses to be buffered up, since the syncer may
|
| - // issue multiple requests during a sync cycle.
|
| - void NextUpdateBatch();
|
| -
|
| - void FailNextPostBufferToPathCall() { countdown_to_postbuffer_fail_ = 1; }
|
| - void FailNthPostBufferToPathCall(int n) { countdown_to_postbuffer_fail_ = n; }
|
| -
|
| - void SetKeystoreKey(const std::string& key);
|
| -
|
| - void FailNonPeriodicGetUpdates() { fail_non_periodic_get_updates_ = true; }
|
| -
|
| - // Simple inspectors.
|
| - bool client_stuck() const { return client_stuck_; }
|
| -
|
| - // warning: These take ownership of their input.
|
| - void SetGUClientCommand(sync_pb::ClientCommand* command);
|
| - void SetCommitClientCommand(sync_pb::ClientCommand* command);
|
| -
|
| - void SetTransientErrorId(syncable::Id);
|
| -
|
| - const std::vector<syncable::Id>& committed_ids() const {
|
| - return committed_ids_;
|
| - }
|
| - const std::vector<sync_pb::CommitMessage*>& commit_messages() const {
|
| - return commit_messages_.get();
|
| - }
|
| - const std::vector<sync_pb::CommitResponse*>& commit_responses() const {
|
| - return commit_responses_.get();
|
| - }
|
| - // Retrieve the last sent commit message.
|
| - const sync_pb::CommitMessage& last_sent_commit() const;
|
| -
|
| - // Retrieve the last returned commit response.
|
| - const sync_pb::CommitResponse& last_commit_response() const;
|
| -
|
| - // Retrieve the last request submitted to the server (regardless of type).
|
| - const sync_pb::ClientToServerMessage& last_request() const;
|
| -
|
| - // Retrieve the cumulative collection of all requests sent by clients.
|
| - const std::vector<sync_pb::ClientToServerMessage>& requests() const;
|
| -
|
| - void set_conflict_all_commits(bool value) {
|
| - conflict_all_commits_ = value;
|
| - }
|
| - void set_next_new_id(int value) {
|
| - next_new_id_ = value;
|
| - }
|
| - void set_conflict_n_commits(int value) {
|
| - conflict_n_commits_ = value;
|
| - }
|
| -
|
| - void set_use_legacy_bookmarks_protocol(bool value) {
|
| - use_legacy_bookmarks_protocol_ = value;
|
| - }
|
| -
|
| - void set_store_birthday(const std::string& new_birthday) {
|
| - // Multiple threads can set store_birthday_ in our tests, need to lock it to
|
| - // ensure atomic read/writes and avoid race conditions.
|
| - base::AutoLock lock(store_birthday_lock_);
|
| - store_birthday_ = new_birthday;
|
| - }
|
| -
|
| - void set_partial_throttling(bool value) { partialThrottling_ = value; }
|
| -
|
| - // Retrieve the number of GetUpdates requests that the mock server has
|
| - // seen since the last time this function was called. Can be used to
|
| - // verify that a GetUpdates actually did or did not happen after running
|
| - // the syncer.
|
| - int GetAndClearNumGetUpdatesRequests() {
|
| - int result = num_get_updates_requests_;
|
| - num_get_updates_requests_ = 0;
|
| - return result;
|
| - }
|
| -
|
| - // Expect that GetUpdates will request exactly the types indicated in
|
| - // the bitset.
|
| - void ExpectGetUpdatesRequestTypes(ModelTypeSet expected_filter) {
|
| - expected_filter_ = expected_filter;
|
| - }
|
| -
|
| - // Set throttled date types.
|
| - void SetThrottledTypes(ModelTypeSet types) { throttled_type_ = types; }
|
| -
|
| - void SetServerReachable();
|
| -
|
| - void SetServerNotReachable();
|
| -
|
| - // Updates our internal state as if we had attempted a connection. Does not
|
| - // send notifications as a real connection attempt would. This is useful in
|
| - // cases where we're mocking out most of the code that performs network
|
| - // requests.
|
| - void UpdateConnectionStatus();
|
| -
|
| - void SetServerStatus(HttpResponse::ServerConnectionCode server_status);
|
| -
|
| - // Return by copy to be thread-safe.
|
| - const std::string store_birthday() {
|
| - base::AutoLock lock(store_birthday_lock_);
|
| - return store_birthday_;
|
| - }
|
| -
|
| - // Explicitly indicate that we will not be fetching some updates.
|
| - void ClearUpdatesQueue() {
|
| - update_queue_.clear();
|
| - }
|
| -
|
| - // Locate the most recent update message for purpose of alteration.
|
| - sync_pb::SyncEntity* GetMutableLastUpdate();
|
| -
|
| - // Adds a new progress marker to the last update.
|
| - sync_pb::DataTypeProgressMarker* AddUpdateProgressMarker();
|
| -
|
| - private:
|
| - sync_pb::SyncEntity* AddUpdateFull(syncable::Id id,
|
| - syncable::Id parentid,
|
| - const std::string& name,
|
| - int64_t version,
|
| - int64_t sync_ts,
|
| - bool is_dir);
|
| - sync_pb::SyncEntity* AddUpdateFull(const std::string& id,
|
| - const std::string& parentid,
|
| - const std::string& name,
|
| - int64_t version,
|
| - int64_t sync_ts,
|
| - bool is_dir);
|
| - sync_pb::SyncEntity* AddUpdateMeta(const std::string& id,
|
| - const std::string& parentid,
|
| - const std::string& name,
|
| - int64_t version,
|
| - int64_t sync_ts);
|
| -
|
| - // Functions to handle the various types of server request.
|
| - void ProcessGetUpdates(sync_pb::ClientToServerMessage* csm,
|
| - sync_pb::ClientToServerResponse* response);
|
| - void ProcessCommit(sync_pb::ClientToServerMessage* csm,
|
| - sync_pb::ClientToServerResponse* response_buffer);
|
| - void ProcessClearServerData(sync_pb::ClientToServerMessage* csm,
|
| - sync_pb::ClientToServerResponse* response);
|
| - void AddDefaultBookmarkData(sync_pb::SyncEntity* entity, bool is_folder);
|
| -
|
| - // Determine if one entry in a commit should be rejected with a conflict.
|
| - bool ShouldConflictThisCommit();
|
| -
|
| - // Determine if the given item's commit request should be refused with
|
| - // a TRANSIENT_ERROR response.
|
| - bool ShouldTransientErrorThisId(syncable::Id id);
|
| -
|
| - // Generate a numeric position_in_parent value. We use a global counter
|
| - // that only decreases; this simulates new objects always being added to the
|
| - // front of the ordering.
|
| - int64_t GeneratePositionInParent() { return next_position_in_parent_--; }
|
| -
|
| - // Get a mutable update response which will eventually be returned to the
|
| - // client.
|
| - sync_pb::GetUpdatesResponse* GetUpdateResponse();
|
| - void ApplyToken();
|
| -
|
| - // Determine whether an progress marker array (like that sent in
|
| - // GetUpdates.from_progress_marker) indicates that a particular ModelType
|
| - // should be included.
|
| - bool IsModelTypePresentInSpecifics(
|
| - const google::protobuf::RepeatedPtrField<
|
| - sync_pb::DataTypeProgressMarker>& filter,
|
| - ModelType value);
|
| -
|
| - sync_pb::DataTypeProgressMarker const* GetProgressMarkerForType(
|
| - const google::protobuf::RepeatedPtrField<
|
| - sync_pb::DataTypeProgressMarker>& filter,
|
| - ModelType value);
|
| -
|
| - // When false, we pretend to have network connectivity issues.
|
| - bool server_reachable_;
|
| -
|
| - // All IDs that have been committed.
|
| - std::vector<syncable::Id> committed_ids_;
|
| -
|
| - // List of IDs which should return a transient error.
|
| - std::vector<syncable::Id> transient_error_ids_;
|
| -
|
| - // Control of when/if we return conflicts.
|
| - bool conflict_all_commits_;
|
| - int conflict_n_commits_;
|
| -
|
| - // Commit messages we've sent, and responses we've returned.
|
| - ScopedVector<sync_pb::CommitMessage> commit_messages_;
|
| - ScopedVector<sync_pb::CommitResponse> commit_responses_;
|
| -
|
| - // The next id the mock will return to a commit.
|
| - int next_new_id_;
|
| -
|
| - // The store birthday we send to the client.
|
| - std::string store_birthday_;
|
| - base::Lock store_birthday_lock_;
|
| - bool store_birthday_sent_;
|
| - bool client_stuck_;
|
| - std::string commit_time_rename_prepended_string_;
|
| -
|
| - // On each PostBufferToPath() call, we decrement this counter. The call fails
|
| - // iff we hit zero at that call.
|
| - int countdown_to_postbuffer_fail_;
|
| -
|
| - // Our directory. Used only to ensure that we are not holding the transaction
|
| - // lock when performing network I/O. Can be NULL if the test author is
|
| - // confident this can't happen.
|
| - syncable::Directory* directory_;
|
| -
|
| - // The updates we'll return to the next request.
|
| - std::list<sync_pb::GetUpdatesResponse> update_queue_;
|
| - base::Closure mid_commit_callback_;
|
| - MidCommitObserver* mid_commit_observer_;
|
| -
|
| - // The keystore key we return for a GetUpdates with need_encryption_key set.
|
| - std::string keystore_key_;
|
| -
|
| - // The AUTHENTICATE response we'll return for auth requests.
|
| - sync_pb::AuthenticateResponse auth_response_;
|
| - // What we use to determine if we should return SUCCESS or BAD_AUTH_TOKEN.
|
| - std::string valid_auth_token_;
|
| -
|
| - // Whether we are faking a server mandating clients to throttle requests.
|
| - // Protected by |response_code_override_lock_|.
|
| - bool throttling_;
|
| -
|
| - // Whether we are faking a server mandating clients to partial throttle
|
| - // requests.
|
| - // Protected by |response_code_override_lock_|.
|
| - bool partialThrottling_;
|
| -
|
| - base::Lock response_code_override_lock_;
|
| -
|
| - // True if we are only accepting GetUpdatesCallerInfo::PERIODIC requests.
|
| - bool fail_non_periodic_get_updates_;
|
| -
|
| - std::unique_ptr<sync_pb::ClientCommand> gu_client_command_;
|
| - std::unique_ptr<sync_pb::ClientCommand> commit_client_command_;
|
| -
|
| - // The next value to use for the position_in_parent property.
|
| - int64_t next_position_in_parent_;
|
| -
|
| - // The default is to use the newer sync_pb::BookmarkSpecifics-style protocol.
|
| - // If this option is set to true, then the MockConnectionManager will
|
| - // use the older sync_pb::SyncEntity_BookmarkData-style protocol.
|
| - bool use_legacy_bookmarks_protocol_;
|
| -
|
| - ModelTypeSet expected_filter_;
|
| -
|
| - ModelTypeSet throttled_type_;
|
| -
|
| - int num_get_updates_requests_;
|
| -
|
| - std::string next_token_;
|
| -
|
| - std::vector<sync_pb::ClientToServerMessage> requests_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(MockConnectionManager);
|
| -};
|
| -
|
| -} // namespace syncer
|
| -
|
| -#endif // SYNC_TEST_ENGINE_MOCK_CONNECTION_MANAGER_H_
|
|
|