• 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 
16 #include "db_adapter_test.h"
17 
18 #include <cerrno>
19 #include <sys/stat.h>
20 #include <sys/types.h>
21 #include <vector>
22 
23 #include "capability_info.h"
24 #include "constants.h"
25 #define private public
26 #include "db_adapter.h"
27 #undef private
28 #include "dh_context.h"
29 #include "distributed_hardware_errno.h"
30 #include "distributed_hardware_log.h"
31 #include "mock_db_change_listener.h"
32 
33 using namespace testing::ext;
34 using namespace std;
35 
36 namespace OHOS {
37 namespace DistributedHardware {
38 #undef DH_LOG_TAG
39 #define DH_LOG_TAG "DbAdapterTest"
40 
41 namespace {
42 const string DATABASE_DIR = "/data/service/el1/public/database/dtbhardware_manager_service/";
43 const std::string DEV_NETWORK_ID_1 = "nt36a637105409e904d4da83790a4a9";
44 const string TEST_DEV_ID_0 = "bb536a637105409e904d4da83791aa11";
45 const string TEST_DEV_ID_1 = "bb536a637105409e904d4da83791bb22";
46 const string TEST_DEV_ID_2 = "bb536a637105409e904d4da83791bb33";
47 const string TEST_DEV_NAME = "Dev1";
48 const string TEST_DH_ID_0 = "Camera_00";
49 const string TEST_DH_ID_1 = "Mic_01";
50 const string TEST_DH_ID_2 = "Gps_02";
51 const string TEST_DH_ID_3 = "Display_03";
52 const string TEST_DH_ID_4 = "Input_04";
53 const string TEST_DH_ATTR_0 = "db_test_attr0";
54 const string TEST_DH_ATTR_1 = "db_test_attr1";
55 constexpr uint16_t TEST_DEV_TYPE = 0x11;
56 
57 const shared_ptr<CapabilityInfo> CAP_INFO_0 =
58     make_shared<CapabilityInfo>(TEST_DH_ID_0, TEST_DEV_ID_0, DEV_NAME, TEST_DEV_TYPE, DHType::CAMERA, TEST_DH_ATTR_0);
59 const shared_ptr<CapabilityInfo> CAP_INFO_1 =
60     make_shared<CapabilityInfo>(TEST_DH_ID_1, TEST_DEV_ID_0, DEV_NAME, TEST_DEV_TYPE, DHType::AUDIO, TEST_DH_ATTR_0);
61 const shared_ptr<CapabilityInfo> CAP_INFO_2 =
62     make_shared<CapabilityInfo>(TEST_DH_ID_2, TEST_DEV_ID_0, DEV_NAME, TEST_DEV_TYPE, DHType::GPS, TEST_DH_ATTR_0);
63 const shared_ptr<CapabilityInfo> CAP_INFO_3 =
64     make_shared<CapabilityInfo>(TEST_DH_ID_3, TEST_DEV_ID_0, DEV_NAME, TEST_DEV_TYPE, DHType::HFP, TEST_DH_ATTR_0);
65 const shared_ptr<CapabilityInfo> CAP_INFO_4 =
66     make_shared<CapabilityInfo>(TEST_DH_ID_4, TEST_DEV_ID_0, DEV_NAME, TEST_DEV_TYPE, DHType::INPUT, TEST_DH_ATTR_0);
67 
68 const shared_ptr<CapabilityInfo> CAP_INFO_5 =
69     make_shared<CapabilityInfo>(TEST_DH_ID_0, TEST_DEV_ID_1, DEV_NAME, TEST_DEV_TYPE, DHType::CAMERA, TEST_DH_ATTR_1);
70 const shared_ptr<CapabilityInfo> CAP_INFO_6 =
71     make_shared<CapabilityInfo>(TEST_DH_ID_1, TEST_DEV_ID_1, DEV_NAME, TEST_DEV_TYPE, DHType::AUDIO, TEST_DH_ATTR_1);
72 const shared_ptr<CapabilityInfo> CAP_INFO_7 =
73     make_shared<CapabilityInfo>(TEST_DH_ID_2, TEST_DEV_ID_1, DEV_NAME, TEST_DEV_TYPE, DHType::GPS, TEST_DH_ATTR_1);
74 const shared_ptr<CapabilityInfo> CAP_INFO_8 =
75     make_shared<CapabilityInfo>(TEST_DH_ID_3, TEST_DEV_ID_1, DEV_NAME, TEST_DEV_TYPE, DHType::HFP, TEST_DH_ATTR_1);
76 const shared_ptr<CapabilityInfo> CAP_INFO_9 =
77     make_shared<CapabilityInfo>(TEST_DH_ID_4, TEST_DEV_ID_1, DEV_NAME, TEST_DEV_TYPE, DHType::INPUT, TEST_DH_ATTR_1);
78 
79 std::shared_ptr<DBAdapter> g_dbAdapterPtr;
80 }
81 
SetUpTestCase(void)82 void DbAdapterTest::SetUpTestCase(void)
83 {
84     auto ret = mkdir(DATABASE_DIR.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
85     if (ret != 0) {
86         DHLOGE("mkdir failed, path: %s, errno : %d", DATABASE_DIR.c_str(), errno);
87     }
88 
89     std::shared_ptr<DistributedKv::KvStoreObserver> changeListener = std::make_shared<MockDBChangeListener>();
90     g_dbAdapterPtr = std::make_shared<DBAdapter>(APP_ID, GLOBAL_CAPABILITY_ID, changeListener);
91     if (g_dbAdapterPtr != nullptr) {
92         g_dbAdapterPtr->Init();
93     }
94 }
95 
TearDownTestCase(void)96 void DbAdapterTest::TearDownTestCase(void)
97 {
98     if (g_dbAdapterPtr != nullptr) {
99         g_dbAdapterPtr->UnInit();
100     }
101 
102     g_dbAdapterPtr = nullptr;
103 
104     auto ret = remove(DATABASE_DIR.c_str());
105     if (ret != 0) {
106         DHLOGE("remove dir failed, path: %s, errno : %d", DATABASE_DIR.c_str(), errno);
107     }
108 }
109 
SetUp()110 void DbAdapterTest::SetUp()
111 {
112 }
113 
TearDown()114 void DbAdapterTest::TearDown()
115 {
116 }
117 
118 /**
119  * @tc.name: db_adapter_test_000
120  * @tc.desc: Verify the Init function.
121  * @tc.type: FUNC
122  * @tc.require: AR000GHSJE
123  */
124 HWTEST_F(DbAdapterTest, db_adapter_test_000, TestSize.Level0)
125 {
126     EXPECT_EQ(DH_FWK_SUCCESS, g_dbAdapterPtr->Init());
127 }
128 
129 /**
130  * @tc.name: db_adapter_test_001
131  * @tc.desc: Verify the PutDataBatch function.
132  * @tc.type: FUNC
133  * @tc.require: AR000GHSJE
134  */
135 HWTEST_F(DbAdapterTest, db_adapter_test_001, TestSize.Level0)
136 {
137     vector<shared_ptr<CapabilityInfo>> resInfos { CAP_INFO_0, CAP_INFO_1, CAP_INFO_2, CAP_INFO_3, CAP_INFO_4,
138         CAP_INFO_5, CAP_INFO_6, CAP_INFO_7, CAP_INFO_8, CAP_INFO_9 };
139 
140     std::vector<std::string> keys;
141     std::vector<std::string> values;
142     std::string key;
143     for (auto &resInfo : resInfos) {
144         key = resInfo->GetKey();
145         keys.push_back(key);
146         values.push_back(resInfo->ToJsonString());
147     }
148     EXPECT_EQ(DH_FWK_SUCCESS, g_dbAdapterPtr->PutDataBatch(keys, values));
149     for (auto &resInfo : resInfos) {
150         g_dbAdapterPtr->RemoveDataByKey(resInfo->GetKey());
151     }
152 }
153 
154 /**
155  * @tc.name: db_adapter_test_002
156  * @tc.desc: Verify the PutDataBatch function.
157  * @tc.type: FUNC
158  * @tc.require: AR000GHSCV
159  */
160 HWTEST_F(DbAdapterTest, db_adapter_test_002, TestSize.Level0)
161 {
162     std::vector<std::string> keys { std::string(TEST_DEV_ID_2 + TEST_DH_ID_0) };
163     std::vector<std::string> values { TEST_DH_ATTR_0 };
164 
165     EXPECT_EQ(DH_FWK_SUCCESS, g_dbAdapterPtr->PutDataBatch(keys, values));
166     g_dbAdapterPtr->RemoveDataByKey(keys[0]);
167 }
168 
169 /**
170  * @tc.name: db_adapter_test_003
171  * @tc.desc: Verify the PutDataBatch function.
172  * @tc.type: FUNC
173  * @tc.require: AR000GHSCV
174  */
175 HWTEST_F(DbAdapterTest, db_adapter_test_003, TestSize.Level0)
176 {
177     std::vector<std::string> keys { std::string(TEST_DEV_ID_2 + TEST_DH_ID_0) };
178     std::vector<std::string> valuesEmpty;
179 
180     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, g_dbAdapterPtr->PutDataBatch(keys, valuesEmpty));
181 }
182 
183 /**
184  * @tc.name: db_adapter_test_004
185  * @tc.desc: Verify the PutDataBatch function.
186  * @tc.type: FUNC
187  * @tc.require: AR000GHSCV
188  */
189 HWTEST_F(DbAdapterTest, db_adapter_test_004, TestSize.Level0)
190 {
191     std::vector<std::string> keysEmpty;
192     std::vector<std::string> values { TEST_DH_ATTR_0 };
193 
194     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, g_dbAdapterPtr->PutDataBatch(keysEmpty, values));
195 }
196 
197 /**
198  * @tc.name: db_adapter_test_005
199  * @tc.desc: Verify the PutDataBatch function.
200  * @tc.type: FUNC
201  * @tc.require: AR000GHSCV
202  */
203 HWTEST_F(DbAdapterTest, db_adapter_test_005, TestSize.Level0)
204 {
205     std::vector<std::string> keysEmpty;
206     std::vector<std::string> valuesEmpty;
207 
208     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, g_dbAdapterPtr->PutDataBatch(keysEmpty, valuesEmpty));
209 }
210 
211 /**
212  * @tc.name: db_adapter_test_006
213  * @tc.desc: Verify the PutDataBatch function.
214  * @tc.type: FUNC
215  * @tc.require: AR000GHSCV
216  */
217 HWTEST_F(DbAdapterTest, db_adapter_test_006, TestSize.Level0)
218 {
219     std::vector<std::string> keys { std::string(TEST_DEV_ID_2 + TEST_DH_ID_0) };
220     std::vector<std::string> values { TEST_DH_ATTR_0, TEST_DH_ATTR_1 };
221 
222     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, g_dbAdapterPtr->PutDataBatch(keys, values));
223 }
224 
225 /**
226  * @tc.name: db_adapter_test_007
227  * @tc.desc: Verify the PutDataBatch function.
228  * @tc.type: FUNC
229  * @tc.require: AR000GHSCV
230  */
231 HWTEST_F(DbAdapterTest, db_adapter_test_007, TestSize.Level0)
232 {
233     g_dbAdapterPtr->kvStoragePtr_ = nullptr;
234     std::vector<std::string> keys { std::string(TEST_DEV_ID_2 + TEST_DH_ID_0) };
235     std::vector<std::string> values { TEST_DH_ATTR_0 };
236 
237     EXPECT_EQ(ERR_DH_FWK_RESOURCE_KV_STORAGE_POINTER_NULL, g_dbAdapterPtr->PutDataBatch(keys, values));
238 }
239 
240 /**
241  * @tc.name: db_adapter_test_008
242  * @tc.desc: Verify the ReInit function.
243  * @tc.type: FUNC
244  * @tc.require: AR000GHSCV
245  */
246 HWTEST_F(DbAdapterTest, db_adapter_test_008, TestSize.Level0)
247 {
248     g_dbAdapterPtr->kvStoragePtr_ = nullptr;
249     EXPECT_EQ(ERR_DH_FWK_RESOURCE_KV_STORAGE_POINTER_NULL, g_dbAdapterPtr->ReInit());
250 }
251 
252 /**
253  * @tc.name: db_adapter_test_009
254  * @tc.desc: Verify the RemoveDeviceData function.
255  * @tc.type: FUNC
256  * @tc.require: AR000GHSCV
257  */
258 HWTEST_F(DbAdapterTest, db_adapter_test_009, TestSize.Level0)
259 {
260     g_dbAdapterPtr->kvStoragePtr_ = nullptr;
261     EXPECT_EQ(ERR_DH_FWK_RESOURCE_KV_STORAGE_POINTER_NULL, g_dbAdapterPtr->RemoveDeviceData(TEST_DEV_ID_0));
262 }
263 
264 /**
265  * @tc.name: db_adapter_test_010
266  * @tc.desc: Verify the RemoveDataByKey function.
267  * @tc.type: FUNC
268  * @tc.require: AR000GHSCV
269  */
270 HWTEST_F(DbAdapterTest, db_adapter_test_010, TestSize.Level0)
271 {
272     g_dbAdapterPtr->kvStoragePtr_ = nullptr;
273     EXPECT_EQ(ERR_DH_FWK_RESOURCE_KV_STORAGE_POINTER_NULL, g_dbAdapterPtr->RemoveDataByKey("key"));
274 }
275 
276 /**
277  * @tc.name: db_adapter_test_011
278  * @tc.desc: Verify the ManualSync function.
279  * @tc.type: FUNC
280  * @tc.require: AR000GHSCV
281  */
282 HWTEST_F(DbAdapterTest, db_adapter_test_011, TestSize.Level0)
283 {
284     std::string networkId = DEV_NETWORK_ID_1;
285     g_dbAdapterPtr->kvStoragePtr_ = nullptr;
286     EXPECT_EQ(ERR_DH_FWK_RESOURCE_KV_STORAGE_POINTER_NULL, g_dbAdapterPtr->ManualSync(DEV_NETWORK_ID_1));
287 }
288 
289 /**
290  * @tc.name: db_adapter_test_012
291  * @tc.desc: Verify the UnRegisterChangeListener function.
292  * @tc.type: FUNC
293  * @tc.require: AR000GHSCV
294  */
295 HWTEST_F(DbAdapterTest, db_adapter_test_012, TestSize.Level0)
296 {
297     g_dbAdapterPtr->kvStoragePtr_ = nullptr;
298     EXPECT_EQ(ERR_DH_FWK_RESOURCE_KV_STORAGE_POINTER_NULL, g_dbAdapterPtr->UnRegisterChangeListener());
299 }
300 
301 /**
302  * @tc.name: db_adapter_test_013
303  * @tc.desc: Verify the PutData function.
304  * @tc.type: FUNC
305  * @tc.require: AR000GHSCV
306  */
307 HWTEST_F(DbAdapterTest, db_adapter_test_013, TestSize.Level0)
308 {
309     std::string key = std::string(TEST_DEV_ID_1 + TEST_DH_ID_1);
310     std::string value = TEST_DH_ATTR_0;
311     g_dbAdapterPtr->kvStoragePtr_ = nullptr;
312     EXPECT_EQ(ERR_DH_FWK_RESOURCE_KV_STORAGE_POINTER_NULL, g_dbAdapterPtr->PutData(key, value));
313 }
314 
315 /**
316  * @tc.name: db_adapter_test_014
317  * @tc.desc: Verify the RegisterChangeListener function.
318  * @tc.type: FUNC
319  * @tc.require: AR000GHSCV
320  */
321 HWTEST_F(DbAdapterTest, db_adapter_test_014, TestSize.Level0)
322 {
323     std::string networkId = DEV_NETWORK_ID_1;
324     g_dbAdapterPtr->kvStoragePtr_ = nullptr;
325     EXPECT_EQ(ERR_DH_FWK_RESOURCE_KV_STORAGE_POINTER_NULL, g_dbAdapterPtr->RegisterChangeListener());
326 }
327 
328 /**
329  * @tc.name: db_adapter_test_015
330  * @tc.desc: Verify the UnRegisterChangeListener function.
331  * @tc.type: FUNC
332  * @tc.require: AR000GHSCV
333  */
334 HWTEST_F(DbAdapterTest, db_adapter_test_015, TestSize.Level0)
335 {
336     g_dbAdapterPtr->kvStoragePtr_ = nullptr;
337     EXPECT_EQ(ERR_DH_FWK_RESOURCE_KV_STORAGE_POINTER_NULL, g_dbAdapterPtr->UnRegisterChangeListener());
338 }
339 } // namespace DistributedHardware
340 } // namespace OHOS
341