1 /*
2 * Copyright (c) 2022-2024 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 <dlfcn.h>
17 #include "plugin_mgr.h"
18 #include "res_type.h"
19 #include "plugin_mgr_test.h"
20 #include "socperf_plugin.h"
21 #include "mock_plugin_mgr.h"
22 #include "res_data.h"
23 #include "res_type.h"
24
25 using namespace std;
26 using namespace testing::ext;
27
28 namespace OHOS {
29 namespace ResourceSchedule {
30 namespace {
31 const string LIB_NAME = "libunittest_plugin.z.so";
32 }
33
34 #ifdef RESOURCE_SCHEDULE_SERVICE_WITH_FFRT_ENABLE
35 atomic<bool> PluginMgrTest::isBlocked = false;
36 #endif
37
SetUpTestCase()38 void PluginMgrTest::SetUpTestCase() {}
39
TearDownTestCase()40 void PluginMgrTest::TearDownTestCase() {}
41
SetUp()42 void PluginMgrTest::SetUp()
43 {
44 /**
45 * @tc.setup: initialize the member variable pluginMgr_
46 */
47 pluginMgr_ = make_shared<MockPluginMgr>();
48 }
49
TearDown()50 void PluginMgrTest::TearDown()
51 {
52 /**
53 * @tc.teardown: clear pluginMgr_
54 */
55 pluginMgr_ = nullptr;
56 }
57
GetSubItemValue(std::string PluginName, std::string configName)58 std::string PluginMgrTest::GetSubItemValue(std::string PluginName, std::string configName)
59 {
60 std::string subItemValue;
61 PluginConfig config = pluginMgr_->GetConfig(PluginName, configName);
62 if (config.itemList.size() <= 0) {
63 return "";
64 }
65 for (auto item : config.itemList) {
66 for (auto subItem : item.subItemList) {
67 if (subItem.name == "tag") {
68 subItemValue = subItem.value;
69 }
70 }
71 }
72 return subItemValue;
73 }
74
75 #ifdef RESOURCE_SCHEDULE_SERVICE_WITH_FFRT_ENABLE
GetTestPlugin()76 std::shared_ptr<PluginLib> PluginMgrTest::GetTestPlugin()
77 {
78 PluginLib libInfo;
79 libInfo.onDispatchResourceFunc_ = [](const std::shared_ptr<ResData>& data) {
80 while (PluginMgrTest::isBlocked.load()) {}
81 };
82 return make_shared<PluginLib>(libInfo);
83 }
84
LoadTestPlugin()85 void PluginMgrTest::LoadTestPlugin()
86 {
87 auto plugin = GetTestPlugin();
88 PluginMgr::GetInstance().pluginLibMap_.emplace(LIB_NAME, *plugin);
89 PluginMgr::GetInstance().SubscribeResource(LIB_NAME, ResType::RES_TYPE_SLIDE_RECOGNIZE);
90 auto callback = [pluginName = LIB_NAME, time = PluginMgr::GetInstance().pluginBlockTime]() {
91 PluginMgr::GetInstance().HandlePluginTimeout(pluginName);
92 ffrt::submit([pluginName]() {
93 PluginMgr::GetInstance().EnablePluginIfResume(pluginName);
94 }, {}, {}, ffrt::task_attr().delay(time));
95 };
96 PluginMgr::GetInstance().dispatchers_.emplace(LIB_NAME, std::make_shared<ffrt::queue>(LIB_NAME.c_str(),
97 ffrt::queue_attr().timeout(PluginMgr::GetInstance().pluginBlockTime).callback(callback)));
98 }
99 #endif
100
101 /**
102 * @tc.name: Plugin mgr test Init 001
103 * @tc.desc: Verify if can init success.
104 * @tc.type: FUNC
105 * @tc.require: issueI798UT
106 * @tc.author:xukuan
107 */
HWTEST_F(PluginMgrTest, Init001, TestSize.Level1)108 HWTEST_F(PluginMgrTest, Init001, TestSize.Level1)
109 {
110 pluginMgr_->Init();
111 EXPECT_TRUE(pluginMgr_->initStatus == pluginMgr_->INIT_SUCCESS);
112 EXPECT_EQ(pluginMgr_->pluginLibMap_.size(), 0);
113 }
114
115 /**
116 * @tc.name: Plugin mgr test Init 002
117 * @tc.desc: Verify if can init fault.
118 * @tc.type: FUNC
119 * @tc.require: issueI8VZVN
120 * @tc.author:z30053169
121 */
HWTEST_F(PluginMgrTest, Init002, TestSize.Level1)122 HWTEST_F(PluginMgrTest, Init002, TestSize.Level1)
123 {
124 PluginMgr::GetInstance().pluginSwitch_ = nullptr;
125 pluginMgr_->Init();
126 SUCCEED();
127 }
128
129 /**
130 * @tc.name: Plugin mgr test GetPluginSwitch 001
131 * @tc.desc: Verify if can get pluginSwitch
132 * @tc.type: FUNC
133 * @tc.require: issuesIA7P80
134 * @tc.author:xiaoshun
135 */
HWTEST_F(PluginMgrTest, GetPluginSwitch001, TestSize.Level0)136 HWTEST_F(PluginMgrTest, GetPluginSwitch001, TestSize.Level0)
137 {
138 pluginMgr_->Init();
139 auto pluginInfoList = pluginMgr_->pluginSwitch_->GetPluginSwitch();
140 bool result;
141 for (auto pluginInfo : pluginInfoList) {
142 if (pluginInfo.libPath == "libapp_preload_plugin.z.so") {
143 EXPECT_TRUE(pluginInfo.switchOn);
144 } else if (pluginInfo.libPath == "libapp_preload_plugin2.z.so" ||
145 pluginInfo.libPath == "libapp_preload_plugin3.z.so" ||
146 pluginInfo.libPath == "libapp_preload_plugin4.z.so") {
147 EXPECT_TRUE(!pluginInfo.switchOn);
148 }
149 }
150 }
151
152 /**
153 * @tc.name: Plugin mgr test Stop 001
154 * @tc.desc: Verify if can stop success.
155 * @tc.type: FUNC
156 * @tc.require: issueI798UT
157 * @tc.author:xukuan
158 */
HWTEST_F(PluginMgrTest, Stop001, TestSize.Level1)159 HWTEST_F(PluginMgrTest, Stop001, TestSize.Level1)
160 {
161 pluginMgr_->Stop();
162 EXPECT_EQ(pluginMgr_->pluginLibMap_.size(), 0);
163 EXPECT_EQ(pluginMgr_->resTypeLibMap_.size(), 0);
164 EXPECT_TRUE(pluginMgr_->configReader_ == nullptr);
165 }
166
167 /**
168 * @tc.name: Plugin mgr test GetConfig 001
169 * @tc.desc: Verify if can get config with wrong env.
170 * @tc.type: FUNC
171 * @tc.require: issueI5WWV3
172 * @tc.author:lice
173 */
HWTEST_F(PluginMgrTest, GetConfig001, TestSize.Level1)174 HWTEST_F(PluginMgrTest, GetConfig001, TestSize.Level1)
175 {
176 PluginConfig config = pluginMgr_->GetConfig("", "");
177 EXPECT_TRUE(config.itemList.empty());
178 }
179
180 /**
181 * @tc.name: Plugin mgr test GetConfig 002
182 * @tc.desc: Verify if can get config with wrong env.
183 * @tc.type: FUNC
184 * @tc.require: issuesIA7P80
185 * @tc.author:lice
186 */
HWTEST_F(PluginMgrTest, GetConfig002, TestSize.Level1)187 HWTEST_F(PluginMgrTest, GetConfig002, TestSize.Level1)
188 {
189 pluginMgr_->Init();
190 std::string subItemValue = GetSubItemValue("demo2", "sample");
191 bool ret = !subItemValue.empty() && subItemValue == "test_sys_prod";
192 EXPECT_TRUE(ret);
193 subItemValue = GetSubItemValue("demo3", "sample");
194 ret = !subItemValue.empty() && subItemValue == "test_sys_prod";
195 EXPECT_TRUE(ret);
196 subItemValue = GetSubItemValue("demo4", "sample");
197 ret = !subItemValue.empty() && subItemValue == "test_system";
198 EXPECT_TRUE(ret);
199 }
200
201 /**
202 * @tc.name: Plugin mgr test GetConfig 003
203 * @tc.desc: Verify if can get config with wrong env.
204 * @tc.type: FUNC
205 * @tc.require: issueI8VZVN
206 * @tc.author:z30053169
207 */
HWTEST_F(PluginMgrTest, GetConfig003, TestSize.Level1)208 HWTEST_F(PluginMgrTest, GetConfig003, TestSize.Level1)
209 {
210 PluginMgr::GetInstance().configReader_ = nullptr;
211 PluginConfig config = pluginMgr_->GetConfig("", "");
212 EXPECT_EQ(config.itemList.size(), 0);
213 }
214
215 /**
216 * @tc.name: Plugin mgr test SubscribeResource 002
217 * @tc.desc: Verify if can SubscribeResource
218 * @tc.type: FUNC
219 * @tc.require: issueI8VZVN
220 * @tc.author:z30053169
221 */
HWTEST_F(PluginMgrTest, SubscribeResource002, TestSize.Level1)222 HWTEST_F(PluginMgrTest, SubscribeResource002, TestSize.Level1)
223 {
224 PluginMgr::GetInstance().SubscribeResource("", 0);
225 SUCCEED();
226 PluginMgr::GetInstance().SubscribeResource("test", 1);
227 SUCCEED();
228 PluginMgr::GetInstance().UnSubscribeResource("test", 1);
229 EXPECT_EQ(PluginMgr::GetInstance().resTypeLibMap_.size(), 0);
230 }
231
232 /**
233 * @tc.name: Plugin mgr test UnSubscribeResource 003
234 * @tc.desc: Verify if can SubscribeResource
235 * @tc.type: FUNC
236 * @tc.require: issueI8VZVN
237 * @tc.author:z30053169
238 */
HWTEST_F(PluginMgrTest, UnSubscribeResource003, TestSize.Level1)239 HWTEST_F(PluginMgrTest, UnSubscribeResource003, TestSize.Level1)
240 {
241 PluginMgr::GetInstance().UnSubscribeResource("", 0);
242 SUCCEED();
243 PluginMgr::GetInstance().UnSubscribeResource("test", 0);
244 SUCCEED();
245 PluginMgr::GetInstance().SubscribeResource("test1", 1);
246 PluginMgr::GetInstance().SubscribeResource("test2", 1);
247 PluginMgr::GetInstance().UnSubscribeResource("test1", 1);
248 SUCCEED();
249 PluginMgr::GetInstance().UnSubscribeResource("test2", 1);
250 EXPECT_EQ(PluginMgr::GetInstance().resTypeLibMap_.size(), 0);
251 }
252
253 /**
254 * @tc.name: Plugin mgr test DispatchResource 001
255 * @tc.desc: Verify if can DispatchResource
256 * @tc.type: FUNC
257 * @tc.require: issueI8VZVN
258 * @tc.author:z30053169
259 */
HWTEST_F(PluginMgrTest, DispatchResource001, TestSize.Level1)260 HWTEST_F(PluginMgrTest, DispatchResource001, TestSize.Level1)
261 {
262 pluginMgr_->Init();
263 #ifndef RESOURCE_SCHEDULE_SERVICE_WITH_FFRT_ENABLE
264 if (pluginMgr_->dispatcher_ == nullptr) {
265 pluginMgr_->dispatcher_ = std::make_shared<AppExecFwk::EventHandler>(
266 AppExecFwk::EventRunner::Create("rssDispatcher"));
267 }
268 #endif
269 nlohmann::json payload;
270 auto data = std::make_shared<ResData>(ResType::RES_TYPE_APP_ABILITY_START,
271 ResType::AppStartType::APP_COLD_START, payload);
272 pluginMgr_->DispatchResource(data);
273 pluginMgr_->DispatchResource(nullptr);
274 SUCCEED();
275 }
276
277 /**
278 * @tc.name: Plugin mgr test DispatchResource 002
279 * @tc.desc: Verify if can DispatchResource
280 * @tc.type: FUNC
281 * @tc.require: issueI8VZVN
282 * @tc.author:z30053169
283 */
HWTEST_F(PluginMgrTest, DispatchResource002, TestSize.Level1)284 HWTEST_F(PluginMgrTest, DispatchResource002, TestSize.Level1)
285 {
286 #ifndef RESOURCE_SCHEDULE_SERVICE_WITH_FFRT_ENABLE
287 if (PluginMgr::GetInstance().dispatcher_ == nullptr) {
288 PluginMgr::GetInstance().dispatcher_ = std::make_shared<AppExecFwk::EventHandler>(
289 AppExecFwk::EventRunner::Create("rssDispatcher"));
290 }
291 #endif
292 nlohmann::json payload;
293 auto data = std::make_shared<ResData>(ResType::RES_TYPE_APP_ABILITY_START,
294 ResType::AppStartType::APP_COLD_START, payload);
295 PluginMgr::GetInstance().SubscribeResource("", 0);
296 SUCCEED();
297 PluginMgr::GetInstance().SubscribeResource("test", ResType::RES_TYPE_APP_ABILITY_START);
298 SUCCEED();
299 PluginMgr::GetInstance().DispatchResource(data);
300 PluginMgr::GetInstance().UnSubscribeResource("", 0);
301 SUCCEED();
302 }
303
304 /**
305 * @tc.name: Plugin mgr test SubscribeResource 001
306 * @tc.desc: Verify if can stop success.
307 * @tc.type: FUNC
308 * @tc.require: issueI798UT
309 * @tc.author:xukuan
310 */
HWTEST_F(PluginMgrTest, SubscribeResource001, TestSize.Level1)311 HWTEST_F(PluginMgrTest, SubscribeResource001, TestSize.Level1)
312 {
313 pluginMgr_->Init();
314 pluginMgr_->SubscribeResource(LIB_NAME, ResType::RES_TYPE_SCREEN_STATUS);
315 auto iter = pluginMgr_->resTypeLibMap_.find(ResType::RES_TYPE_SCREEN_STATUS);
316 string libName = iter->second.back();
317 EXPECT_EQ(libName.compare(LIB_NAME), 0);
318 }
319
320 /**
321 * @tc.name: Plugin mgr test SubscribeSyncResource 001
322 * @tc.desc: Verify if can stop success.
323 * @tc.type: FUNC
324 */
HWTEST_F(PluginMgrTest, SubscribeSyncResource001, TestSize.Level1)325 HWTEST_F(PluginMgrTest, SubscribeSyncResource001, TestSize.Level1)
326 {
327 pluginMgr_->Init();
328 pluginMgr_->SubscribeSyncResource(LIB_NAME, ResType::RES_TYPE_SCREEN_STATUS);
329 auto iter = pluginMgr_->resTypeLibSyncMap_.find(ResType::RES_TYPE_SCREEN_STATUS);
330 string libName = iter->second;
331 EXPECT_EQ(libName.compare(LIB_NAME), 0);
332 }
333
334 /**
335 * @tc.name: Plugin mgr test UnSubscribeSyncResource 001
336 * @tc.desc: Verify if can stop success.
337 * @tc.type: FUNC
338 */
HWTEST_F(PluginMgrTest, UnSubscribeSyncResource001, TestSize.Level1)339 HWTEST_F(PluginMgrTest, UnSubscribeSyncResource001, TestSize.Level1)
340 {
341 pluginMgr_->Init();
342 pluginMgr_->SubscribeSyncResource(LIB_NAME, ResType::RES_TYPE_SCREEN_STATUS);
343 pluginMgr_->UnSubscribeSyncResource(LIB_NAME, ResType::RES_TYPE_SCREEN_STATUS);
344 auto iter = pluginMgr_->resTypeLibSyncMap_.find(ResType::RES_TYPE_SCREEN_STATUS);
345 EXPECT_TRUE(iter == pluginMgr_->resTypeLibSyncMap_.end());
346 }
347
348 /**
349 * @tc.name: Plugin mgr test DeliverResource 001
350 * @tc.desc: Verify if can DeliverResource
351 * @tc.type: FUNC
352 */
HWTEST_F(PluginMgrTest, DeliverResource001, TestSize.Level1)353 HWTEST_F(PluginMgrTest, DeliverResource001, TestSize.Level1)
354 {
355 pluginMgr_->Init();
356 nlohmann::json payload;
357 nlohmann::json reply;
358 auto data = std::make_shared<ResData>(ResType::RES_TYPE_APP_ABILITY_START,
359 ResType::AppStartType::APP_COLD_START, payload, reply);
360 pluginMgr_->DeliverResource(data);
361 pluginMgr_->DeliverResource(nullptr);
362 SUCCEED();
363 }
364
365 /**
366 * @tc.name: Plugin mgr test Dump 001
367 * @tc.desc: Verify if dump commands is success.
368 * @tc.type: FUNC
369 * @tc.require: issueI5WWV3
370 * @tc.author:lice
371 */
HWTEST_F(PluginMgrTest, Dump001, TestSize.Level1)372 HWTEST_F(PluginMgrTest, Dump001, TestSize.Level1)
373 {
374 std::string res;
375 pluginMgr_->Init();
376 pluginMgr_->DumpAllPlugin(res);
377 EXPECT_TRUE(!res.empty());
378 res = "";
379
380 pluginMgr_->LoadPlugin();
381 pluginMgr_->DumpHelpFromPlugin(res);
382 EXPECT_TRUE(res.empty());
383 res = "";
384
385 std::vector<std::string> args;
386 pluginMgr_->DumpOnePlugin(res, LIB_NAME, args);
387 EXPECT_TRUE(!res.empty());
388 res = "";
389
390 args.emplace_back("-h");
391 pluginMgr_->DumpOnePlugin(res, LIB_NAME, args);
392 EXPECT_TRUE(!res.empty());
393 res = "";
394 pluginMgr_->DumpAllPluginConfig(res);
395 EXPECT_TRUE(!res.empty());
396 }
397
398 /**
399 * @tc.name: Plugin mgr test RepairPlugin 001
400 * @tc.desc: Verify if RepairPlugin is success.
401 * @tc.type: FUNC
402 * @tc.require: issueI5WWV3
403 * @tc.author:lice
404 */
HWTEST_F(PluginMgrTest, RepairPlugin001, TestSize.Level1)405 HWTEST_F(PluginMgrTest, RepairPlugin001, TestSize.Level1)
406 {
407 PluginLib libInfo = pluginMgr_->pluginLibMap_.find(LIB_NAME)->second;
408 pluginMgr_->RepairPlugin(Clock::now(), LIB_NAME, libInfo);
409 EXPECT_TRUE(true);
410 }
411
412 /**
413 * @tc.name: Plugin mgr test UnSubscribeResource 001
414 * @tc.desc: Verify if can stop success.
415 * @tc.type: FUNC
416 * @tc.require: issueI798UT
417 * @tc.author:xukuan
418 */
HWTEST_F(PluginMgrTest, UnSubscribeResource001, TestSize.Level1)419 HWTEST_F(PluginMgrTest, UnSubscribeResource001, TestSize.Level1)
420 {
421 pluginMgr_->UnSubscribeResource(LIB_NAME, ResType::RES_TYPE_SCREEN_STATUS);
422 auto iter = pluginMgr_->resTypeLibMap_.find(ResType::RES_TYPE_SCREEN_STATUS);
423 EXPECT_TRUE(iter == pluginMgr_->resTypeLibMap_.end());
424 }
425
426 /*
427 * @tc.name: SocPerfSubTest_DispatchResource_001
428 * @tc.desc: DispatchResource Plugin
429 * @tc.type FUNC
430 * @tc.author:zoujie
431 * @tc.require: issueI5VWUI
432 */
HWTEST_F(PluginMgrTest, PluginMgrTest_DispatchResource_001, TestSize.Level1)433 HWTEST_F(PluginMgrTest, PluginMgrTest_DispatchResource_001, TestSize.Level1)
434 {
435 nlohmann::json payload;
436 auto data = std::make_shared<ResData>(ResType::RES_TYPE_APP_ABILITY_START,
437 ResType::AppStartType::APP_COLD_START, payload);
438 /* Init */
439 SocPerfPlugin::GetInstance().Init();
440 /* HandleAppAbilityStart */
441 SocPerfPlugin::GetInstance().DispatchResource(data);
442
443 data->value = ResType::AppStartType::APP_WARM_START;
444 SocPerfPlugin::GetInstance().DispatchResource(data);
445
446 /* HandleWindowFocus */
447 data->resType = ResType::RES_TYPE_WINDOW_FOCUS;
448 data->value = ResType::WindowFocusStatus::WINDOW_FOCUS;
449 SocPerfPlugin::GetInstance().DispatchResource(data);
450
451 /* HandleEventClick */
452 data->resType = ResType::RES_TYPE_CLICK_RECOGNIZE;
453 data->value = ResType::ClickEventType::TOUCH_EVENT_DOWN;
454 SocPerfPlugin::GetInstance().DispatchResource(data);
455 data->value = ResType::ClickEventType::TOUCH_EVENT_UP;
456 SocPerfPlugin::GetInstance().DispatchResource(data);
457 data->value = ResType::ClickEventType::CLICK_EVENT;
458 SocPerfPlugin::GetInstance().DispatchResource(data);
459
460 /* HandlePushPage */
461 data->resType = ResType::RES_TYPE_PUSH_PAGE;
462 data->value = ResType::PushPageType::PUSH_PAGE_START;
463 SocPerfPlugin::GetInstance().DispatchResource(data);
464 data->value = ResType::PushPageType::PUSH_PAGE_COMPLETE;
465 SocPerfPlugin::GetInstance().DispatchResource(data);
466
467 /* HandlePopPage */
468 data->resType = ResType::RES_TYPE_POP_PAGE;
469 data->value = 0;
470 SocPerfPlugin::GetInstance().DispatchResource(data);
471
472 /* HandleEventSlide */
473 data->resType = ResType::RES_TYPE_SLIDE_RECOGNIZE;
474 data->value = ResType::SlideEventStatus::SLIDE_EVENT_ON;
475 SocPerfPlugin::GetInstance().DispatchResource(data);
476 data->value = ResType::SlideEventStatus::SLIDE_EVENT_OFF;
477 SocPerfPlugin::GetInstance().DispatchResource(data);
478
479 /* HandleEventWebGesture */
480 data->resType = ResType::RES_TYPE_WEB_GESTURE;
481 data->value = 0;
482 SocPerfPlugin::GetInstance().DispatchResource(data);
483
484 /* HandleResizeWindow */
485 data->resType = ResType::RES_TYPE_RESIZE_WINDOW;
486 data->value = ResType::WindowResizeType::WINDOW_RESIZING;
487 SocPerfPlugin::GetInstance().DispatchResource(data);
488 data->value = ResType::WindowResizeType::WINDOW_RESIZE_STOP;
489 SocPerfPlugin::GetInstance().DispatchResource(data);
490
491 /* HandleMoveWindow */
492 data->resType = ResType::RES_TYPE_MOVE_WINDOW;
493 data->value = ResType::WindowMoveType::WINDOW_MOVING;
494 SocPerfPlugin::GetInstance().DispatchResource(data);
495 data->value = ResType::WindowMoveType::WINDOW_MOVE_STOP;
496 SocPerfPlugin::GetInstance().DispatchResource(data);
497
498 /* DeInit */
499 SocPerfPlugin::GetInstance().Disable();
500 SUCCEED();
501 }
502
503 /*
504 * @tc.name: SocPerfSubTest_DispatchResource_002
505 * @tc.desc: DispatchResource Plugin
506 * @tc.type FUNC
507 * @tc.author:qiunaiguang
508 * @tc.require: issueI6I9QS
509 */
HWTEST_F(PluginMgrTest, PluginMgrTest_DispatchResource_002, Function | MediumTest | Level0)510 HWTEST_F(PluginMgrTest, PluginMgrTest_DispatchResource_002, Function | MediumTest | Level0)
511 {
512 /* Init */
513 SocPerfPlugin::GetInstance().Init();
514
515 nlohmann::json payload;
516 std::shared_ptr<ResData> resData =
517 std::make_shared<ResData>(ResType::RES_TYPE_LOAD_PAGE, ResType::LoadPageType::LOAD_PAGE_START, payload);
518 SocPerfPlugin::GetInstance().HandleLoadPage(resData);
519 resData->value = ResType::LoadPageType::LOAD_PAGE_COMPLETE;
520 SocPerfPlugin::GetInstance().HandleLoadPage(resData);
521 /* DeInit */
522 SocPerfPlugin::GetInstance().Disable();
523 SUCCEED();
524 }
525
526 /*
527 * @tc.name: SocPerfSubTest_DispatchResource_003
528 * @tc.desc: DispatchResource Plugin
529 * @tc.type FUNC
530 * @tc.author:qiunaiguang
531 * @tc.require: issueI6I9QS
532 */
HWTEST_F(PluginMgrTest, PluginMgrTest_DispatchResource_003, Function | MediumTest | Level0)533 HWTEST_F(PluginMgrTest, PluginMgrTest_DispatchResource_003, Function | MediumTest | Level0)
534 {
535 /* Init */
536 SocPerfPlugin::GetInstance().Init();
537 nlohmann::json payload;
538 std::shared_ptr<ResData> resData =
539 std::make_shared<ResData>(ResType::RES_TYPE_SHOW_REMOTE_ANIMATION,
540 ResType::ShowRemoteAnimationStatus::ANIMATION_BEGIN, payload);
541 SocPerfPlugin::GetInstance().HandleRemoteAnimation(resData);
542
543 resData->value = ResType::ShowRemoteAnimationStatus::ANIMATION_END;
544 SocPerfPlugin::GetInstance().HandleRemoteAnimation(resData);
545 /* DeInit */
546 SocPerfPlugin::GetInstance().Disable();
547 SUCCEED();
548 }
549
550 /*
551 * @tc.name: SocPerfSubTest_DispatchResource_004
552 * @tc.desc: DispatchResource Plugin
553 * @tc.type FUNC
554 * @tc.author:qiunaiguang
555 * @tc.require: issueI6I9QS
556 */
HWTEST_F(PluginMgrTest, PluginMgrTest_DispatchResource_004, Function | MediumTest | Level0)557 HWTEST_F(PluginMgrTest, PluginMgrTest_DispatchResource_004, Function | MediumTest | Level0)
558 {
559 /* Init */
560 SocPerfPlugin::GetInstance().Init();
561 SocPerfPlugin::GetInstance().InitFeatureSwitch("socperf_on_demand");
562 SocPerfPlugin::GetInstance().InitFeatureSwitch("test");
563 /* DeInit */
564 SocPerfPlugin::GetInstance().Disable();
565 SUCCEED();
566 }
567
568 /*
569 * @tc.name: SocPerfSubTest_DispatchResource_005
570 * @tc.desc: DispatchResource Plugin
571 * @tc.type FUNC
572 * @tc.author:fangdinggeng
573 * @tc.require: issueI5VWUI
574 */
HWTEST_F(PluginMgrTest, PluginMgrTest_DispatchResource_005, TestSize.Level1)575 HWTEST_F(PluginMgrTest, PluginMgrTest_DispatchResource_005, TestSize.Level1)
576 {
577 nlohmann::json payload;
578 auto data = std::make_shared<ResData>(ResType::RES_TYPE_DEVICE_MODE_STATUS,
579 ResType::DeviceModeStatus::MODE_ENTER, payload);
580 /* Init */
581 SocPerfPlugin::GetInstance().Init();
582
583 /* HandleDeviceModeStatusChange */
584 data->payload["deviceMode"] = "test";
585 SocPerfPlugin::GetInstance().DispatchResource(data);
586 data->value = ResType::DeviceModeStatus::MODE_QUIT;
587 SocPerfPlugin::GetInstance().DispatchResource(data);
588
589 /* DeInit */
590 SocPerfPlugin::GetInstance().Disable();
591 SUCCEED();
592 }
593
594 /**
595 * @tc.name: Plugin mgr test DumPluginInfoAppend_001
596 * @tc.desc: test the interface DumpluginInfoAppend
597 * @tc.type: FUNC
598 * @tc.require: issueI8VZVN
599 * @tc.author:z30053169
600 */
HWTEST_F(PluginMgrTest, DumPluginInfoAppend_001, TestSize.Level1)601 HWTEST_F(PluginMgrTest, DumPluginInfoAppend_001, TestSize.Level1)
602 {
603 string result;
604 PluginInfo info;
605 info.switchOn = false;
606 PluginMgr::GetInstance().DumpPluginInfoAppend(result, info);
607 EXPECT_FALSE(result.empty());
608 }
609
610 /**
611 * @tc.name: Plugin mgr test DispatchResource 003
612 * @tc.desc: test the interface DispatchResource
613 * @tc.type: FUNC
614 * @tc.require: issueI8VZVN
615 * @tc.author:z30053169
616 */
HWTEST_F(PluginMgrTest, DispatchResource003, TestSize.Level1)617 HWTEST_F(PluginMgrTest, DispatchResource003, TestSize.Level1)
618 {
619 nlohmann::json payload;
620 #ifndef RESOURCE_SCHEDULE_SERVICE_WITH_FFRT_ENABLE
621 PluginMgr::GetInstance().dispatcher_ = nullptr;
622 #endif
623 auto data = std::make_shared<ResData>(ResType::RES_TYPE_APP_ABILITY_START,
624 ResType::AppStartType::APP_COLD_START, payload);
625 PluginMgr::GetInstance().UnSubscribeResource("test", ResType::RES_TYPE_APP_ABILITY_START);
626 PluginMgr::GetInstance().DispatchResource(data);
627 SUCCEED();
628 }
629
630 /**
631 * @tc.name: Plugin mgr test DispatchResource 004
632 * @tc.desc: Verify if can DispatchResource
633 * @tc.type: FUNC
634 * @tc.require: issueI91HSR
635 * @tc.author:baiheng
636 */
HWTEST_F(PluginMgrTest, DispatchResource004, TestSize.Level1)637 HWTEST_F(PluginMgrTest, DispatchResource004, TestSize.Level1)
638 {
639 nlohmann::json payload;
640 auto dataNoExtType = std::make_shared<ResData>(ResType::RES_TYPE_KEY_PERF_SCENE,
641 ResType::KeyPerfStatus::ENTER_SCENE, payload);
642 PluginMgr::GetInstance().SubscribeResource("test", 10000);
643 SUCCEED();
644 PluginMgr::GetInstance().DispatchResource(dataNoExtType);
645 SUCCEED();
646 }
647
648 /**
649 * @tc.name: Plugin mgr test DispatchResource 005
650 * @tc.desc: Verify if can DispatchResource
651 * @tc.type: FUNC
652 * @tc.require: issueI91HSR
653 * @tc.author:baiheng
654 */
HWTEST_F(PluginMgrTest, DispatchResource005, TestSize.Level1)655 HWTEST_F(PluginMgrTest, DispatchResource005, TestSize.Level1)
656 {
657 nlohmann::json payload;
658 payload["extType"] = "10000";
659 auto dataWithExtType = std::make_shared<ResData>(ResType::RES_TYPE_KEY_PERF_SCENE,
660 ResType::KeyPerfStatus::ENTER_SCENE, payload);
661 PluginMgr::GetInstance().SubscribeResource("test", 10000);
662 SUCCEED();
663 PluginMgr::GetInstance().DispatchResource(dataWithExtType);
664 SUCCEED();
665 }
666
667 /**
668 * @tc.name: Plugin mgr test GetPluginLib 001
669 * @tc.desc: Verify if can get pluginlib with wrong env.
670 * @tc.type: FUNC
671 * @tc.require: issueI9C9JN
672 * @tc.author:xiaoshun
673 */
HWTEST_F(PluginMgrTest, GetPluginLib001, TestSize.Level0)674 HWTEST_F(PluginMgrTest, GetPluginLib001, TestSize.Level0)
675 {
676 std::shared_ptr<PluginLib> libInfoPtr = pluginMgr_->GetPluginLib("test");
677 EXPECT_TRUE(libInfoPtr == nullptr);
678 }
679
680 /**
681 * @tc.name: Plugin mgr test GetPluginLib 002
682 * @tc.desc: Verify if can get pluginlib
683 * @tc.type: FUNC
684 * @tc.require: issueI9C9JN
685 * @tc.author:xiaoshun
686 */
HWTEST_F(PluginMgrTest, GetPluginLib002, TestSize.Level0)687 HWTEST_F(PluginMgrTest, GetPluginLib002, TestSize.Level0)
688 {
689 std::shared_ptr<PluginLib> libInfoPtr = pluginMgr_->GetPluginLib("libapp_preload_plugin.z.so");
690 EXPECT_TRUE(pluginMgr_->pluginLibMap_.find("libapp_preload_plugin.z.so") == pluginMgr_->pluginLibMap_.end() ?
691 libInfoPtr == nullptr : libInfoPtr != nullptr);
692 }
693
694 /**
695 * @tc.name: Plugin mgr test InnerTimeUtil 001
696 * @tc.desc: InnerTimeUtil
697 * @tc.type: FUNC
698 * @tc.require: issueI9C9JN
699 * @tc.author:luolu
700 */
HWTEST_F(PluginMgrTest, InnerTimeUtil001, TestSize.Level0)701 HWTEST_F(PluginMgrTest, InnerTimeUtil001, TestSize.Level0)
702 {
703 PluginMgr::InnerTimeUtil innerTimeUtil("test1", "test2");
704 EXPECT_EQ(innerTimeUtil.functionName_, "test1");
705 EXPECT_EQ(innerTimeUtil.pluginName_, "test2");
706 }
707
708 /**
709 * @tc.name: Plugin mgr test LoadPlugin 001
710 * @tc.desc: LoadPlugin
711 * @tc.type: FUNC
712 * @tc.require: issueI9C9JN
713 * @tc.author:luolu
714 */
HWTEST_F(PluginMgrTest, LoadPlugin001, TestSize.Level0)715 HWTEST_F(PluginMgrTest, LoadPlugin001, TestSize.Level0)
716 {
717 PluginMgr::GetInstance().LoadPlugin();
718 EXPECT_EQ(PluginMgr::GetInstance().pluginLibMap_.size(), 0);
719 }
720
721 /**
722 * @tc.name: Plugin mgr test SubscribeSyncResource 002
723 * @tc.desc: SubscribeSyncResource
724 * @tc.type: FUNC
725 * @tc.require: issueI9C9JN
726 * @tc.author:luolu
727 */
HWTEST_F(PluginMgrTest, SubscribeSyncResource002, TestSize.Level0)728 HWTEST_F(PluginMgrTest, SubscribeSyncResource002, TestSize.Level0)
729 {
730 std::string pluginLib;
731 uint32_t resType = 0;
732 PluginMgr::GetInstance().SubscribeSyncResource(pluginLib, resType);
733 EXPECT_EQ(PluginMgr::GetInstance().resTypeLibSyncMap_.size(), 0);
734 PluginMgr::GetInstance().UnSubscribeSyncResource(pluginLib, resType);
735 }
736
737 /**
738 * @tc.name: Plugin mgr test GetConfigReaderStr 001
739 * @tc.desc: Verify if can get ConfigReaderStr.
740 * @tc.type: FUNC
741 */
HWTEST_F(PluginMgrTest, GetConfigReaderStr001, TestSize.Level0)742 HWTEST_F(PluginMgrTest, GetConfigReaderStr001, TestSize.Level0)
743 {
744 auto configStr = pluginMgr_->GetConfigReaderStr();
745 EXPECT_TRUE(!configStr.empty());
746 }
747
748 /**
749 * @tc.name: Plugin mgr test GetPluginSwitchStr 001
750 * @tc.desc: Verify if can get PluginSwitchStr.
751 * @tc.type: FUNC
752 */
HWTEST_F(PluginMgrTest, GetPluginSwitchStr001, TestSize.Level0)753 HWTEST_F(PluginMgrTest, GetPluginSwitchStr001, TestSize.Level0)
754 {
755 auto switchStr = pluginMgr_->GetPluginSwitchStr();
756 EXPECT_TRUE(!switchStr.empty());
757 }
758
759 /**
760 * @tc.name: Plugin mgr test ParseConfigReader 001
761 * @tc.desc: Verify if can Parse ConfigReader.
762 * @tc.type: FUNC
763 */
HWTEST_F(PluginMgrTest, ParseConfigReader001, TestSize.Level0)764 HWTEST_F(PluginMgrTest, ParseConfigReader001, TestSize.Level0)
765 {
766 pluginMgr_->Init();
767 auto configStrs = pluginMgr_->GetConfigReaderStr();
768 pluginMgr_->ParseConfigReader(configStrs);
769 SUCCEED();
770 }
771
772 /**
773 * @tc.name: Plugin mgr test ParsePluginSwitch 001
774 * @tc.desc: Verify if can Parse PluginSwitch.
775 * @tc.type: FUNC
776 */
HWTEST_F(PluginMgrTest, ParsePluginSwitchr001, TestSize.Level0)777 HWTEST_F(PluginMgrTest, ParsePluginSwitchr001, TestSize.Level0)
778 {
779 pluginMgr_->Init();
780 auto switchStrs = pluginMgr_->GetPluginSwitchStr();
781 pluginMgr_->ParsePluginSwitch(switchStrs);
782 SUCCEED();
783 }
784 } // namespace ResourceSchedule
785 } // namespace OHOS
786