• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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