1 /* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef OHOS_DISTRIBUTEDDATA_SERVICE_TEST_DB_STORE_MOCK_H 16 #define OHOS_DISTRIBUTEDDATA_SERVICE_TEST_DB_STORE_MOCK_H 17 #include "concurrent_map.h" 18 #include "kv_store_nb_delegate.h" 19 #include "store_types.h" 20 namespace OHOS { 21 namespace DistributedData { 22 class DBStoreMock : public DistributedDB::KvStoreNbDelegate { 23 public: 24 using DBStatus = DistributedDB::DBStatus; 25 using Entry = DistributedDB::Entry; 26 using Key = DistributedDB::Key; 27 using Value = DistributedDB::Value; 28 using KvStoreResultSet = DistributedDB::KvStoreResultSet; 29 using Query = DistributedDB::Query; 30 using KvStoreNbPublishOnConflict = DistributedDB::KvStoreNbPublishOnConflict; 31 using KvStoreObserver = DistributedDB::KvStoreObserver; 32 using SyncMode = DistributedDB::SyncMode; 33 using PragmaCmd = DistributedDB::PragmaCmd; 34 using PragmaData = DistributedDB::PragmaData; 35 using CipherPassword = DistributedDB::CipherPassword; 36 using KvStoreNbConflictNotifier = DistributedDB::KvStoreNbConflictNotifier; 37 using SecurityOption = DistributedDB::SecurityOption; 38 using RemotePushFinishedNotifier = DistributedDB::RemotePushFinishedNotifier; 39 using PushDataInterceptor = DistributedDB::PushDataInterceptor; 40 using UpdateKeyCallback = DistributedDB::UpdateKeyCallback; 41 using WatermarkInfo = DistributedDB::WatermarkInfo; 42 using ClearMode = DistributedDB::ClearMode; 43 using DataBaseSchema = DistributedDB::DataBaseSchema; 44 using ICloudDb = DistributedDB::ICloudDb; 45 using CloudSyncOption = DistributedDB::CloudSyncOption; 46 using SyncProcessCallback = DistributedDB::SyncProcessCallback; 47 using GenerateCloudVersionCallback = DistributedDB::GenerateCloudVersionCallback; 48 using CloudSyncConfig = DistributedDB::CloudSyncConfig; 49 using DataInterceptor = DistributedDB::DataInterceptor; 50 using DeviceSyncOption = DistributedDB::DeviceSyncOption; 51 using DeviceSyncProcessCallback = DistributedDB::DeviceSyncProcessCallback; 52 DBStatus Get(const Key &key, Value &value) const override; 53 DBStatus GetEntries(const Key &keyPrefix, std::vector<Entry> &entries) const override; 54 DBStatus GetEntries(const Key &keyPrefix, KvStoreResultSet *&resultSet) const override; 55 DBStatus GetEntries(const Query &query, std::vector<Entry> &entries) const override; 56 DBStatus GetEntries(const Query &query, KvStoreResultSet *&resultSet) const override; 57 DBStatus GetCount(const Query &query, int &count) const override; 58 DBStatus CloseResultSet(KvStoreResultSet *&resultSet) override; 59 DBStatus Put(const Key &key, const Value &value) override; 60 DBStatus PutBatch(const std::vector<Entry> &entries) override; 61 DBStatus DeleteBatch(const std::vector<Key> &keys) override; 62 DBStatus Delete(const Key &key) override; 63 DBStatus GetLocal(const Key &key, Value &value) const override; 64 DBStatus GetLocalEntries(const Key &keyPrefix, std::vector<Entry> &entries) const override; 65 DBStatus PutLocal(const Key &key, const Value &value) override; 66 DBStatus DeleteLocal(const Key &key) override; 67 DBStatus PublishLocal(const Key &key, bool deleteLocal, bool updateTimestamp, 68 const KvStoreNbPublishOnConflict &onConflict) override; 69 DBStatus UnpublishToLocal(const Key &key, bool deletePublic, bool updateTimestamp) override; 70 DBStatus RegisterObserver(const Key &key, unsigned int mode, KvStoreObserver *observer) override; 71 DBStatus UnRegisterObserver(const KvStoreObserver *observer) override; 72 DBStatus RemoveDeviceData(const std::string &device) override; 73 std::string GetStoreId() const override; 74 DBStatus Sync(const std::vector<std::string> &devices, SyncMode mode, 75 const std::function<void(const std::map<std::string, DBStatus> &)> &onComplete, bool wait) override; 76 DBStatus Pragma(PragmaCmd cmd, PragmaData ¶mData) override; 77 DBStatus SetConflictNotifier(int conflictType, const KvStoreNbConflictNotifier ¬ifier) override; 78 DBStatus Rekey(const CipherPassword &password) override; 79 DBStatus Export(const std::string &filePath, const CipherPassword &passwd, bool force) override; 80 DBStatus Import(const std::string &filePath, const CipherPassword &passwd, bool isNeedIntegrityCheck) override; 81 DBStatus StartTransaction() override; 82 DBStatus Commit() override; 83 DBStatus Rollback() override; 84 DBStatus PutLocalBatch(const std::vector<Entry> &entries) override; 85 DBStatus DeleteLocalBatch(const std::vector<Key> &keys) override; 86 DBStatus GetSecurityOption(SecurityOption &option) const override; 87 DBStatus SetRemotePushFinishedNotify(const RemotePushFinishedNotifier ¬ifier) override; 88 DBStatus Sync(const std::vector<std::string> &devices, SyncMode mode, 89 const std::function<void(const std::map<std::string, DBStatus> &)> &onComplete, const Query &query, 90 bool wait) override; 91 DBStatus CheckIntegrity() const override; 92 DBStatus SetEqualIdentifier(const std::string &identifier, const std::vector<std::string> &targets) override; 93 DBStatus SetPushDataInterceptor(const PushDataInterceptor &interceptor) override; 94 DBStatus SubscribeRemoteQuery(const std::vector<std::string> &devices, 95 const std::function<void(const std::map<std::string, DBStatus> &)> &onComplete, const Query &query, 96 bool wait) override; 97 DBStatus UnSubscribeRemoteQuery(const std::vector<std::string> &devices, 98 const std::function<void(const std::map<std::string, DBStatus> &)> &onComplete, const Query &query, 99 bool wait) override; 100 DBStatus RemoveDeviceData() override; 101 DBStatus GetKeys(const Key &keyPrefix, std::vector<Key> &keys) const override; 102 size_t GetSyncDataSize(const std::string &device) const override; 103 DBStatus UpdateKey(const UpdateKeyCallback &callback) override; 104 std::pair<DBStatus, WatermarkInfo> GetWatermarkInfo(const std::string &device) override; 105 DBStatus Sync(const CloudSyncOption &option, const SyncProcessCallback &onProcess) override; 106 DBStatus SetCloudDB(const std::map<std::string, std::shared_ptr<ICloudDb>> &cloudDBs) override; 107 DBStatus SetCloudDbSchema(const std::map<std::string, DataBaseSchema> &schema) override; 108 DBStatus RemoveDeviceData(const std::string &device, ClearMode mode) override; 109 DBStatus RemoveDeviceData(const std::string &device, const std::string &user, ClearMode mode) override; 110 int32_t GetTaskCount() override; 111 void SetGenCloudVersionCallback(const GenerateCloudVersionCallback &callback) override; 112 std::pair<DBStatus, std::map<std::string, std::string>> GetCloudVersion(const std::string &device) override; 113 DBStatus SetCloudSyncConfig(const CloudSyncConfig &config) override; 114 DBStatus SetReceiveDataInterceptor(const DataInterceptor &interceptor) override; 115 DBStatus GetDeviceEntries(const std::string &device, std::vector<Entry> &entries) const override; 116 DBStatus Sync(const DeviceSyncOption &option, const DeviceSyncProcessCallback &onProcess) override; 117 DBStatus CancelSync(uint32_t syncId) override; 118 DatabaseStatus GetDatabaseStatus() const override; 119 private: 120 static const uint32_t DEFAULT_SIZE = 0; 121 DBStatus Get(ConcurrentMap<Key, Value> &store, const Key &key, Value &value) const; 122 DBStatus GetEntries(ConcurrentMap<Key, Value> &store, const Key &keyPrefix, std::vector<Entry> &entries) const; 123 DBStatus PutBatch(ConcurrentMap<Key, Value> &store, const std::vector<Entry> &entries); 124 DBStatus DeleteBatch(ConcurrentMap<Key, Value> &store, const std::vector<Key> &keys); 125 mutable ConcurrentMap<Key, Value> entries_; 126 mutable ConcurrentMap<Key, Value> localEntries_; 127 mutable ConcurrentMap<KvStoreObserver *, std::set<Key>> observers_; 128 }; 129 } // namespace DistributedData 130 } // namespace OHOS 131 #endif // OHOS_DISTRIBUTEDDATA_SERVICE_TEST_DB_STORE_MOCK_H 132