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 "kv_store_nb_delegate.h" 18 #include "concurrent_map.h" 19 namespace OHOS { 20 namespace DistributedData { 21 class DBStoreMock : public DistributedDB::KvStoreNbDelegate { 22 public: 23 using DBStatus = DistributedDB::DBStatus; 24 using Entry = DistributedDB::Entry; 25 using Key = DistributedDB::Key; 26 using Value = DistributedDB::Value; 27 using KvStoreResultSet = DistributedDB::KvStoreResultSet; 28 using Query = DistributedDB::Query; 29 using KvStoreNbPublishOnConflict = DistributedDB::KvStoreNbPublishOnConflict; 30 using KvStoreObserver = DistributedDB::KvStoreObserver; 31 using SyncMode = DistributedDB::SyncMode; 32 using PragmaCmd = DistributedDB::PragmaCmd; 33 using PragmaData = DistributedDB::PragmaData; 34 using CipherPassword = DistributedDB::CipherPassword; 35 using KvStoreNbConflictNotifier = DistributedDB::KvStoreNbConflictNotifier; 36 using SecurityOption = DistributedDB::SecurityOption; 37 using RemotePushFinishedNotifier = DistributedDB::RemotePushFinishedNotifier; 38 using PushDataInterceptor = DistributedDB::PushDataInterceptor; 39 using UpdateKeyCallback = DistributedDB::UpdateKeyCallback; 40 using WatermarkInfo = DistributedDB::WatermarkInfo; 41 using ClearMode = DistributedDB::ClearMode; 42 using DataBaseSchema = DistributedDB::DataBaseSchema; 43 using ICloudDb = DistributedDB::ICloudDb; 44 using CloudSyncOption = DistributedDB::CloudSyncOption; 45 using SyncProcessCallback = DistributedDB::SyncProcessCallback; 46 using GenerateCloudVersionCallback = DistributedDB::GenerateCloudVersionCallback; 47 using CloudSyncConfig = DistributedDB::CloudSyncConfig; 48 using DataInterceptor = DistributedDB::DataInterceptor; 49 DBStatus Get(const Key &key, Value &value) const override; 50 DBStatus GetEntries(const Key &keyPrefix, std::vector<Entry> &entries) const override; 51 DBStatus GetEntries(const Key &keyPrefix, KvStoreResultSet *&resultSet) const override; 52 DBStatus GetEntries(const Query &query, std::vector<Entry> &entries) const override; 53 DBStatus GetEntries(const Query &query, KvStoreResultSet *&resultSet) const override; 54 DBStatus GetCount(const Query &query, int &count) const override; 55 DBStatus CloseResultSet(KvStoreResultSet *&resultSet) override; 56 DBStatus Put(const Key &key, const Value &value) override; 57 DBStatus PutBatch(const std::vector<Entry> &entries) override; 58 DBStatus DeleteBatch(const std::vector<Key> &keys) override; 59 DBStatus Delete(const Key &key) override; 60 DBStatus GetLocal(const Key &key, Value &value) const override; 61 DBStatus GetLocalEntries(const Key &keyPrefix, std::vector<Entry> &entries) const override; 62 DBStatus PutLocal(const Key &key, const Value &value) override; 63 DBStatus DeleteLocal(const Key &key) override; 64 DBStatus PublishLocal(const Key &key, bool deleteLocal, bool updateTimestamp, 65 const KvStoreNbPublishOnConflict &onConflict) override; 66 DBStatus UnpublishToLocal(const Key &key, bool deletePublic, bool updateTimestamp) override; 67 DBStatus RegisterObserver(const Key &key, unsigned int mode, KvStoreObserver *observer) override; 68 DBStatus UnRegisterObserver(const KvStoreObserver *observer) override; 69 DBStatus RemoveDeviceData(const std::string &device) override; 70 std::string GetStoreId() const override; 71 DBStatus Sync(const std::vector<std::string> &devices, SyncMode mode, 72 const std::function<void(const std::map<std::string, DBStatus> &)> &onComplete, bool wait) override; 73 DBStatus Pragma(PragmaCmd cmd, PragmaData ¶mData) override; 74 DBStatus SetConflictNotifier(int conflictType, const KvStoreNbConflictNotifier ¬ifier) override; 75 DBStatus Rekey(const CipherPassword &password) override; 76 DBStatus Export(const std::string &filePath, const CipherPassword &passwd, bool force) override; 77 DBStatus Import(const std::string &filePath, const CipherPassword &passwd) override; 78 DBStatus StartTransaction() override; 79 DBStatus Commit() override; 80 DBStatus Rollback() override; 81 DBStatus PutLocalBatch(const std::vector<Entry> &entries) override; 82 DBStatus DeleteLocalBatch(const std::vector<Key> &keys) override; 83 DBStatus GetSecurityOption(SecurityOption &option) const override; 84 DBStatus SetRemotePushFinishedNotify(const RemotePushFinishedNotifier ¬ifier) override; 85 DBStatus Sync(const std::vector<std::string> &devices, SyncMode mode, 86 const std::function<void(const std::map<std::string, DBStatus> &)> &onComplete, const Query &query, 87 bool wait) override; 88 DBStatus CheckIntegrity() const override; 89 DBStatus SetEqualIdentifier(const std::string &identifier, const std::vector<std::string> &targets) override; 90 DBStatus SetPushDataInterceptor(const PushDataInterceptor &interceptor) override; 91 DBStatus SubscribeRemoteQuery(const std::vector<std::string> &devices, 92 const std::function<void(const std::map<std::string, DBStatus> &)> &onComplete, const Query &query, 93 bool wait) override; 94 DBStatus UnSubscribeRemoteQuery(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 RemoveDeviceData() override; 98 DBStatus GetKeys(const Key &keyPrefix, std::vector<Key> &keys) const override; 99 size_t GetSyncDataSize(const std::string &device) const override; 100 DBStatus UpdateKey(const UpdateKeyCallback &callback) override; 101 std::pair<DBStatus, WatermarkInfo> GetWatermarkInfo(const std::string &device) override; 102 DBStatus Sync(const CloudSyncOption &option, const SyncProcessCallback &onProcess) override; 103 DBStatus SetCloudDB(const std::map<std::string, std::shared_ptr<ICloudDb>> &cloudDBs) override; 104 DBStatus SetCloudDbSchema(const std::map<std::string, DataBaseSchema> &schema) override; 105 DBStatus RemoveDeviceData(const std::string &device, ClearMode mode) override; 106 DBStatus RemoveDeviceData(const std::string &device, const std::string &user, ClearMode mode) override; 107 int32_t GetTaskCount() override; 108 void SetGenCloudVersionCallback(const GenerateCloudVersionCallback &callback) override; 109 std::pair<DBStatus, std::map<std::string, std::string>> GetCloudVersion(const std::string &device) override; 110 DBStatus SetCloudSyncConfig(const CloudSyncConfig &config) override; 111 DBStatus SetReceiveDataInterceptor(const DataInterceptor &interceptor) override; 112 DBStatus GetDeviceEntries(const std::string &device, std::vector<Entry> &entries) const override; 113 private: 114 static const uint32_t DEFAULT_SIZE = 0; 115 DBStatus Get(ConcurrentMap<Key, Value> &store, const Key &key, Value &value) const; 116 DBStatus GetEntries(ConcurrentMap<Key, Value> &store, const Key &keyPrefix, std::vector<Entry> &entries) const; 117 DBStatus PutBatch(ConcurrentMap<Key, Value> &store, const std::vector<Entry> &entries); 118 DBStatus DeleteBatch(ConcurrentMap<Key, Value> &store, const std::vector<Key> &keys); 119 mutable ConcurrentMap<Key, Value> entries_; 120 mutable ConcurrentMap<Key, Value> localEntries_; 121 mutable ConcurrentMap<KvStoreObserver *, std::set<Key>> observers_; 122 }; 123 } // namespace DistributedData 124 } // namespace OHOS 125 #endif // OHOS_DISTRIBUTEDDATA_SERVICE_TEST_DB_STORE_MOCK_H 126