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 #include <gtest/gtest.h>
16
17 #include "bootstage.h"
18 #include "init_jobs_internal.h"
19 #include "init_log.h"
20 #include "init_param.h"
21 #include "init_utils.h"
22 #include "init_hashmap.h"
23 #include "loop_event.h"
24 #include "param_manager.h"
25 #include "param_stub.h"
26 #include "param_utils.h"
27 #include "securec.h"
28 #include "trigger_checker.h"
29 #include "trigger_manager.h"
30
31 using namespace testing::ext;
32 using namespace std;
33
34 static const int triggerBuffer = 512;
35 static uint32_t g_execCmdId = 0;
36 static int g_matchTrigger = 0;
37 static char g_matchTriggerName[triggerBuffer] = { 0 };
BootStateChange(int start,const char * content)38 static void BootStateChange(int start, const char *content)
39 {
40 UNUSED(content);
41 return;
42 }
43
TestCmdExec(const TriggerNode * trigger,const char * content,uint32_t size)44 static int TestCmdExec(const TriggerNode *trigger, const char *content, uint32_t size)
45 {
46 PARAM_CHECK(trigger != nullptr, return -1, "Invalid trigger");
47 PARAM_LOGI("DoTriggerExecute_ trigger type: %d %s", trigger->type, GetTriggerName(trigger));
48 PARAM_CHECK(trigger->type <= TRIGGER_UNKNOW, return -1, "Invalid trigger type %d", trigger->type);
49 CommandNode *cmd = GetNextCmdNode(reinterpret_cast<const JobNode *>(trigger), nullptr);
50 while (cmd != nullptr) {
51 g_execCmdId = cmd->cmdKeyIndex;
52 cmd = GetNextCmdNode(reinterpret_cast<const JobNode *>(trigger), cmd);
53 }
54 return 0;
55 }
56
TestTriggerExecute(TriggerNode * trigger,const char * content,uint32_t size)57 static int TestTriggerExecute(TriggerNode *trigger, const char *content, uint32_t size)
58 {
59 JobNode *node = reinterpret_cast<JobNode *>(trigger);
60 int ret = memcpy_s(g_matchTriggerName, (int)sizeof(g_matchTriggerName) - 1, node->name, strlen(node->name));
61 EXPECT_EQ(ret, 0);
62 g_matchTriggerName[strlen(node->name)] = '\0';
63 g_matchTrigger++;
64 return 0;
65 }
66
Test_JobParseHook(JOB_PARSE_CTX * jobParseCtx)67 static void Test_JobParseHook(JOB_PARSE_CTX *jobParseCtx)
68 {
69 return;
70 }
71
72 class TriggerUnitTest : public ::testing::Test {
73 public:
TriggerUnitTest()74 TriggerUnitTest() {}
~TriggerUnitTest()75 virtual ~TriggerUnitTest() {}
76
SetUp()77 void SetUp()
78 {
79 SetTestPermissionResult(0);
80 }
TearDown()81 void TearDown() {}
TestBody()82 void TestBody() {}
83
ParseInitCfg(const char * configFile)84 int ParseInitCfg(const char *configFile)
85 {
86 char *fileBuf = ReadFileToBuf(configFile);
87 INIT_ERROR_CHECK(fileBuf != nullptr, return -1, "Failed to read file content %s", configFile);
88 cJSON *fileRoot = cJSON_Parse(fileBuf);
89 INIT_ERROR_CHECK(fileRoot != nullptr, return -1, "Failed to parse json file %s", configFile);
90 ParseTriggerConfig(fileRoot, nullptr, nullptr);
91 cJSON_Delete(fileRoot);
92 free(fileBuf);
93 fileBuf = nullptr;
94 return 0;
95 }
96
TestLoadTrigger()97 int TestLoadTrigger()
98 {
99 RegisterBootStateChange(BootStateChange);
100 InitAddJobParseHook(Test_JobParseHook);
101
102 int cmdKeyIndex = 0;
103 const char *matchCmd = GetMatchCmd("setparam aaaa aaaa", &cmdKeyIndex);
104 printf("cmd %d \n", matchCmd != nullptr);
105 EXPECT_NE(matchCmd, nullptr);
106
107 ReadConfig();
108 ParseInitCfg(STARTUP_INIT_UT_PATH "/trigger_test.cfg");
109 // trigger
110 PostTrigger(EVENT_TRIGGER_BOOT, "pre-init", strlen("pre-init"));
111 PostTrigger(EVENT_TRIGGER_BOOT, "init", strlen("init"));
112 PostTrigger(EVENT_TRIGGER_BOOT, "post-init", strlen("post-init"));
113 LE_DoAsyncEvent(LE_GetDefaultLoop(), GetTriggerWorkSpace()->eventHandle);
114 return 0;
115 }
116
GetTriggerHeader(int type)117 TriggerHeader *GetTriggerHeader(int type)
118 {
119 return &GetTriggerWorkSpace()->triggerHead[type];
120 }
121
AddTrigger(int type,const char * name,const char * condition,uint32_t size)122 JobNode *AddTrigger(int type, const char *name, const char *condition, uint32_t size)
123 {
124 return UpdateJobTrigger(GetTriggerWorkSpace(), type, condition, name);
125 }
126
TestAddTriggerForBoot()127 int TestAddTriggerForBoot()
128 {
129 JobNode *node = AddTrigger(TRIGGER_BOOT, "init-later", "", 0);
130 JobNode *trigger = GetTriggerByName(GetTriggerWorkSpace(), "init-later");
131 EXPECT_EQ(node, trigger);
132 if (trigger == nullptr) {
133 return -1;
134 }
135 EXPECT_EQ(strcmp(trigger->name, "init-later"), 0);
136
137 // add command
138 int cmdIndex = 0;
139 GetMatchCmd("reboot ", &cmdIndex);
140 int ret = AddCommand(trigger, cmdIndex, nullptr, nullptr);
141 EXPECT_EQ(ret, 0);
142 ret = AddCommand(trigger, cmdIndex, "update: aaaaaaa", nullptr);
143 EXPECT_EQ(ret, 0);
144 return 0;
145 }
146
TestAddTriggerForParm()147 int TestAddTriggerForParm()
148 {
149 const char *triggerName = "param:test_param.000";
150 int id = 0;
151 JobNode *node = AddTrigger(TRIGGER_PARAM, triggerName, "test_param.000=1", 0);
152 JobNode *trigger = GetTriggerByName(GetTriggerWorkSpace(), triggerName);
153 GetTriggerHeader(TRIGGER_PARAM)->compareData(reinterpret_cast<struct tagTriggerNode_ *>(trigger), &id);
154 EXPECT_EQ(trigger, node);
155 if (trigger == nullptr) {
156 return -1;
157 }
158 EXPECT_EQ(strcmp(trigger->name, triggerName), 0);
159
160 // add command
161 int cmdIndex = 0;
162 GetMatchCmd("reboot ", &cmdIndex);
163 int ret = AddCommand(trigger, cmdIndex, nullptr, nullptr);
164 EXPECT_EQ(ret, 0);
165 ret = AddCommand(trigger, cmdIndex, "update: aaaaaaa", nullptr);
166 EXPECT_EQ(ret, 0);
167 return 0;
168 }
169
TestParamEvent()170 int TestParamEvent()
171 {
172 PostParamTrigger(EVENT_TRIGGER_PARAM, "net.tcp.default_init_rwnd", "60");
173 const char *sysctrl = "ohos.startup.powerctrl=reboot, shutdown";
174 PostTrigger(EVENT_TRIGGER_PARAM, sysctrl, strlen(sysctrl));
175 PostParamTrigger(EVENT_TRIGGER_PARAM, "ohos.startup.powerctrl", "reboot, shutdown");
176
177 const char *startCmd = "ohos.ctl.start=hdc -t";
178 PostTrigger(EVENT_TRIGGER_PARAM, startCmd, strlen(startCmd));
179 PostParamTrigger(EVENT_TRIGGER_PARAM, "ohos.ctl.start", "hdc -t");
180
181 const char *stopCmd = "ohos.ctl.stop=hdc -t";
182 PostTrigger(EVENT_TRIGGER_PARAM, stopCmd, strlen(stopCmd));
183 PostParamTrigger(EVENT_TRIGGER_PARAM, "ohos.ctl.stop", "hdc -t");
184 return 0;
185 }
186
TestBootEvent(const char * boot)187 int TestBootEvent(const char *boot)
188 {
189 PostTrigger(EVENT_TRIGGER_BOOT, boot, strlen(boot));
190 return 0;
191 }
192
TestCheckParamTrigger1()193 int TestCheckParamTrigger1()
194 {
195 const char *triggerName = "param:test_param.111";
196 const char *param = "test_param.aaa.111.2222";
197 const char *value = "1";
198 char buffer[triggerBuffer];
199 int ret = sprintf_s(buffer, sizeof(buffer), "%s=%s", param, value);
200 EXPECT_GE(ret, 0);
201 JobNode *node = AddTrigger(TRIGGER_PARAM, triggerName, buffer, 0);
202 JobNode *trigger = GetTriggerByName(GetTriggerWorkSpace(), triggerName);
203 EXPECT_EQ(trigger, node);
204
205 g_matchTrigger = 0;
206 ret = sprintf_s(buffer, sizeof(buffer), "%s=%s", param, "2");
207 EXPECT_GE(ret, 0);
208 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_PARAM, buffer, strlen(buffer), TestTriggerExecute);
209 EXPECT_EQ(0, g_matchTrigger);
210
211 SystemWriteParam(param, value);
212 g_matchTrigger = 0;
213 ret = sprintf_s(buffer, sizeof(buffer), "%s=%s", param, value);
214 EXPECT_GE(ret, 0);
215 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_PARAM, buffer, strlen(buffer), TestTriggerExecute);
216 EXPECT_EQ(1, g_matchTrigger);
217 EXPECT_EQ(0, strcmp(triggerName, g_matchTriggerName));
218
219 // check for bug
220 g_matchTrigger = 0;
221 ret = sprintf_s(buffer, sizeof(buffer), "%s=%s", "2222", value);
222 EXPECT_GE(ret, 0);
223 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_PARAM, buffer, strlen(buffer), TestTriggerExecute);
224 EXPECT_EQ(0, g_matchTrigger);
225
226 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_PARAM_WATCH, buffer, strlen(buffer), TestTriggerExecute);
227 return 0;
228 }
229
TestCheckParamTrigger2()230 int TestCheckParamTrigger2()
231 {
232 const char *triggerName = "param:test_param.222";
233 const char *param = "test_param.aaa.222.2222";
234 SystemWriteParam(param, "2");
235 char buffer[triggerBuffer];
236 int ret = sprintf_s(buffer, sizeof(buffer), "%s=*", param);
237 EXPECT_GE(ret, 0);
238 JobNode *node = AddTrigger(TRIGGER_PARAM, triggerName, buffer, 0);
239 JobNode *trigger = GetTriggerByName(GetTriggerWorkSpace(), triggerName);
240 EXPECT_EQ(trigger, node);
241
242 g_matchTrigger = 0;
243 ret = sprintf_s(buffer, sizeof(buffer), "%s=%s", param, "2");
244 EXPECT_GE(ret, 0);
245 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_PARAM, buffer, strlen(buffer), TestTriggerExecute);
246 EXPECT_EQ(1, g_matchTrigger);
247 EXPECT_EQ(0, strcmp(triggerName, g_matchTriggerName));
248
249 g_matchTrigger = 0;
250 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_PARAM, param, strlen(param), TestTriggerExecute);
251 EXPECT_EQ(1, g_matchTrigger);
252 EXPECT_EQ(0, strcmp(triggerName, g_matchTriggerName));
253 return 0;
254 }
255
TestCheckParamTrigger3()256 int TestCheckParamTrigger3()
257 {
258 const char *triggerName = "param:test_param.333";
259 const char *param1 = "test_param.aaa.333.2222=1";
260 const char *param2 = "test_param.aaa.333.3333=2";
261 SystemWriteParam("test_param.aaa.333.2222", "1");
262 SystemWriteParam("test_param.aaa.333.3333", "2");
263 char buffer[triggerBuffer];
264 int ret = sprintf_s(buffer, sizeof(buffer), "%s || %s", param1, param2);
265 EXPECT_GE(ret, 0);
266 JobNode *node = AddTrigger(TRIGGER_PARAM, triggerName, buffer, 0);
267 JobNode *trigger = GetTriggerByName(GetTriggerWorkSpace(), triggerName);
268 EXPECT_EQ(trigger, node);
269
270 g_matchTrigger = 0;
271 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_PARAM, param1, strlen(param1), TestTriggerExecute);
272 EXPECT_EQ(1, g_matchTrigger);
273 EXPECT_EQ(0, strcmp(triggerName, g_matchTriggerName));
274
275 g_matchTrigger = 0;
276 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_PARAM, param2, strlen(param2), TestTriggerExecute);
277 EXPECT_EQ(1, g_matchTrigger);
278 EXPECT_EQ(0, strcmp(triggerName, g_matchTriggerName));
279 return 0;
280 }
281
TestCheckParamTrigger4()282 int TestCheckParamTrigger4()
283 {
284 const char *triggerName = "param:test_param.444";
285 const char *param1 = "test_param.aaa.444.2222";
286 const char *param2 = "test_param.aaa.444.3333";
287 char buffer[triggerBuffer];
288 int ret = sprintf_s(buffer, sizeof(buffer), "%s=%s && %s=%s", param1, "1", param2, "2");
289 EXPECT_GE(ret, 0);
290 JobNode *node = AddTrigger(TRIGGER_PARAM, triggerName, buffer, 0);
291 JobNode *trigger = GetTriggerByName(GetTriggerWorkSpace(), triggerName);
292 EXPECT_EQ(trigger, node);
293 DoJobNow(triggerName);
294 ClearTrigger(nullptr, 0);
295 g_matchTrigger = 0;
296 SystemWriteParam(param1, "1");
297 ret = sprintf_s(buffer, sizeof(buffer), "%s=%s", param1, "1");
298 EXPECT_GE(ret, 0);
299 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_PARAM, buffer, strlen(buffer), TestTriggerExecute);
300 EXPECT_EQ(0, g_matchTrigger);
301
302 SystemWriteParam(param2, "2");
303 g_matchTrigger = 0;
304 ret = sprintf_s(buffer, sizeof(buffer), "%s=%s", param2, "2");
305 EXPECT_GE(ret, 0);
306 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_PARAM, buffer, strlen(buffer), TestTriggerExecute);
307 EXPECT_EQ(1, g_matchTrigger);
308 EXPECT_EQ(0, strcmp(triggerName, g_matchTriggerName));
309 return 0;
310 }
311
312 // test for trigger aaaa:test_param.aaa 被加入unknown执行
TestCheckParamTrigger5()313 int TestCheckParamTrigger5()
314 {
315 const char *triggerName = "aaaa:test_param.aaa";
316 const char *param1 = "test_param.aaa.aaa.2222";
317 const char *param2 = "test_param.aaa.aaa.3333";
318 char buffer[triggerBuffer];
319 int ret = sprintf_s(buffer, sizeof(buffer), "aaaa && %s=%s && %s=%s", param1, "1", param2, "2");
320 EXPECT_GE(ret, 0);
321 JobNode *node = AddTrigger(TRIGGER_UNKNOW, triggerName, buffer, 0);
322 JobNode *trigger = GetTriggerByName(GetTriggerWorkSpace(), triggerName);
323 EXPECT_EQ(trigger, node);
324
325 g_matchTrigger = 0;
326 SystemWriteParam(param1, "1");
327 ret = sprintf_s(buffer, sizeof(buffer), "%s=%s", param1, "1");
328 EXPECT_GE(ret, 0);
329 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_PARAM, buffer, strlen(buffer), TestTriggerExecute);
330 EXPECT_EQ(0, g_matchTrigger);
331
332 SystemWriteParam(param2, "2");
333 g_matchTrigger = 0;
334 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_UNKNOW, "aaaa", strlen("aaaa"), TestTriggerExecute);
335 EXPECT_EQ(1, g_matchTrigger);
336 EXPECT_EQ(0, strcmp(triggerName, g_matchTriggerName));
337 return 0;
338 }
339
TestComputeCondition(const char * condition)340 int TestComputeCondition(const char *condition)
341 {
342 u_int32_t size = strlen(condition) + CONDITION_EXTEND_LEN;
343 char *prefix = reinterpret_cast<char *>(malloc(size));
344 if (prefix == nullptr) {
345 printf("prefix is null.\n");
346 return -1;
347 }
348 ConvertInfixToPrefix(condition, prefix, size);
349 printf("prefix %s \n", prefix);
350 free(prefix);
351 return 0;
352 }
353
354 // 普通的属性trigger
TestExecuteParamTrigger1()355 int TestExecuteParamTrigger1()
356 {
357 const char *triggerName = "aaaa:test_param.eee";
358 const char *param = "test_param.eee.aaa.1111";
359 const char *value = "eee";
360 char buffer[triggerBuffer];
361 int ret = sprintf_s(buffer, sizeof(buffer), "%s=%s", param, value);
362 EXPECT_GE(ret, 0);
363 JobNode *node = AddTrigger(TRIGGER_PARAM, triggerName, buffer, 0);
364 JobNode *trigger = GetTriggerByName(GetTriggerWorkSpace(), triggerName);
365 EXPECT_EQ(trigger, node);
366
367 const uint32_t cmdIndex = 100;
368 ret = AddCommand(trigger, cmdIndex, value, nullptr);
369 EXPECT_EQ(ret, 0);
370 // 修改命令为测试执行
371 RegisterTriggerExec(TRIGGER_PARAM, TestCmdExec);
372 SystemWriteParam(param, value);
373 LE_DoAsyncEvent(LE_GetDefaultLoop(), GetTriggerWorkSpace()->eventHandle);
374 EXPECT_EQ(g_execCmdId, cmdIndex);
375 return 0;
376 }
377
TestExecuteParamTrigger2()378 int TestExecuteParamTrigger2()
379 {
380 const char *triggerName = "param:test_param.dddd";
381 const char *param = "test_param.dddd.aaa.2222";
382 const char *value = "2222";
383 char buffer[triggerBuffer];
384 int ret = sprintf_s(buffer, sizeof(buffer), "%s=%s", param, value);
385 EXPECT_GE(ret, 0);
386 JobNode *node = AddTrigger(TRIGGER_PARAM, triggerName, buffer, 0);
387 JobNode *trigger = GetTriggerByName(GetTriggerWorkSpace(), triggerName);
388 EXPECT_EQ(trigger, node);
389 const uint32_t cmdIndex = 102;
390 ret = AddCommand(trigger, cmdIndex, value, nullptr);
391 EXPECT_EQ(ret, 0);
392 RegisterTriggerExec(TRIGGER_PARAM, TestCmdExec);
393 SystemWriteParam(param, value);
394 LE_DoAsyncEvent(LE_GetDefaultLoop(), GetTriggerWorkSpace()->eventHandle);
395 EXPECT_EQ(g_execCmdId, cmdIndex);
396 return 0;
397 }
398
399 // 测试执行后立刻删除
TestExecuteParamTrigger3()400 int TestExecuteParamTrigger3()
401 {
402 const char *triggerName = "param:test_param.3333";
403 const char *param = "test_param.dddd.aaa.3333";
404 const char *value = "3333";
405 char buffer[triggerBuffer];
406 int ret = sprintf_s(buffer, sizeof(buffer), "%s=%s", param, value);
407 EXPECT_GE(ret, 0);
408 JobNode *node = AddTrigger(TRIGGER_PARAM, triggerName, buffer, 0);
409 JobNode *trigger = GetTriggerByName(GetTriggerWorkSpace(), triggerName);
410 EXPECT_EQ(trigger, node);
411 if (trigger == nullptr) {
412 return -1;
413 }
414 const uint32_t cmdIndex = 103;
415 ret = AddCommand(trigger, cmdIndex, value, nullptr);
416 EXPECT_EQ(ret, 0);
417 TRIGGER_SET_FLAG(trigger, TRIGGER_FLAGS_ONCE);
418 SystemWriteParam(param, value);
419
420 RegisterTriggerExec(TRIGGER_PARAM, TestCmdExec);
421 LE_DoAsyncEvent(LE_GetDefaultLoop(), GetTriggerWorkSpace()->eventHandle);
422 EXPECT_EQ(g_execCmdId, cmdIndex);
423 trigger = GetTriggerByName(GetTriggerWorkSpace(), triggerName);
424 if (trigger != nullptr) {
425 EXPECT_EQ(1, 0);
426 }
427 return 0;
428 }
429
430 // 测试删除队列中的trigger
TestExecuteParamTrigger4()431 int TestExecuteParamTrigger4()
432 {
433 const char *triggerName = "param:test_param.4444";
434 const char *param = "test_param.dddd.aaa.4444";
435 const char *value = "4444";
436 char buffer[triggerBuffer];
437 int ret = sprintf_s(buffer, sizeof(buffer), "%s=%s", param, value);
438 EXPECT_GE(ret, 0);
439 JobNode *node = AddTrigger(TRIGGER_PARAM, triggerName, buffer, 0);
440 JobNode *trigger = GetTriggerByName(GetTriggerWorkSpace(), triggerName);
441 EXPECT_EQ(trigger, node);
442 if (trigger == nullptr) {
443 return -1;
444 }
445 const uint32_t cmdIndex = 105;
446 ret = AddCommand(trigger, cmdIndex, value, nullptr);
447 EXPECT_EQ(ret, 0);
448 TRIGGER_SET_FLAG(trigger, TRIGGER_FLAGS_ONCE);
449 SystemWriteParam(param, value);
450
451 RegisterTriggerExec(TRIGGER_PARAM, TestCmdExec);
452 FreeTrigger(GetTriggerWorkSpace(), reinterpret_cast<TriggerNode *>(trigger));
453 LE_DoAsyncEvent(LE_GetDefaultLoop(), GetTriggerWorkSpace()->eventHandle);
454 EXPECT_NE(g_execCmdId, cmdIndex);
455 trigger = GetTriggerByName(GetTriggerWorkSpace(), triggerName);
456 if (trigger != nullptr) {
457 EXPECT_EQ(1, 0);
458 }
459 return 0;
460 }
461
462 // 测试执行后检查子trigger执行
TestExecuteParamTrigger5()463 int TestExecuteParamTrigger5()
464 {
465 const char *boot = "boot2";
466 const char *triggerName = "boot2:test_param.5555";
467 const char *param = "test_param.dddd.aaa.5555";
468 const char *value = "5555";
469 JobNode *trigger = AddTrigger(TRIGGER_BOOT, boot, nullptr, 0);
470 const int testCmdIndex = 1105;
471 int ret = AddCommand(trigger, testCmdIndex, value, nullptr);
472 EXPECT_EQ(ret, 0);
473 if (trigger == nullptr) {
474 return -1;
475 }
476 TRIGGER_SET_FLAG(trigger, TRIGGER_FLAGS_SUBTRIGGER);
477
478 char buffer[triggerBuffer];
479 ret = sprintf_s(buffer, sizeof(buffer), "boot2 && %s=%s", param, value);
480 EXPECT_GE(ret, 0);
481 trigger = AddTrigger(TRIGGER_UNKNOW, triggerName, buffer, 0);
482 const int testCmdIndex2 = 105;
483 ret = AddCommand(trigger, testCmdIndex2, value, nullptr);
484
485 RegisterTriggerExec(TRIGGER_UNKNOW, TestCmdExec);
486 SystemWriteParam(param, value);
487
488 TestBootEvent(boot);
489 LE_DoAsyncEvent(LE_GetDefaultLoop(), GetTriggerWorkSpace()->eventHandle);
490 EXPECT_EQ(g_execCmdId, (uint32_t)testCmdIndex2);
491 return 0;
492 }
493
TestDumpTrigger()494 int TestDumpTrigger()
495 {
496 (void)AddCompleteJob("param:ohos.servicectrl.display", "ohos.servicectrl.display=*", "display system");
497 DoTriggerExec("param:ohos.servicectrl.display");
498 return 0;
499 }
500 };
501
502 HWTEST_F(TriggerUnitTest, Init_TestLoadTrigger_001, TestSize.Level0)
503 {
504 TriggerUnitTest test;
505 int ret = test.TestLoadTrigger();
506 EXPECT_EQ(ret, 0);
507 }
508
509 HWTEST_F(TriggerUnitTest, Init_TestBootEvent_001, TestSize.Level0)
510 {
511 TriggerUnitTest test;
512 int ret = test.TestBootEvent("pre-init");
513 EXPECT_EQ(ret, 0);
514 ret = test.TestBootEvent("init");
515 EXPECT_EQ(ret, 0);
516 ret = test.TestBootEvent("post-init");
517 EXPECT_EQ(ret, 0);
518 ret = test.TestBootEvent("early-init");
519 EXPECT_EQ(ret, 0);
520 }
521
522 HWTEST_F(TriggerUnitTest, Init_TestAddTriggerForBoot_001, TestSize.Level0)
523 {
524 TriggerUnitTest test;
525 int ret = test.TestAddTriggerForBoot();
526 EXPECT_EQ(ret, 0);
527 }
528
529 HWTEST_F(TriggerUnitTest, Init_TestAddTriggerForParm_001, TestSize.Level0)
530 {
531 TriggerUnitTest test;
532 int ret = test.TestAddTriggerForParm();
533 EXPECT_EQ(ret, 0);
534 }
535
536 HWTEST_F(TriggerUnitTest, Init_TestCheckParamTrigger_001, TestSize.Level0)
537 {
538 TriggerUnitTest test;
539 int ret = test.TestCheckParamTrigger1();
540 EXPECT_EQ(ret, 0);
541 }
542
543 HWTEST_F(TriggerUnitTest, Init_TestCheckParamTrigger_002, TestSize.Level0)
544 {
545 TriggerUnitTest test;
546 int ret = test.TestCheckParamTrigger2();
547 EXPECT_EQ(ret, 0);
548 }
549
550 HWTEST_F(TriggerUnitTest, Init_TestCheckParamTrigger_003, TestSize.Level0)
551 {
552 TriggerUnitTest test;
553 int ret = test.TestCheckParamTrigger3();
554 EXPECT_EQ(ret, 0);
555 }
556
557 HWTEST_F(TriggerUnitTest, Init_TestCheckParamTrigger_004, TestSize.Level0)
558 {
559 TriggerUnitTest test;
560 int ret = test.TestCheckParamTrigger4();
561 EXPECT_EQ(ret, 0);
562 }
563
564 HWTEST_F(TriggerUnitTest, Init_TestCheckParamTrigger_005, TestSize.Level0)
565 {
566 TriggerUnitTest test;
567 int ret = test.TestCheckParamTrigger5();
568 EXPECT_EQ(ret, 0);
569 }
570
571 HWTEST_F(TriggerUnitTest, Init_TestParamEvent_001, TestSize.Level0)
572 {
573 TriggerUnitTest test;
574 int ret = test.TestParamEvent();
575 EXPECT_EQ(ret, 0);
576 }
577
578 HWTEST_F(TriggerUnitTest, Init_TestComputerCondition_001, TestSize.Level0)
579 {
580 TriggerUnitTest test;
581 int ret = test.TestComputeCondition("aaa=111||aaa=222||aaa=333");
582 EXPECT_EQ(ret, 0);
583 ret = test.TestComputeCondition("aaa=111||aaa=222&&aaa=333");
584 EXPECT_EQ(ret, 0);
585 ret = test.TestComputeCondition("(aaa=111||aaa=222)&&aaa=333");
586 EXPECT_EQ(ret, 0);
587 ret = test.TestComputeCondition("aaa=111||(aaa=222&&aaa=333)");
588 EXPECT_EQ(ret, 0);
589 }
590
591 HWTEST_F(TriggerUnitTest, Init_TestExecuteParamTrigger_001, TestSize.Level0)
592 {
593 TriggerUnitTest test;
594 int ret = test.TestExecuteParamTrigger1();
595 EXPECT_EQ(ret, 0);
596 }
597
598 HWTEST_F(TriggerUnitTest, Init_TestExecuteParamTrigger_002, TestSize.Level0)
599 {
600 TriggerUnitTest test;
601 int ret = test.TestExecuteParamTrigger2();
602 EXPECT_EQ(ret, 0);
603 }
604
605 HWTEST_F(TriggerUnitTest, Init_TestExecuteParamTrigger_003, TestSize.Level0)
606 {
607 TriggerUnitTest test;
608 int ret = test.TestExecuteParamTrigger3();
609 EXPECT_EQ(ret, 0);
610 }
611
612 HWTEST_F(TriggerUnitTest, Init_TestExecuteParamTrigger_004, TestSize.Level0)
613 {
614 TriggerUnitTest test;
615 int ret = test.TestExecuteParamTrigger4();
616 EXPECT_EQ(ret, 0);
617 }
618
619 HWTEST_F(TriggerUnitTest, Init_TestExecuteParamTrigger_005, TestSize.Level0)
620 {
621 TriggerUnitTest test;
622 int ret = test.TestExecuteParamTrigger5();
623 EXPECT_EQ(ret, 0);
624 }
625
626 HWTEST_F(TriggerUnitTest, Init_TestExecuteParamTrigger_006, TestSize.Level0)
627 {
628 TriggerUnitTest test;
629 int ret = test.TestDumpTrigger();
630 EXPECT_EQ(ret, 0);
631 }
632