1 /*
2 * Copyright (c) 2023 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 "hdf_log.h"
17 #include "idevmgr_hdi.h"
18 #include "v1_0/ipartition_slot.h"
19 #include <gtest/gtest.h>
20 #include <osal_mem.h>
21 #include <unistd.h>
22
23 using namespace testing;
24 using namespace testing::ext;
25 using namespace OHOS::HDI::Partitionslot::V1_0;
26 using OHOS::HDI::DeviceManager::V1_0::IDeviceManager;
27
28 class StartupPartitionSlotTestAdditional : public testing::Test {
29 public:
SetUpTestCase()30 static void SetUpTestCase()
31 {
32 auto devmgr = IDeviceManager::Get();
33 if (devmgr != nullptr) {
34 devmgr->LoadDevice("partition_slot_service");
35 } else {
36 std::cout << "Get devmgr failed" << std::endl;
37 }
38 }
TearDownTestCase()39 static void TearDownTestCase()
40 {
41 auto devmgr = IDeviceManager::Get();
42 if (devmgr != nullptr) {
43 devmgr->UnloadDevice("partition_slot_service");
44 } else {
45 std::cout << "Get devmgr failed" << std::endl;
46 }
47 }
SetUp()48 void SetUp() {}
TearDown()49 void TearDown() {}
50 };
51
52 /**
53 * @tc.number: SUB_Startup_PartitionSlot_GetCurrentSlot_0100
54 * @tc.name: testPartitionSlotGetCurrentSlot001
55 * @tc.desc: GetCurrentSlot, numOfSlots is 1, currentSlo is 0
56 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot001, Function | MediumTest | Level1)57 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot001, Function | MediumTest | Level1)
58 {
59 std::cout << "begin get currentslot by service" << std::endl;
60 int numOfSlots = 1;
61 int currentSlot = 0;
62 for (int i = 0; i < 100; i++) {
63 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
64 ASSERT_TRUE(partitionslot != nullptr);
65 ASSERT_TRUE(partitionslot->GetCurrentSlot(currentSlot, numOfSlots) == 0);
66 }
67 }
68
69 /**
70 * @tc.number: SUB_Startup_PartitionSlot_GetCurrentSlot_0200
71 * @tc.name: testPartitionSlotGetCurrentSlot002
72 * @tc.desc: GetCurrentSlot, numOfSlots is 0, currentSlo is 1
73 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot002, Function | MediumTest | Level1)74 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot002, Function | MediumTest | Level1)
75 {
76 std::cout << "begin get currentslot by service" << std::endl;
77 int numOfSlots = 0;
78 int currentSlot = 1;
79 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
80 ASSERT_TRUE(partitionslot != nullptr);
81 ASSERT_TRUE(partitionslot->GetCurrentSlot(currentSlot, numOfSlots) == 0);
82 }
83
84 /**
85 * @tc.number: SUB_Startup_PartitionSlot_GetCurrentSlot_0300
86 * @tc.name: testPartitionSlotGetCurrentSlot003
87 * @tc.desc: GetCurrentSlot, numOfSlots is 1, currentSlo is -1
88 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot003, Function | MediumTest | Level1)89 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot003, Function | MediumTest | Level1)
90 {
91 std::cout << "begin get currentslot by service" << std::endl;
92 int numOfSlots = 1;
93 int currentSlot = -1;
94 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
95 ASSERT_TRUE(partitionslot != nullptr);
96 ASSERT_TRUE(partitionslot->GetCurrentSlot(currentSlot, numOfSlots) == 0);
97 }
98
99 /**
100 * @tc.number: SUB_Startup_PartitionSlot_GetCurrentSlot_0400
101 * @tc.name: testPartitionSlotGetCurrentSlot004
102 * @tc.desc: GetCurrentSlot, numOfSlots is 2, currentSlo is -1
103 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot004, Function | MediumTest | Level1)104 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot004, Function | MediumTest | Level1)
105 {
106 std::cout << "begin get currentslot by service" << std::endl;
107 int numOfSlots = 2;
108 int currentSlot = -1;
109 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
110 ASSERT_TRUE(partitionslot != nullptr);
111 ASSERT_TRUE(partitionslot->GetCurrentSlot(currentSlot, numOfSlots) == 0);
112 }
113
114 /**
115 * @tc.number: SUB_Startup_PartitionSlot_GetCurrentSlot_0500
116 * @tc.name: testPartitionSlotGetCurrentSlot005
117 * @tc.desc: GetCurrentSlot, numOfSlots is 2, currentSlo is 1
118 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot005, Function | MediumTest | Level1)119 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot005, Function | MediumTest | Level1)
120 {
121 std::cout << "begin get currentslot by service" << std::endl;
122 int numOfSlots = 2;
123 int currentSlot = 1;
124 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
125 ASSERT_TRUE(partitionslot != nullptr);
126 ASSERT_TRUE(partitionslot->GetCurrentSlot(currentSlot, numOfSlots) == 0);
127 }
128
129 /**
130 * @tc.number: SUB_Startup_PartitionSlot_GetCurrentSlot_0600
131 * @tc.name: testPartitionSlotGetCurrentSlot006
132 * @tc.desc: GetCurrentSlot, numOfSlots is 3, currentSlo is -1
133 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot006, Function | MediumTest | Level1)134 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot006, Function | MediumTest | Level1)
135 {
136 std::cout << "begin get currentslot by service" << std::endl;
137 int numOfSlots = 3;
138 int currentSlot = -1;
139 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
140 ASSERT_TRUE(partitionslot != nullptr);
141 ASSERT_TRUE(partitionslot->GetCurrentSlot(currentSlot, numOfSlots) == 0);
142 }
143
144 /**
145 * @tc.number: SUB_Startup_PartitionSlot_GetCurrentSlot_0700
146 * @tc.name: testPartitionSlotGetCurrentSlot007
147 * @tc.desc: GetCurrentSlot, numOfSlots is 3, currentSlo is 1
148 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot007, Function | MediumTest | Level1)149 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot007, Function | MediumTest | Level1)
150 {
151 std::cout << "begin get currentslot by service" << std::endl;
152 int numOfSlots = 3;
153 int currentSlot = 1;
154 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
155 ASSERT_TRUE(partitionslot != nullptr);
156 ASSERT_TRUE(partitionslot->GetCurrentSlot(currentSlot, numOfSlots) == 0);
157 }
158
159 /**
160 * @tc.number: SUB_Startup_PartitionSlot_GetCurrentSlot_0800
161 * @tc.name: testPartitionSlotGetCurrentSlot008
162 * @tc.desc: GetCurrentSlot, numOfSlots is 3, currentSlo is 2
163 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot008, Function | MediumTest | Level1)164 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot008, Function | MediumTest | Level1)
165 {
166 std::cout << "begin get currentslot by service" << std::endl;
167 int numOfSlots = 3;
168 int currentSlot = 2;
169 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
170 ASSERT_TRUE(partitionslot != nullptr);
171 ASSERT_TRUE(partitionslot->GetCurrentSlot(currentSlot, numOfSlots) == 0);
172 }
173
174 /**
175 * @tc.number: SUB_Startup_PartitionSlot_GetCurrentSlot_0900
176 * @tc.name: testPartitionSlotGetCurrentSlot009
177 * @tc.desc: GetCurrentSlot, numOfSlots is 2, currentSlo is 3
178 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot009, Function | MediumTest | Level1)179 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetCurrentSlot009, Function | MediumTest | Level1)
180 {
181 std::cout << "begin get currentslot by service" << std::endl;
182 int numOfSlots = 2;
183 int currentSlot = 3;
184 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
185 ASSERT_TRUE(partitionslot != nullptr);
186 ASSERT_TRUE(partitionslot->GetCurrentSlot(currentSlot, numOfSlots) == 0);
187 }
188
189 /**
190 * @tc.number: SUB_Startup_PartitionSlot_GetSlotSuffix_0100
191 * @tc.name: testPartitionSlotGetSlotSuffix001
192 * @tc.desc: GetSlotSuffix, slot is 2147483647
193 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetSlotSuffix001, Function | MediumTest | Level1)194 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetSlotSuffix001, Function | MediumTest | Level1)
195 {
196 std::cout << "begin get suffix by service" << std::endl;
197 std::string suffix = "";
198 int slot = 2147483647;
199 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
200 ASSERT_TRUE(partitionslot != nullptr);
201 ASSERT_TRUE(partitionslot->GetSlotSuffix(slot, suffix) == 0);
202 }
203
204 /**
205 * @tc.number: SUB_Startup_PartitionSlot_GetSlotSuffix_0200
206 * @tc.name: testPartitionSlotGetSlotSuffix002
207 * @tc.desc: GetSlotSuffix, slot is -2147483648
208 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetSlotSuffix002, Function | MediumTest | Level1)209 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetSlotSuffix002, Function | MediumTest | Level1)
210 {
211 std::cout << "begin get suffix by service" << std::endl;
212 std::string suffix = "";
213 int slot = -2147483648;
214 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
215 ASSERT_TRUE(partitionslot != nullptr);
216 ASSERT_TRUE(partitionslot->GetSlotSuffix(slot, suffix) == 0);
217 }
218
219 /**
220 * @tc.number: SUB_Startup_PartitionSlot_GetSlotSuffix_0300
221 * @tc.name: testPartitionSlotGetSlotSuffix003
222 * @tc.desc: GetSlotSuffix, stability test
223 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetSlotSuffix003, Function | MediumTest | Level1)224 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotGetSlotSuffix003, Function | MediumTest | Level1)
225 {
226 std::cout << "begin get suffix by service" << std::endl;
227 std::string suffix = "";
228 int slot = 2;
229 for (int i = 0; i < 100; i++) {
230 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
231 ASSERT_TRUE(partitionslot != nullptr);
232 ASSERT_TRUE(partitionslot->GetSlotSuffix(slot, suffix) == 0);
233 }
234 }
235
236 /**
237 * @tc.number: SUB_Startup_PartitionSlot_SetActiveSlot_0100
238 * @tc.name: testPartitionSlotSetActiveSlot001
239 * @tc.desc: SetActiveSlot, slot is 2147483647
240 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotSetActiveSlot001, Function | MediumTest | Level1)241 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotSetActiveSlot001, Function | MediumTest | Level1)
242 {
243 std::cout << "begin set active slot by service" << std::endl;
244 int numOfSlots = 2;
245 int currentSlot = 0;
246 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
247 ASSERT_TRUE(partitionslot != nullptr);
248 partitionslot->GetCurrentSlot(currentSlot, numOfSlots);
249 ASSERT_TRUE(partitionslot->SetActiveSlot(2147483647) == 0);
250 partitionslot->SetActiveSlot(currentSlot);
251 }
252
253 /**
254 * @tc.number: SUB_Startup_PartitionSlot_SetActiveSlot_0200
255 * @tc.name: testPartitionSlotSetActiveSlot002
256 * @tc.desc: SetActiveSlot, slot is -2147483648
257 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotSetActiveSlot002, Function | MediumTest | Level1)258 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotSetActiveSlot002, Function | MediumTest | Level1)
259 {
260 std::cout << "begin set active slot by service" << std::endl;
261 int numOfSlots = 2;
262 int currentSlot = 0;
263 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
264 ASSERT_TRUE(partitionslot != nullptr);
265 partitionslot->GetCurrentSlot(currentSlot, numOfSlots);
266 ASSERT_TRUE(partitionslot->SetActiveSlot(-2147483648) != 0);
267 partitionslot->SetActiveSlot(currentSlot);
268 }
269
270 /**
271 * @tc.number: SUB_Startup_PartitionSlot_SetActiveSlot_0300
272 * @tc.name: testPartitionSlotSetActiveSlot003
273 * @tc.desc: SetActiveSlot, stability test
274 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotSetActiveSlot003, Function | MediumTest | Level1)275 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotSetActiveSlot003, Function | MediumTest | Level1)
276 {
277 int numOfSlots = 2;
278 int currentSlot = 0;
279 for (int i = 0; i < 100; i++) {
280 std::cout << "begin set active slot by service" << std::endl;
281 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
282 ASSERT_TRUE(partitionslot != nullptr);
283 partitionslot->GetCurrentSlot(currentSlot, numOfSlots);
284 ASSERT_TRUE(partitionslot->SetActiveSlot(2) == 0);
285 partitionslot->SetActiveSlot(currentSlot);
286 }
287 }
288
289 /**
290 * @tc.number: SUB_Startup_PartitionSlot_SetSlotUnbootable_0100
291 * @tc.name: testPartitionSlotSetSlotUnbootable001
292 * @tc.desc: SetSlotUnbootable, slot is 2147483647
293 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotSetSlotUnbootable001, Function | MediumTest | Level1)294 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotSetSlotUnbootable001, Function | MediumTest | Level1)
295 {
296 std::cout << "begin set unbootable slot by service" << std::endl;
297 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
298 ASSERT_TRUE(partitionslot != nullptr);
299 ASSERT_TRUE(partitionslot->SetSlotUnbootable(2147483647) == 0);
300 }
301
302 /**
303 * @tc.number: SUB_Startup_PartitionSlot_SetSlotUnbootable_0200
304 * @tc.name: testPartitionSlotSetSlotUnbootable002
305 * @tc.desc: SetSlotUnbootable, slot is -2147483648
306 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotSetSlotUnbootable002, Function | MediumTest | Level1)307 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotSetSlotUnbootable002, Function | MediumTest | Level1)
308 {
309 std::cout << "begin set unbootable slot by service" << std::endl;
310 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
311 ASSERT_TRUE(partitionslot != nullptr);
312 ASSERT_TRUE(partitionslot->SetSlotUnbootable(-2147483648) != 0);
313 }
314
315 /**
316 * @tc.number: SUB_Startup_PartitionSlot_SetSlotUnbootable_0300
317 * @tc.name: testPartitionSlotSetSlotUnbootable003
318 * @tc.desc: SetSlotUnbootable, stability test
319 */
HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotSetSlotUnbootable003, Function | MediumTest | Level1)320 HWTEST_F(StartupPartitionSlotTestAdditional, testPartitionSlotSetSlotUnbootable003, Function | MediumTest | Level1)
321 {
322 for (int i = 0; i < 100; i++) {
323 std::cout << "begin set unbootable slot by service" << std::endl;
324 sptr<IPartitionSlot> partitionslot = IPartitionSlot::Get();
325 ASSERT_TRUE(partitionslot != nullptr);
326 ASSERT_TRUE(partitionslot->SetSlotUnbootable(2) == 0);
327 }
328 }