• 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 #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