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.Level0)
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.Level0)
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.Level0)
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, AddCapability_001, TestSize.Level0)
83 {
84 std::vector<std::shared_ptr<CapabilityInfo>> resInfos;
85 auto ret = LocalCapabilityInfoManager::GetInstance()->AddCapability(resInfos);
86 EXPECT_EQ(ERR_DH_FWK_RESOURCE_RES_DB_DATA_INVALID, ret);
87
88 for (int32_t i = 1; i < MAX_DB_RECORD_LENGTH; i++) {
89 std::shared_ptr<CapabilityInfo> capInfoTest = make_shared<CapabilityInfo>(std::to_string(i), std::to_string(i),
90 "devName_test", DEV_TYPE_TEST, DHType::CAMERA, "attrs", "subtype");
91 resInfos.push_back(capInfoTest);
92 }
93 ret = LocalCapabilityInfoManager::GetInstance()->AddCapability(resInfos);
94 EXPECT_EQ(ERR_DH_FWK_RESOURCE_RES_DB_DATA_INVALID, ret);
95 }
96
97 HWTEST_F(LocalCapInfoMgrTest, AddCapability_002, TestSize.Level0)
98 {
99 std::shared_ptr<CapabilityInfo> capInfo = std::make_shared<CapabilityInfo>("", "", "", 0, DHType::UNKNOWN, "", "");
100 std::vector<std::shared_ptr<CapabilityInfo>> resInfos;
101 resInfos.push_back(capInfo);
102 LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
103 auto ret = LocalCapabilityInfoManager::GetInstance()->AddCapability(resInfos);
104 EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL, ret);
105 }
106
107 HWTEST_F(LocalCapInfoMgrTest, AddCapability_003, TestSize.Level0)
108 {
109 std::shared_ptr<CapabilityInfo> capInfo = std::make_shared<CapabilityInfo>("", "", "", 0, DHType::UNKNOWN, "", "");
110 std::shared_ptr<CapabilityInfo> capInfo1 = nullptr;
111 std::vector<std::shared_ptr<CapabilityInfo>> resInfos;
112 resInfos.push_back(capInfo);
113 resInfos.push_back(capInfo1);
114 LocalCapabilityInfoManager::GetInstance()->Init();
115 auto ret = LocalCapabilityInfoManager::GetInstance()->AddCapability(resInfos);
116 EXPECT_EQ(DH_FWK_SUCCESS, ret);
117 }
118
119 HWTEST_F(LocalCapInfoMgrTest, RemoveCapabilityInfoByKey_001, TestSize.Level0)
120 {
121 std::string key = "";
122 auto ret = LocalCapabilityInfoManager::GetInstance()->RemoveCapabilityInfoByKey(key);
123 EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
124 }
125
126 HWTEST_F(LocalCapInfoMgrTest, RemoveCapabilityInfoByKey_002, TestSize.Level0)
127 {
128 std::string key = "deviceId_test";
129 LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
130 auto ret = LocalCapabilityInfoManager::GetInstance()->RemoveCapabilityInfoByKey(key);
131 EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL, ret);
132
133 LocalCapabilityInfoManager::GetInstance()->Init();
134 ret = LocalCapabilityInfoManager::GetInstance()->RemoveCapabilityInfoByKey(key);
135 EXPECT_EQ(DH_FWK_SUCCESS, ret);
136 }
137
138 HWTEST_F(LocalCapInfoMgrTest, GetCapabilitiesByDeviceId_001, TestSize.Level0)
139 {
140 std::string deviceId = "";
141 std::vector<std::shared_ptr<CapabilityInfo>> resInfos;
142 ASSERT_NO_FATAL_FAILURE(LocalCapabilityInfoManager::GetInstance()->GetCapabilitiesByDeviceId(deviceId, resInfos));
143 }
144
145 HWTEST_F(LocalCapInfoMgrTest, GetCapability_001, TestSize.Level0)
146 {
147 std::string deviceId = "";
148 std::string dhId = "";
149 std::shared_ptr<CapabilityInfo> capPtr;
150 auto ret = LocalCapabilityInfoManager::GetInstance()->GetCapability(deviceId, dhId, capPtr);
151 EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
152
153 deviceId = "deviceId_test";
154 ret = LocalCapabilityInfoManager::GetInstance()->GetCapability(deviceId, dhId, capPtr);
155 EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
156
157 dhId = "dhId_test";
158 deviceId = "";
159 ret = LocalCapabilityInfoManager::GetInstance()->GetCapability(deviceId, dhId, capPtr);
160 EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
161 }
162
163 HWTEST_F(LocalCapInfoMgrTest, GetCapability_002, TestSize.Level0)
164 {
165 std::string deviceId = "deviceId_test";
166 std::string dhId = "dhId_test";
167 std::shared_ptr<CapabilityInfo> capPtr;
168 auto ret = LocalCapabilityInfoManager::GetInstance()->GetCapability(deviceId, dhId, capPtr);
169 EXPECT_EQ(ERR_DH_FWK_RESOURCE_CAPABILITY_MAP_NOT_FOUND, ret);
170
171 std::shared_ptr<CapabilityInfo> capbilityInfo = std::make_shared<CapabilityInfo>(
172 dhId, deviceId, "devName_test", DEV_TYPE_TEST, DHType::AUDIO, "attrs", "subtype");
173 std::string key = deviceId + "###" + dhId;
174 LocalCapabilityInfoManager::GetInstance()->globalCapInfoMap_[key] = capbilityInfo;
175 ret = LocalCapabilityInfoManager::GetInstance()->GetCapability(deviceId, dhId, capPtr);
176 LocalCapabilityInfoManager::GetInstance()->globalCapInfoMap_.clear();
177 EXPECT_EQ(DH_FWK_SUCCESS, ret);
178 }
179
180 HWTEST_F(LocalCapInfoMgrTest, GetDataByKey_001, TestSize.Level0)
181 {
182 std::string key = "";
183 std::shared_ptr<CapabilityInfo> capPtr;
184 auto ret = LocalCapabilityInfoManager::GetInstance()->GetDataByKey(key, capPtr);
185 EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
186 }
187
188 HWTEST_F(LocalCapInfoMgrTest, GetDataByKey_002, TestSize.Level0)
189 {
190 std::string key = "key_test";
191 std::shared_ptr<CapabilityInfo> capPtr;
192 LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
193 auto ret = LocalCapabilityInfoManager::GetInstance()->GetDataByKey(key, capPtr);
194 EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL, ret);
195
196 LocalCapabilityInfoManager::GetInstance()->Init();
197 ret = LocalCapabilityInfoManager::GetInstance()->GetDataByKey(key, capPtr);
198 EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_OPERATION_FAIL, ret);
199 }
200
201 HWTEST_F(LocalCapInfoMgrTest, GetDataByDHType_001, TestSize.Level0)
202 {
203 CapabilityInfoMap capabilityMap;
204 std::string deviceId = "deviceId_test";
205 std::shared_ptr<CapabilityInfo> capbilityInfo = std::make_shared<CapabilityInfo>(
206 "dhId_test", deviceId, "devName_test", 14, DHType::AUDIO, "attrs", "subtype");
207 std::string key = deviceId + "###" + "dhId_test";
208 LocalCapabilityInfoManager::GetInstance()->globalCapInfoMap_[key] = capbilityInfo;
209 auto ret = LocalCapabilityInfoManager::GetInstance()->GetDataByDHType(DHType::CAMERA, capabilityMap);
210 EXPECT_EQ(DH_FWK_SUCCESS, ret);
211
212 ret = LocalCapabilityInfoManager::GetInstance()->GetDataByDHType(DHType::AUDIO, capabilityMap);
213 LocalCapabilityInfoManager::GetInstance()->globalCapInfoMap_.clear();
214 EXPECT_EQ(DH_FWK_SUCCESS, ret);
215 }
216
217 HWTEST_F(LocalCapInfoMgrTest, GetDataByKeyPrefix_001, TestSize.Level0)
218 {
219 std::string keyPrefix = "";
220 CapabilityInfoMap capabilityMap;
221 auto ret = LocalCapabilityInfoManager::GetInstance()->GetDataByKeyPrefix(keyPrefix, capabilityMap);
222 EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
223 }
224
225 HWTEST_F(LocalCapInfoMgrTest, GetDataByKeyPrefix_002, TestSize.Level0)
226 {
227 std::string keyPrefix = "keyPrefix_test";
228 CapabilityInfoMap capabilityMap;
229 LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
230 auto ret = LocalCapabilityInfoManager::GetInstance()->GetDataByKeyPrefix(keyPrefix, capabilityMap);
231 EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL, ret);
232
233 LocalCapabilityInfoManager::GetInstance()->Init();
234 ret = LocalCapabilityInfoManager::GetInstance()->GetDataByKeyPrefix(keyPrefix, capabilityMap);
235 EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_OPERATION_FAIL, ret);
236 }
237
238 HWTEST_F(LocalCapInfoMgrTest, ClearRemoteDeviceLocalInfoData_001, TestSize.Level0)
239 {
240 std::string peeruuid = "";
241 LocalCapabilityInfoManager::GetInstance()->dbAdapterPtr_ = nullptr;
242 auto ret = LocalCapabilityInfoManager::GetInstance()->ClearRemoteDeviceLocalInfoData(peeruuid);
243 EXPECT_EQ(ERR_DH_FWK_RESOURCE_DB_ADAPTER_POINTER_NULL, ret);
244
245 LocalCapabilityInfoManager::GetInstance()->Init();
246 ret = LocalCapabilityInfoManager::GetInstance()->ClearRemoteDeviceLocalInfoData(peeruuid);
247 EXPECT_EQ(DH_FWK_SUCCESS, ret);
248 }
249
250 HWTEST_F(LocalCapInfoMgrTest, RemoveLocalInfoInMemByUuid_001, TestSize.Level0)
251 {
252 std::string peeruuid = "123456789";
253 std::string dhid = "audio_132";
254 std::string deviceId = Sha256(peeruuid);
255
256 std::shared_ptr<CapabilityInfo> capInfo = std::make_shared<CapabilityInfo>(
257 dhid, deviceId, "devName_test", DEV_TYPE_TEST, DHType::AUDIO, "attrs", "subtype");
258 std::string key = deviceId + "###" + dhid;
259 LocalCapabilityInfoManager::GetInstance()->globalCapInfoMap_[key] = capInfo;
260 auto ret = LocalCapabilityInfoManager::GetInstance()->RemoveLocalInfoInMemByUuid("111222333");
261 EXPECT_EQ(DH_FWK_SUCCESS, ret);
262
263 ret = LocalCapabilityInfoManager::GetInstance()->RemoveLocalInfoInMemByUuid(peeruuid);
264 EXPECT_EQ(DH_FWK_SUCCESS, ret);
265 }
266 }
267 }