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 "task_test.h"
17
18 #include <chrono>
19 #include <thread>
20
21 #include "dh_utils_tool.h"
22 #include "distributed_hardware_errno.h"
23 #include "mock_disable_task.h"
24 #include "mock_enable_task.h"
25 #include "mock_offline_task.h"
26 #include "mock_online_task.h"
27 #include "mock_task_factory.h"
28 #include "mock_task_utils.h"
29
30 #include "task_board.h"
31 #include "task_executor.h"
32
33 using namespace testing::ext;
34
35 namespace OHOS {
36 namespace DistributedHardware {
37 namespace {
38 const std::string DEV_ID_1 = "bb536a637105409e904d4da83790a4a8";
39 const std::string DEV_NETWORK_ID_1 = "nt36a637105409e904d4da83790a4a8";
40 const MockDevInfo DEV_INFO_11 = { DEV_NETWORK_ID_1, DEV_ID_1, "Camera_1", DHType::CAMERA };
41 const MockDevInfo DEV_INFO_12 = { DEV_NETWORK_ID_1, DEV_ID_1, "Gps_1", DHType::GPS };
42 const MockDevInfo DEV_INFO_13 = { DEV_NETWORK_ID_1, DEV_ID_1, "Audio_1", DHType::AUDIO };
43 const MockDevInfo DEV_INFO_14 = { DEV_NETWORK_ID_1, DEV_ID_1, "Display_1", DHType::SCREEN };
44 const MockDevInfo DEV_INFO_15 = { DEV_NETWORK_ID_1, DEV_ID_1, "Input_1", DHType::INPUT };
45
46 const std::string DEV_ID_2 = "06d177ffa09543389f3b445b4722f9be";
47 const std::string DEV_NETWORK_ID_2 = "ntd177ffa09543389f3b445b4722f9be";
48 const MockDevInfo DEV_INFO_21 = { DEV_NETWORK_ID_2, DEV_ID_2, "Camera_1", DHType::CAMERA };
49 const MockDevInfo DEV_INFO_22 = { DEV_NETWORK_ID_2, DEV_ID_2, "Gps_1", DHType::GPS };
50 const MockDevInfo DEV_INFO_23 = { DEV_NETWORK_ID_2, DEV_ID_2, "Audio_1", DHType::AUDIO };
51 const MockDevInfo DEV_INFO_24 = { DEV_NETWORK_ID_2, DEV_ID_2, "Display_1", DHType::SCREEN };
52 const MockDevInfo DEV_INFO_25 = { DEV_NETWORK_ID_2, DEV_ID_2, "Input_1", DHType::INPUT };
53
54 const TaskParam TASK_PARAM_1 = {
55 .networkId = DEV_NETWORK_ID_1,
56 .uuid = DEV_ID_1,
57 .dhId = "",
58 .dhType = DHType::UNKNOWN
59 };
60
61 const TaskParam TASK_PARAM_2 = {
62 .networkId = DEV_NETWORK_ID_2,
63 .uuid = DEV_ID_2,
64 .dhId = "",
65 .dhType = DHType::UNKNOWN
66 };
67 }
68
SetUpTestCase(void)69 void TaskTest::SetUpTestCase(void)
70 {
71 }
72
TearDownTestCase(void)73 void TaskTest::TearDownTestCase(void)
74 {
75 }
76
SetUp()77 void TaskTest::SetUp()
78 {
79 }
80
TearDown()81 void TaskTest::TearDown()
82 {
83 }
84
85 /**
86 * @tc.name: task_test_001
87 * @tc.desc: Verify the Execute OnLineTask function
88 * @tc.type: FUNC
89 * @tc.require: AR000GHSKP
90 */
91 HWTEST_F(TaskTest, task_test_001, TestSize.Level0)
92 {
93 std::shared_ptr<MockOnLineTask> onlineTask =
94 std::static_pointer_cast<MockOnLineTask>(
95 MockTaskFactory::GetInstance().CreateTask(TaskType::ON_LINE, TASK_PARAM_1, nullptr));
96 onlineTask->SetOnLineDevInfos({ DEV_INFO_11, DEV_INFO_12, DEV_INFO_13, DEV_INFO_14, DEV_INFO_15 });
97 TaskExecutor::GetInstance().PushTask(onlineTask);
98
99 ASSERT_EQ(DH_FWK_SUCCESS, TaskBoard::GetInstance().WaitForALLTaskFinish());
100 ASSERT_TRUE(TaskBoard::GetInstance().IsAllTaskFinish());
101 }
102
103 /**
104 * @tc.name: task_test_002
105 * @tc.desc: Verify the Execute OnLineTask function
106 * @tc.type: FUNC
107 * @tc.require: AR000GHSKN
108 */
109 HWTEST_F(TaskTest, task_test_002, TestSize.Level0)
110 {
111 std::shared_ptr<MockOnLineTask> onlineTask1 = std::static_pointer_cast<MockOnLineTask>(
112 MockTaskFactory::GetInstance().CreateTask(TaskType::ON_LINE, TASK_PARAM_1, nullptr));
113 onlineTask1->SetOnLineDevInfos({ DEV_INFO_11, DEV_INFO_12, DEV_INFO_13, DEV_INFO_14, DEV_INFO_15 });
114
115 std::shared_ptr<MockOnLineTask> onlineTask2 = std::static_pointer_cast<MockOnLineTask>(
116 MockTaskFactory::GetInstance().CreateTask(TaskType::ON_LINE, TASK_PARAM_2, nullptr));
117 onlineTask2->SetOnLineDevInfos({ DEV_INFO_21, DEV_INFO_22, DEV_INFO_23, DEV_INFO_24, DEV_INFO_25 });
118
119 TaskExecutor::GetInstance().PushTask(onlineTask1);
120 TaskExecutor::GetInstance().PushTask(onlineTask2);
121
122 ASSERT_EQ(DH_FWK_SUCCESS, TaskBoard::GetInstance().WaitForALLTaskFinish());
123 ASSERT_TRUE(TaskBoard::GetInstance().IsAllTaskFinish());
124 }
125
126 /**
127 * @tc.name: task_test_003
128 * @tc.desc: Verify the Execute OffLineTask function
129 * @tc.type: FUNC
130 * @tc.require: AR000GHSJM
131 */
132 HWTEST_F(TaskTest, task_test_003, TestSize.Level0)
133 {
134 std::shared_ptr<MockOffLineTask> offlineTask =
135 std::static_pointer_cast<MockOffLineTask>(
136 MockTaskFactory::GetInstance().CreateTask(TaskType::OFF_LINE, TASK_PARAM_1, nullptr));
137 offlineTask->SetOffLineDevInfos({ DEV_INFO_11, DEV_INFO_12, DEV_INFO_13, DEV_INFO_14, DEV_INFO_15 });
138 TaskExecutor::GetInstance().PushTask(offlineTask);
139
140 ASSERT_EQ(DH_FWK_SUCCESS, TaskBoard::GetInstance().WaitForALLTaskFinish());
141 ASSERT_TRUE(TaskBoard::GetInstance().IsAllTaskFinish());
142 }
143
144 /**
145 * @tc.name: task_test_004
146 * @tc.desc: Verify the Execute OnLineTask and OffLineTask function
147 * @tc.type: FUNC
148 * @tc.require: AR000GHSJE
149 */
150 HWTEST_F(TaskTest, task_test_004, TestSize.Level0)
151 {
152 std::shared_ptr<MockOnLineTask> onlineTask =
153 std::static_pointer_cast<MockOnLineTask>(
154 MockTaskFactory::GetInstance().CreateTask(TaskType::ON_LINE, TASK_PARAM_1, nullptr));
155 onlineTask->SetOnLineDevInfos({ DEV_INFO_11, DEV_INFO_12, DEV_INFO_13, DEV_INFO_14, DEV_INFO_15 });
156
157 std::shared_ptr<MockOffLineTask> offlineTask =
158 std::static_pointer_cast<MockOffLineTask>(
159 MockTaskFactory::GetInstance().CreateTask(TaskType::OFF_LINE, TASK_PARAM_1, nullptr));
160 offlineTask->SetOffLineDevInfos({ DEV_INFO_11, DEV_INFO_12, DEV_INFO_13, DEV_INFO_14, DEV_INFO_15 });
161
162 TaskExecutor::GetInstance().PushTask(onlineTask);
163
164 ASSERT_EQ(ERR_DH_FWK_TASK_TIMEOUT, TaskBoard::GetInstance().WaitForALLTaskFinish());
165 ASSERT_FALSE(TaskBoard::GetInstance().IsAllTaskFinish());
166
167 TaskExecutor::GetInstance().PushTask(offlineTask);
168 ASSERT_EQ(DH_FWK_SUCCESS, TaskBoard::GetInstance().WaitForALLTaskFinish());
169 ASSERT_TRUE(TaskBoard::GetInstance().IsAllTaskFinish());
170 }
171 } // namespace DistributedHardware
172 } // namespace OHOS
173