• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024-2025 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 <gtest/gtest.h>
17 
18 #include "cJSON.h"
19 
20 #include "constants.h"
21 #include "capability_info.h"
22 #include "dh_utils_tool.h"
23 #include "distributed_hardware_errno.h"
24 #include "local_capability_info_manager.h"
25 
26 using namespace testing::ext;
27 using namespace std;
28 
29 namespace OHOS {
30 namespace DistributedHardware {
31 namespace {
32     constexpr uint16_t DEV_TYPE_TEST = 14;
33     constexpr uint32_t MAX_DB_RECORD_LENGTH = 10005;
34 }
35 class LocalCapInfoMgrTest : public testing::Test {
36 public:
37     static void SetUpTestCase(void);
38     static void TearDownTestCase(void);
39     void SetUp();
40     void TearDown();
41 };
42 
SetUp()43 void LocalCapInfoMgrTest::SetUp() {}
44 
TearDown()45 void LocalCapInfoMgrTest::TearDown() {}
46 
SetUpTestCase()47 void LocalCapInfoMgrTest::SetUpTestCase() {}
48 
TearDownTestCase()49 void LocalCapInfoMgrTest::TearDownTestCase() {}
50 
51 HWTEST_F(LocalCapInfoMgrTest, Init_001, TestSize.Level1)
52 {
53     auto ret = LocalCapabilityInfoManager::GetInstance()->Init();
54     EXPECT_EQ(DH_FWK_SUCCESS, ret);
55 
56     ret = LocalCapabilityInfoManager::GetInstance()->UnInit();
57     EXPECT_EQ(DH_FWK_SUCCESS, ret);
58 }
59 
60 HWTEST_F(LocalCapInfoMgrTest, UnInit_001, TestSize.Level1)
61 {
62     LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
63     auto ret = LocalCapabilityInfoManager::GetInstance()->UnInit();
64     EXPECT_EQ(ERR_DH_FWK_RESOURCE_UNINIT_DB_FAILED, ret);
65 }
66 
67 HWTEST_F(LocalCapInfoMgrTest, SyncDeviceInfoFromDB_001, TestSize.Level1)
68 {
69     std::string deviceId = "deviceId_test";
70     LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
71     auto ret = LocalCapabilityInfoManager::GetInstance()->SyncDeviceInfoFromDB(deviceId);
72     EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL, ret);
73 
74     LocalCapabilityInfoManager::GetInstance()->Init();
75     ret = LocalCapabilityInfoManager::GetInstance()->SyncDeviceInfoFromDB(deviceId);
76     EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_OPERATION_FAIL, ret);
77 
78     ret = LocalCapabilityInfoManager::GetInstance()->SyncDeviceInfoFromDB("");
79     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
80 }
81 
82 HWTEST_F(LocalCapInfoMgrTest, SyncDeviceInfoFromDB_002, TestSize.Level1)
83 {
84     std::string deviceId(266, 'A');
85     LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
86     auto ret = LocalCapabilityInfoManager::GetInstance()->SyncDeviceInfoFromDB(deviceId);
87     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
88 }
89 
90 HWTEST_F(LocalCapInfoMgrTest, AddCapability_001, TestSize.Level1)
91 {
92     std::vector<std::shared_ptr<CapabilityInfo>> resInfos;
93     auto ret = LocalCapabilityInfoManager::GetInstance()->AddCapability(resInfos);
94     EXPECT_EQ(ERR_DH_FWK_RESOURCE_RES_DB_DATA_INVALID, ret);
95 
96     for (int32_t i = 1; i < MAX_DB_RECORD_LENGTH; i++) {
97         std::shared_ptr<CapabilityInfo> capInfoTest = make_shared<CapabilityInfo>(std::to_string(i), std::to_string(i),
98             "devName_test", DEV_TYPE_TEST, DHType::CAMERA, "attrs", "subtype");
99         resInfos.push_back(capInfoTest);
100     }
101     ret = LocalCapabilityInfoManager::GetInstance()->AddCapability(resInfos);
102     EXPECT_EQ(ERR_DH_FWK_RESOURCE_RES_DB_DATA_INVALID, ret);
103 }
104 
105 HWTEST_F(LocalCapInfoMgrTest, AddCapability_002, TestSize.Level1)
106 {
107     std::shared_ptr<CapabilityInfo> capInfo = std::make_shared<CapabilityInfo>("", "", "", 0, DHType::UNKNOWN, "", "");
108     std::vector<std::shared_ptr<CapabilityInfo>> resInfos;
109     resInfos.push_back(capInfo);
110     LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
111     auto ret = LocalCapabilityInfoManager::GetInstance()->AddCapability(resInfos);
112     EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL, ret);
113 }
114 
115 HWTEST_F(LocalCapInfoMgrTest, AddCapability_003, TestSize.Level1)
116 {
117     std::shared_ptr<CapabilityInfo> capInfo = std::make_shared<CapabilityInfo>("", "", "", 0, DHType::UNKNOWN, "", "");
118     std::shared_ptr<CapabilityInfo> capInfo1 = nullptr;
119     std::vector<std::shared_ptr<CapabilityInfo>> resInfos;
120     resInfos.push_back(capInfo);
121     resInfos.push_back(capInfo1);
122     LocalCapabilityInfoManager::GetInstance()->Init();
123     auto ret = LocalCapabilityInfoManager::GetInstance()->AddCapability(resInfos);
124     EXPECT_EQ(DH_FWK_SUCCESS, ret);
125 }
126 
127 HWTEST_F(LocalCapInfoMgrTest, RemoveCapabilityInfoByKey_001, TestSize.Level1)
128 {
129     std::string key = "";
130     auto ret = LocalCapabilityInfoManager::GetInstance()->RemoveCapabilityInfoByKey(key);
131     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
132 }
133 
134 HWTEST_F(LocalCapInfoMgrTest, RemoveCapabilityInfoByKey_002, TestSize.Level1)
135 {
136     std::string key = "deviceId_test";
137     LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
138     auto ret = LocalCapabilityInfoManager::GetInstance()->RemoveCapabilityInfoByKey(key);
139     EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL, ret);
140 
141     LocalCapabilityInfoManager::GetInstance()->Init();
142     ret = LocalCapabilityInfoManager::GetInstance()->RemoveCapabilityInfoByKey(key);
143     EXPECT_EQ(DH_FWK_SUCCESS, ret);
144 }
145 
146 HWTEST_F(LocalCapInfoMgrTest, GetCapabilitiesByDeviceId_001, TestSize.Level1)
147 {
148     std::string deviceId = "";
149     std::vector<std::shared_ptr<CapabilityInfo>> resInfos;
150     ASSERT_NO_FATAL_FAILURE(LocalCapabilityInfoManager::GetInstance()->GetCapabilitiesByDeviceId(deviceId, resInfos));
151 }
152 
153 HWTEST_F(LocalCapInfoMgrTest, GetCapabilitiesByDeviceId_002, TestSize.Level1)
154 {
155     std::string deviceId = "test_device_id";
156     auto localCapInfoMgr = LocalCapabilityInfoManager::GetInstance();
157     std::shared_ptr<CapabilityInfo> capInfo1 = std::make_shared<CapabilityInfo>(
158         "dhId_test1", deviceId, "devName_test1", DEV_TYPE_TEST, DHType::AUDIO, "attrs", "subtype");
159     std::shared_ptr<CapabilityInfo> capInfo2 = std::make_shared<CapabilityInfo>(
160         "dhId_test2", "other_device_id", "devName_test2", DEV_TYPE_TEST, DHType::AUDIO, "attrs", "subtype");
161 
162     std::string key1 = GetCapabilityKey(deviceId, "dhId_test1");
163     std::string key2 = GetCapabilityKey("other_device_id", "dhId_test2");
164 
165     localCapInfoMgr->globalCapInfoMap_[key1] = capInfo1;
166     localCapInfoMgr->globalCapInfoMap_[key2] = capInfo2;
167 
168     std::vector<std::shared_ptr<CapabilityInfo>> resInfos;
169     localCapInfoMgr->GetCapabilitiesByDeviceId(deviceId, resInfos);
170     ASSERT_EQ(resInfos.size(), 1);
171 }
172 
173 HWTEST_F(LocalCapInfoMgrTest, GetCapability_001, TestSize.Level1)
174 {
175     std::string deviceId = "";
176     std::string dhId = "";
177     std::shared_ptr<CapabilityInfo> capPtr;
178     auto ret = LocalCapabilityInfoManager::GetInstance()->GetCapability(deviceId, dhId, capPtr);
179     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
180 
181     deviceId = "deviceId_test";
182     ret = LocalCapabilityInfoManager::GetInstance()->GetCapability(deviceId, dhId, capPtr);
183     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
184 
185     dhId = "dhId_test";
186     deviceId = "";
187     ret = LocalCapabilityInfoManager::GetInstance()->GetCapability(deviceId, dhId, capPtr);
188     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
189 }
190 
191 HWTEST_F(LocalCapInfoMgrTest, GetCapability_002, TestSize.Level1)
192 {
193     std::string deviceId = "deviceId_test";
194     std::string dhId = "dhId_test";
195     std::shared_ptr<CapabilityInfo> capPtr;
196     auto ret = LocalCapabilityInfoManager::GetInstance()->GetCapability(deviceId, dhId, capPtr);
197     EXPECT_EQ(ERR_DH_FWK_RESOURCE_CAPABILITY_MAP_NOT_FOUND, ret);
198 
199     std::shared_ptr<CapabilityInfo> capbilityInfo = std::make_shared<CapabilityInfo>(
200         dhId, deviceId, "devName_test", DEV_TYPE_TEST, DHType::AUDIO, "attrs", "subtype");
201     std::string key = deviceId + "###" + dhId;
202     LocalCapabilityInfoManager::GetInstance()->globalCapInfoMap_[key] = capbilityInfo;
203     ret = LocalCapabilityInfoManager::GetInstance()->GetCapability(deviceId, dhId, capPtr);
204     LocalCapabilityInfoManager::GetInstance()->globalCapInfoMap_.clear();
205     EXPECT_EQ(DH_FWK_SUCCESS, ret);
206 }
207 
208 HWTEST_F(LocalCapInfoMgrTest, GetDataByKey_001, TestSize.Level1)
209 {
210     std::string key = "";
211     std::shared_ptr<CapabilityInfo> capPtr;
212     auto ret = LocalCapabilityInfoManager::GetInstance()->GetDataByKey(key, capPtr);
213     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
214 }
215 
216 HWTEST_F(LocalCapInfoMgrTest, GetDataByKey_002, TestSize.Level1)
217 {
218     std::string key = "key_test";
219     std::shared_ptr<CapabilityInfo> capPtr;
220     LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
221     auto ret = LocalCapabilityInfoManager::GetInstance()->GetDataByKey(key, capPtr);
222     EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL, ret);
223 
224     LocalCapabilityInfoManager::GetInstance()->Init();
225     ret = LocalCapabilityInfoManager::GetInstance()->GetDataByKey(key, capPtr);
226     EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_OPERATION_FAIL, ret);
227 }
228 
229 HWTEST_F(LocalCapInfoMgrTest, GetDataByDHType_001, TestSize.Level1)
230 {
231     CapabilityInfoMap capabilityMap;
232     std::string deviceId = "deviceId_test";
233     std::shared_ptr<CapabilityInfo> capbilityInfo = std::make_shared<CapabilityInfo>(
234         "dhId_test", deviceId, "devName_test", 14, DHType::AUDIO, "attrs", "subtype");
235     std::string key = deviceId + "###" + "dhId_test";
236     LocalCapabilityInfoManager::GetInstance()->globalCapInfoMap_[key] = capbilityInfo;
237     auto ret = LocalCapabilityInfoManager::GetInstance()->GetDataByDHType(DHType::CAMERA, capabilityMap);
238     EXPECT_EQ(DH_FWK_SUCCESS, ret);
239 
240     ret = LocalCapabilityInfoManager::GetInstance()->GetDataByDHType(DHType::AUDIO, capabilityMap);
241     LocalCapabilityInfoManager::GetInstance()->globalCapInfoMap_.clear();
242     EXPECT_EQ(DH_FWK_SUCCESS, ret);
243 }
244 
245 HWTEST_F(LocalCapInfoMgrTest, GetDataByKeyPrefix_001, TestSize.Level1)
246 {
247     std::string keyPrefix = "";
248     CapabilityInfoMap capabilityMap;
249     auto ret = LocalCapabilityInfoManager::GetInstance()->GetDataByKeyPrefix(keyPrefix, capabilityMap);
250     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
251 }
252 
253 HWTEST_F(LocalCapInfoMgrTest, GetDataByKeyPrefix_002, TestSize.Level1)
254 {
255     std::string keyPrefix = "keyPrefix_test";
256     CapabilityInfoMap capabilityMap;
257     LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
258     auto ret = LocalCapabilityInfoManager::GetInstance()->GetDataByKeyPrefix(keyPrefix, capabilityMap);
259     EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL, ret);
260 
261     LocalCapabilityInfoManager::GetInstance()->Init();
262     ret = LocalCapabilityInfoManager::GetInstance()->GetDataByKeyPrefix(keyPrefix, capabilityMap);
263     EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_OPERATION_FAIL, ret);
264 }
265 
266 HWTEST_F(LocalCapInfoMgrTest, ClearRemoteDeviceLocalInfoData_001, TestSize.Level1)
267 {
268     std::string peeruuid = "";
269     LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
270     auto ret = LocalCapabilityInfoManager::GetInstance()->ClearRemoteDeviceLocalInfoData(peeruuid);
271     EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL, ret);
272 
273     LocalCapabilityInfoManager::GetInstance()->Init();
274     ret = LocalCapabilityInfoManager::GetInstance()->ClearRemoteDeviceLocalInfoData(peeruuid);
275     EXPECT_EQ(DH_FWK_SUCCESS, ret);
276 }
277 
278 HWTEST_F(LocalCapInfoMgrTest, RemoveLocalInfoInMemByUuid_001, TestSize.Level1)
279 {
280     std::string peeruuid = "123456789";
281     std::string dhid = "audio_132";
282     std::string deviceId = Sha256(peeruuid);
283 
284     std::shared_ptr<CapabilityInfo> capInfo = std::make_shared<CapabilityInfo>(
285         dhid, deviceId, "devName_test", DEV_TYPE_TEST, DHType::AUDIO, "attrs", "subtype");
286     std::string key = deviceId + "###" + dhid;
287     LocalCapabilityInfoManager::GetInstance()->globalCapInfoMap_[key] = capInfo;
288     auto ret = LocalCapabilityInfoManager::GetInstance()->RemoveLocalInfoInMemByUuid("111222333");
289     EXPECT_EQ(DH_FWK_SUCCESS, ret);
290 
291     ret = LocalCapabilityInfoManager::GetInstance()->RemoveLocalInfoInMemByUuid(peeruuid);
292     EXPECT_EQ(DH_FWK_SUCCESS, ret);
293 }
294 }
295 }