• 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 "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 &paramData) override;
77     DBStatus SetConflictNotifier(int conflictType, const KvStoreNbConflictNotifier &notifier) 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 &notifier) 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