• 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.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 }