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 DBStatus Get(const Key &key, Value &value) const override; 41 DBStatus GetEntries(const Key &keyPrefix, std::vector<Entry> &entries) const override; 42 DBStatus GetEntries(const Key &keyPrefix, KvStoreResultSet *&resultSet) const override; 43 DBStatus GetEntries(const Query &query, std::vector<Entry> &entries) const override; 44 DBStatus GetEntries(const Query &query, KvStoreResultSet *&resultSet) const override; 45 DBStatus GetCount(const Query &query, int &count) const override; 46 DBStatus CloseResultSet(KvStoreResultSet *&resultSet) override; 47 DBStatus Put(const Key &key, const Value &value) override; 48 DBStatus PutBatch(const std::vector<Entry> &entries) override; 49 DBStatus DeleteBatch(const std::vector<Key> &keys) override; 50 DBStatus Delete(const Key &key) override; 51 DBStatus GetLocal(const Key &key, Value &value) const override; 52 DBStatus GetLocalEntries(const Key &keyPrefix, std::vector<Entry> &entries) const override; 53 DBStatus PutLocal(const Key &key, const Value &value) override; 54 DBStatus DeleteLocal(const Key &key) override; 55 DBStatus PublishLocal(const Key &key, bool deleteLocal, bool updateTimestamp, 56 const KvStoreNbPublishOnConflict &onConflict) override; 57 DBStatus UnpublishToLocal(const Key &key, bool deletePublic, bool updateTimestamp) override; 58 DBStatus RegisterObserver(const Key &key, unsigned int mode, KvStoreObserver *observer) override; 59 DBStatus UnRegisterObserver(const KvStoreObserver *observer) override; 60 DBStatus RemoveDeviceData(const std::string &device) override; 61 std::string GetStoreId() const override; 62 DBStatus Sync(const std::vector<std::string> &devices, SyncMode mode, 63 const std::function<void(const std::map<std::string, DBStatus> &)> &onComplete, bool wait) override; 64 DBStatus Pragma(PragmaCmd cmd, PragmaData ¶mData) override; 65 DBStatus SetConflictNotifier(int conflictType, const KvStoreNbConflictNotifier ¬ifier) override; 66 DBStatus Rekey(const CipherPassword &password) override; 67 DBStatus Export(const std::string &filePath, const CipherPassword &passwd, bool force) override; 68 DBStatus Import(const std::string &filePath, const CipherPassword &passwd) override; 69 DBStatus StartTransaction() override; 70 DBStatus Commit() override; 71 DBStatus Rollback() override; 72 DBStatus PutLocalBatch(const std::vector<Entry> &entries) override; 73 DBStatus DeleteLocalBatch(const std::vector<Key> &keys) override; 74 DBStatus GetSecurityOption(SecurityOption &option) const override; 75 DBStatus SetRemotePushFinishedNotify(const RemotePushFinishedNotifier ¬ifier) override; 76 DBStatus Sync(const std::vector<std::string> &devices, SyncMode mode, 77 const std::function<void(const std::map<std::string, DBStatus> &)> &onComplete, const Query &query, 78 bool wait) override; 79 DBStatus CheckIntegrity() const override; 80 DBStatus SetEqualIdentifier(const std::string &identifier, const std::vector<std::string> &targets) override; 81 DBStatus SetPushDataInterceptor(const PushDataInterceptor &interceptor) override; 82 DBStatus SubscribeRemoteQuery(const std::vector<std::string> &devices, 83 const std::function<void(const std::map<std::string, DBStatus> &)> &onComplete, const Query &query, 84 bool wait) override; 85 DBStatus UnSubscribeRemoteQuery(const std::vector<std::string> &devices, 86 const std::function<void(const std::map<std::string, DBStatus> &)> &onComplete, const Query &query, 87 bool wait) override; 88 DBStatus RemoveDeviceData() override; 89 DBStatus GetKeys(const Key &keyPrefix, std::vector<Key> &keys) const override; 90 size_t GetSyncDataSize(const std::string &device) const override; 91 DBStatus UpdateKey(const UpdateKeyCallback &callback) override; 92 93 private: 94 static const uint32_t DEFAULT_SIZE = 0; 95 DBStatus Get(ConcurrentMap<Key, Value> &store, const Key &key, Value &value) const; 96 DBStatus GetEntries(ConcurrentMap<Key, Value> &store, const Key &keyPrefix, std::vector<Entry> &entries) const; 97 DBStatus PutBatch(ConcurrentMap<Key, Value> &store, const std::vector<Entry> &entries); 98 DBStatus DeleteBatch(ConcurrentMap<Key, Value> &store, const std::vector<Key> &keys); 99 mutable ConcurrentMap<Key, Value> entries_; 100 mutable ConcurrentMap<Key, Value> localEntries_; 101 mutable ConcurrentMap<KvStoreObserver *, std::set<Key>> observers_; 102 }; 103 } // namespace DistributedData 104 } // namespace OHOS 105 #endif // OHOS_DISTRIBUTEDDATA_SERVICE_TEST_DB_STORE_MOCK_H 106