• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 &paramData) override;
65     DBStatus SetConflictNotifier(int conflictType, const KvStoreNbConflictNotifier &notifier) 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 &notifier) 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