1 /*
2 * Copyright (c) 2021 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 "distributed_hardware_manager_test.h"
17
18 #include <chrono>
19 #include <thread>
20 #include <vector>
21
22 #include "constants.h"
23 #include "dh_context.h"
24 #include "distributed_hardware_errno.h"
25 #include "distributed_hardware_log.h"
26 #include "distributed_hardware_manager.h"
27 #include "task_board.h"
28
29 using namespace testing::ext;
30
31 namespace OHOS {
32 namespace DistributedHardware {
33 /* save networkId and uuid */
34 const std::vector<std::pair<std::string, std::string>> TEST_DEVICES = {
35 { "11111111111111111111111111111111", "22222222222222222222222222222222" },
36 { "33333333333333333333333333333333", "44444444444444444444444444444444" },
37 };
38 constexpr uint16_t TEST_DEV_TYPE_PAD = 0x11;
39
SetUpTestCase(void)40 void DistributedHardwareManagerTest::SetUpTestCase(void) {}
41
TearDownTestCase(void)42 void DistributedHardwareManagerTest::TearDownTestCase(void) {}
43
SetUp()44 void DistributedHardwareManagerTest::SetUp()
45 {
46 for (auto device : TEST_DEVICES) {
47 DHContext::GetInstance().RemoveOnlineDevice(device.second);
48 }
49 }
50
TearDown()51 void DistributedHardwareManagerTest::TearDown() {}
52
53 /**
54 * @tc.name: sendOnLineEvent_test_001
55 * @tc.desc: Verify the SendOnLineEvent success
56 * @tc.type: FUNC
57 * @tc.require: AR000GHSJM
58 */
59 HWTEST_F(DistributedHardwareManagerTest, sendOnLineEvent_test_001, TestSize.Level0)
60 {
61 auto onlineResult = DistributedHardwareManager::GetInstance().SendOnLineEvent(TEST_DEVICES[0].first,
62 TEST_DEVICES[0].second, TEST_DEV_TYPE_PAD);
63 ASSERT_EQ(DH_FWK_SUCCESS, onlineResult);
64
65 ASSERT_EQ(DH_FWK_SUCCESS, TaskBoard::GetInstance().WaitForALLTaskFinish());
66 ASSERT_TRUE(TaskBoard::GetInstance().IsAllTaskFinish());
67 }
68
69 /**
70 * @tc.name: sendOnLineEvent_test_002
71 * @tc.desc: Verify the SendOnLineEvent repeate online
72 * @tc.type: FUNC
73 * @tc.require: AR000GHSJM
74 */
75 HWTEST_F(DistributedHardwareManagerTest, sendOnLineEvent_test_002, TestSize.Level0)
76 {
77 auto onlineResult = DistributedHardwareManager::GetInstance().SendOnLineEvent(TEST_DEVICES[0].first,
78 TEST_DEVICES[0].second, TEST_DEV_TYPE_PAD);
79 ASSERT_EQ(DH_FWK_SUCCESS, onlineResult);
80
81 onlineResult = DistributedHardwareManager::GetInstance().SendOnLineEvent(TEST_DEVICES[0].first,
82 TEST_DEVICES[0].second, TEST_DEV_TYPE_PAD);
83 ASSERT_EQ(DH_FWK_SUCCESS, onlineResult);
84
85 ASSERT_EQ(DH_FWK_SUCCESS, TaskBoard::GetInstance().WaitForALLTaskFinish());
86 ASSERT_TRUE(TaskBoard::GetInstance().IsAllTaskFinish());
87 }
88
89 /**
90 * @tc.name: sendOnLineEvent_test_003
91 * @tc.desc: Verify the SendOnLineEvent failed for uuid is empty
92 * @tc.type: FUNC
93 * @tc.require: AR000GHSJM
94 */
95 HWTEST_F(DistributedHardwareManagerTest, sendOnLineEvent_test_003, TestSize.Level0)
96 {
97 auto onlineResult = DistributedHardwareManager::GetInstance().SendOnLineEvent("", "", TEST_DEV_TYPE_PAD);
98 ASSERT_EQ(ERR_DH_FWK_PARA_INVALID, onlineResult);
99
100 onlineResult =
101 DistributedHardwareManager::GetInstance().SendOnLineEvent(TEST_DEVICES[0].first, "", TEST_DEV_TYPE_PAD);
102 ASSERT_EQ(ERR_DH_FWK_PARA_INVALID, onlineResult);
103
104 ASSERT_EQ(DH_FWK_SUCCESS, TaskBoard::GetInstance().WaitForALLTaskFinish());
105 ASSERT_TRUE(TaskBoard::GetInstance().IsAllTaskFinish());
106 }
107
108 /**
109 * @tc.name: sendOffLineEvent_test_001
110 * @tc.desc: Verify the SendOffLineEvent success
111 * @tc.type: FUNC
112 * @tc.require: AR000GHSJM
113 */
114 HWTEST_F(DistributedHardwareManagerTest, sendOffLineEvent_test_001, TestSize.Level0)
115 {
116 auto onlineResult = DistributedHardwareManager::GetInstance().SendOnLineEvent(TEST_DEVICES[0].first,
117 TEST_DEVICES[0].second, TEST_DEV_TYPE_PAD);
118 ASSERT_EQ(DH_FWK_SUCCESS, onlineResult);
119
120 auto offlineResult = DistributedHardwareManager::GetInstance().SendOffLineEvent(TEST_DEVICES[0].first,
121 TEST_DEVICES[0].second, TEST_DEV_TYPE_PAD);
122 ASSERT_EQ(DH_FWK_SUCCESS, offlineResult);
123
124 ASSERT_EQ(DH_FWK_SUCCESS, TaskBoard::GetInstance().WaitForALLTaskFinish());
125 ASSERT_TRUE(TaskBoard::GetInstance().IsAllTaskFinish());
126 }
127
128 /**
129 * @tc.name: sendOffLineEvent_test_002
130 * @tc.desc: Verify the SendOffLineEvent repeat
131 * @tc.type: FUNC
132 * @tc.require: AR000GHSJM
133 */
134 HWTEST_F(DistributedHardwareManagerTest, sendOffLineEvent_test_002, TestSize.Level0)
135 {
136 auto onlineResult = DistributedHardwareManager::GetInstance().SendOnLineEvent(TEST_DEVICES[0].first,
137 TEST_DEVICES[0].second, TEST_DEV_TYPE_PAD);
138 ASSERT_EQ(DH_FWK_SUCCESS, onlineResult);
139
140 auto offlineResult = DistributedHardwareManager::GetInstance().SendOffLineEvent(TEST_DEVICES[0].first,
141 TEST_DEVICES[0].second, TEST_DEV_TYPE_PAD);
142 ASSERT_EQ(DH_FWK_SUCCESS, offlineResult);
143
144 offlineResult = DistributedHardwareManager::GetInstance().SendOffLineEvent(TEST_DEVICES[0].first,
145 TEST_DEVICES[0].second, TEST_DEV_TYPE_PAD);
146 ASSERT_EQ(DH_FWK_SUCCESS, offlineResult);
147
148 ASSERT_EQ(DH_FWK_SUCCESS, TaskBoard::GetInstance().WaitForALLTaskFinish());
149 ASSERT_TRUE(TaskBoard::GetInstance().IsAllTaskFinish());
150 }
151
152 /**
153 * @tc.name: sendOffLineEvent_test_003
154 * @tc.desc: Verify the SendOffLineEvent failed for uuid is empty
155 * @tc.type: FUNC
156 * @tc.require: AR000GHSJM
157 */
158 HWTEST_F(DistributedHardwareManagerTest, sendOffLineEvent_test_003, TestSize.Level0)
159 {
160 auto offlineResult =
161 DistributedHardwareManager::GetInstance().SendOffLineEvent("", "", TEST_DEV_TYPE_PAD);
162 ASSERT_EQ(ERR_DH_FWK_PARA_INVALID, offlineResult);
163
164 offlineResult =
165 DistributedHardwareManager::GetInstance().SendOffLineEvent(TEST_DEVICES[0].first, "", TEST_DEV_TYPE_PAD);
166 ASSERT_EQ(ERR_DH_FWK_PARA_INVALID, offlineResult);
167
168 ASSERT_EQ(DH_FWK_SUCCESS, TaskBoard::GetInstance().WaitForALLTaskFinish());
169 ASSERT_TRUE(TaskBoard::GetInstance().IsAllTaskFinish());
170 }
171
172 /**
173 * @tc.name: Release_001
174 * @tc.desc: Verify the Release function
175 * @tc.type: FUNC
176 * @tc.require: AR000GHSJM
177 */
178 HWTEST_F(DistributedHardwareManagerTest, Release_001, TestSize.Level0)
179 {
180 EXPECT_EQ(DH_FWK_SUCCESS, DistributedHardwareManager::GetInstance().Release());
181 }
182
183 /**
184 * @tc.name: GetComponentVersion_001
185 * @tc.desc: Verify the GetComponentVersion function
186 * @tc.type: FUNC
187 * @tc.require: AR000GHSJM
188 */
189 HWTEST_F(DistributedHardwareManagerTest, RGetComponentVersion_001, TestSize.Level0)
190 {
191 std::unordered_map<DHType, std::string> versionMap;
192 EXPECT_NE(DH_FWK_SUCCESS, DistributedHardwareManager::GetInstance().GetComponentVersion(versionMap));
193 }
194 } // namespace DistributedHardware
195 } // namespace OHOS
196