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 <memory>
16
17 #include "init_param.h"
18 #include "init_unittest.h"
19 #include "param_stub.h"
20 #include "trigger_manager.h"
21
22 using namespace testing::ext;
23 using namespace std;
CheckServerParamValue(const char * name,const char * expectValue)24 static int CheckServerParamValue(const char *name, const char *expectValue)
25 {
26 char tmp[PARAM_BUFFER_SIZE] = { 0 };
27 u_int32_t len = sizeof(tmp);
28 SystemReadParam(name, tmp, &len);
29 printf("CheckParamValue name %s value: \'%s\' expectValue:\'%s\' \n", name, tmp, expectValue);
30 EXPECT_NE((int)strlen(tmp), 0);
31 if (expectValue != nullptr) {
32 EXPECT_EQ(strcmp(tmp, expectValue), 0);
33 }
34 return 0;
35 }
36
37 extern "C" {
38 extern void TimerCallbackForSave(ParamTaskPtr timer, void *context);
39 }
40
41 static ParamTaskPtr g_worker = nullptr;
42 class ParamUnitTest : public ::testing::Test {
43 public:
ParamUnitTest()44 ParamUnitTest() {}
~ParamUnitTest()45 virtual ~ParamUnitTest() {}
46
SetUp()47 void SetUp() {}
TearDown()48 void TearDown() {}
TestBody()49 void TestBody() {}
50
TestSetParams(const char * params[][1+1],int num)51 int TestSetParams(const char *params[][1 + 1], int num)
52 {
53 for (int i = 0; i < num; i++) {
54 SystemWriteParam(params[i][0], params[i][1]);
55 }
56
57 // check
58 for (int i = 0; i < num; i++) {
59 CheckServerParamValue(params[i][0], params[i][1]);
60 }
61
62 for (int i = num - 1; i >= 0; i--) {
63 CheckServerParamValue(params[i][0], params[i][1]);
64 }
65 return 0;
66 }
67
TestAddSecurityLabel1()68 int TestAddSecurityLabel1()
69 {
70 GetParamWorkSpace()->securityLabel->cred.gid = 9999; // 9999 test gid
71 const char *name = "label1.test.aaa.bbb.ccc.dddd.eee";
72 const char *value = "2001";
73 uint32_t labelIndex = 0;
74 SystemWriteParam(name, value);
75 // 获取到跟属性
76 ParamTrieNode *paramNode = FindTrieNode(&GetParamWorkSpace()->paramSpace, name, strlen(name), &labelIndex);
77 ParamSecruityNode *node = (ParamSecruityNode *)GetTrieNode(&GetParamWorkSpace()->paramSpace, labelIndex);
78 if (paramNode == nullptr || node == nullptr) {
79 EXPECT_EQ(1, 0);
80 return 0;
81 }
82 EXPECT_EQ(node->gid, getegid());
83 return 0;
84 }
85
86 // 添加一个label,最长匹配到这个节点
TestAddSecurityLabel2()87 int TestAddSecurityLabel2()
88 {
89 GetParamWorkSpace()->securityLabel->cred.gid = 9999; // 9999 test gid
90 const char *name = "label2.test.aaa.bbb.ccc.dddd.eee";
91 const char *value = "2001";
92 ParamAuditData auditData = {};
93 auditData.name = "label2.test.aaa";
94 auditData.label = "label2.test.aaa";
95 auditData.dacData.gid = 202; // 202 test dac gid
96 auditData.dacData.uid = geteuid();
97 auditData.dacData.mode = 0666; // 0666 test mode
98 SystemWriteParam(name, value);
99 uint32_t labelIndex = 0;
100 AddSecurityLabel(&auditData, GetParamWorkSpace());
101 ParamTrieNode *paramNode = FindTrieNode(&GetParamWorkSpace()->paramSpace, name, strlen(name), &labelIndex);
102 ParamSecruityNode *node = (ParamSecruityNode *)GetTrieNode(&GetParamWorkSpace()->paramSpace, labelIndex);
103 if (paramNode == nullptr || node == nullptr) {
104 EXPECT_EQ(1, 0);
105 return 0;
106 }
107 EXPECT_EQ(node->gid, auditData.dacData.gid);
108 return 0;
109 }
110
111 // 添加一个label,最长匹配到最后一个相同节点
TestAddSecurityLabel3()112 int TestAddSecurityLabel3()
113 {
114 GetParamWorkSpace()->securityLabel->cred.gid = 9999; // 9999 test gid
115 const char *name = "label3.test.aaa.bbb.ccc.dddd.eee";
116 const char *value = "2001";
117 ParamAuditData auditData = {};
118 auditData.name = "label3.test.aaa";
119 auditData.label = "label3.test.aaa";
120 auditData.dacData.gid = 203; // 203 test gid
121 auditData.dacData.uid = geteuid();
122 auditData.dacData.mode = 0666; // 0666 test mode
123 SystemWriteParam(name, value);
124 AddSecurityLabel(&auditData, GetParamWorkSpace());
125
126 auditData.name = "label3.test.aaa.bbb.ccc.dddd.eee.dddd";
127 auditData.label = "label3.test.aaa.bbb.ccc.dddd.eee.dddd";
128 auditData.dacData.gid = 202; // 202 test dac gid
129 auditData.dacData.uid = geteuid();
130 auditData.dacData.mode = 0666; // 0666 test mode
131 SystemWriteParam(name, value);
132 AddSecurityLabel(&auditData, GetParamWorkSpace());
133
134 uint32_t labelIndex = 0;
135 ParamTrieNode *paramNode = FindTrieNode(&GetParamWorkSpace()->paramSpace, name, strlen(name), &labelIndex);
136 ParamSecruityNode *node = (ParamSecruityNode *)GetTrieNode(&GetParamWorkSpace()->paramSpace, labelIndex);
137 if (paramNode == nullptr || node == nullptr) {
138 EXPECT_EQ(1, 0);
139 return 0;
140 }
141 EXPECT_EQ((int)node->gid, 203); // 203 test gid
142 return 0;
143 }
144
145 // 添加一个label,完全匹配
TestAddSecurityLabel4()146 int TestAddSecurityLabel4()
147 {
148 GetParamWorkSpace()->securityLabel->cred.gid = 9999; // 9999 test gid
149 const char *name = "label4.test.aaa.bbb.ccc.dddd.eee";
150 const char *value = "2001";
151 ParamAuditData auditData = {};
152 auditData.name = "label4.test.aaa.bbb.ccc.dddd.eee";
153 auditData.label = "label4.test.aaa.bbb.ccc.dddd.eee";
154 auditData.dacData.gid = 203; // 203 test gid
155 auditData.dacData.uid = geteuid();
156 auditData.dacData.mode = 0666; // 0666 test mode
157 SystemWriteParam(name, value);
158 uint32_t labelIndex = 0;
159 AddSecurityLabel(&auditData, GetParamWorkSpace());
160 ParamTrieNode *paramNode = FindTrieNode(&GetParamWorkSpace()->paramSpace, name, strlen(name), &labelIndex);
161 ParamSecruityNode *node = (ParamSecruityNode *)GetTrieNode(&GetParamWorkSpace()->paramSpace, labelIndex);
162 if (paramNode == nullptr || node == nullptr) {
163 EXPECT_EQ(1, 0);
164 return 0;
165 }
166 EXPECT_EQ(node->gid, auditData.dacData.gid);
167 return 0;
168 }
169
TestBufferValue(char * buffer,uint32_t len)170 void TestBufferValue(char *buffer, uint32_t len)
171 {
172 const int printBase = 10;
173 for (uint32_t index = 0; index <= len; index++) {
174 buffer[index] = '0' + index % printBase;
175 if (index != 0 && index % printBase == 0) {
176 buffer[index] = '.';
177 }
178 }
179 buffer[len] = '\0';
180 }
181
TestNameIsValid()182 int TestNameIsValid()
183 {
184 char buffer[PARAM_BUFFER_SIZE];
185 // set name length = 127
186 TestBufferValue(buffer, PARAM_NAME_LEN_MAX - 1);
187 int ret = SystemWriteParam(buffer, "1111");
188 EXPECT_EQ(ret, 0);
189 TestBufferValue(buffer, PARAM_NAME_LEN_MAX);
190 ret = SystemWriteParam(buffer, "1111");
191 EXPECT_NE(ret, 0);
192 TestBufferValue(buffer, PARAM_NAME_LEN_MAX + 1);
193 ret = SystemWriteParam(buffer, "1111");
194 EXPECT_NE(ret, 0);
195
196 // 保存一个只读的属性,大于最大值
197 TestBufferValue(buffer, PARAM_VALUE_LEN_MAX - 1);
198 ret = SystemWriteParam("const.test_readonly.dddddddddddddddddd.fffffffffffffffffff", buffer);
199 EXPECT_EQ(ret, 0);
200
201 TestBufferValue(buffer, PARAM_VALUE_LEN_MAX + 1);
202 ret = SystemWriteParam("const.test_readonly.aaaaaaaaaaaaaaaaaa.fffffffffffffffffff", buffer);
203 EXPECT_EQ(ret, 0);
204
205 // 更新只读项目
206 TestBufferValue(buffer, PARAM_VALUE_LEN_MAX - 1);
207 ret = SystemWriteParam("const.test_readonly.dddddddddddddddddd.fffffffffffffffffff", buffer);
208 EXPECT_NE(ret, 0);
209
210 // 写普通属性
211 TestBufferValue(buffer, PARAM_VALUE_LEN_MAX - 1);
212 ret = SystemWriteParam("test.bigvalue.dddddddddddddddddd.fffffffffffffffffff", buffer);
213 EXPECT_EQ(ret, 0);
214 TestBufferValue(buffer, PARAM_VALUE_LEN_MAX + 1);
215 ret = SystemWriteParam("test.bigvalue.dddddddddddddddddd.fffffffffffffffffff", buffer);
216 EXPECT_NE(ret, 0);
217
218 // invalid name
219 TestBufferValue(buffer, PARAM_VALUE_LEN_MAX - 1);
220 ret = SystemWriteParam("test.invalidname..fffffffffffffffffff", buffer);
221 EXPECT_NE(ret, 0);
222 ret = SystemWriteParam("test.invalidname.%fffffffffffffffffff", buffer);
223 EXPECT_NE(ret, 0);
224 ret = SystemWriteParam("test.invalidname.$fffffffffffffffffff", buffer);
225 EXPECT_NE(ret, 0);
226 return 0;
227 }
228
TestParamTraversal()229 int TestParamTraversal()
230 {
231 char value[PARAM_BUFFER_SIZE + PARAM_BUFFER_SIZE] = { 0 };
232 TraversalParam(GetParamWorkSpace(), "",
233 [](ParamHandle handle, void *cookie) {
234 ReadParamName(GetParamWorkSpace(), handle, (char *)cookie, PARAM_BUFFER_SIZE);
235 u_int32_t len = PARAM_BUFFER_SIZE;
236 ReadParamValue(GetParamWorkSpace(), handle, ((char *)cookie) + PARAM_BUFFER_SIZE, &len);
237 printf("$$$$$$$$Param %s=%s \n", (char *)cookie, ((char *)cookie) + PARAM_BUFFER_SIZE);
238 },
239 (void *)value);
240 return 0;
241 }
242
TestUpdateParam(const char * name,const char * value)243 int TestUpdateParam(const char *name, const char *value)
244 {
245 SystemWriteParam(name, value);
246 SystemWriteParam(name, value);
247 SystemWriteParam(name, value);
248 SystemWriteParam(name, value);
249 CheckServerParamValue(name, value);
250 return 0;
251 }
252
TestPersistParam()253 int TestPersistParam()
254 {
255 LoadPersistParams();
256 SystemWriteParam("persist.111.ffff.bbbb.cccc.dddd.eeee", "1101");
257 SystemWriteParam("persist.111.aaaa.bbbb.cccc.dddd.eeee", "1102");
258 SystemWriteParam("persist.111.bbbb.cccc.dddd.eeee", "1103");
259 CheckServerParamValue("persist.111.bbbb.cccc.dddd.eeee", "1103");
260 SystemWriteParam("persist.111.cccc.bbbb.cccc.dddd.eeee", "1104");
261 SystemWriteParam("persist.111.eeee.bbbb.cccc.dddd.eeee", "1105");
262 CheckServerParamValue("persist.111.ffff.bbbb.cccc.dddd.eeee", "1101");
263 SystemWriteParam("persist.111.ffff.bbbb.cccc.dddd.eeee", "1106");
264 CheckServerParamValue("persist.111.ffff.bbbb.cccc.dddd.eeee", "1106");
265 sleep(1);
266 SystemWriteParam("persist.111.bbbb.cccc.dddd.1107", "1107");
267 SystemWriteParam("persist.111.bbbb.cccc.dddd.1108", "1108");
268 SystemWriteParam("persist.111.bbbb.cccc.dddd.1109", "1108");
269 sleep(1);
270 SystemWriteParam("persist.111.bbbb.cccc.dddd.1110", "1108");
271 SystemWriteParam("persist.111.bbbb.cccc.dddd.1111", "1108");
272 if (GetParamWorkSpace() != nullptr) {
273 TimerCallbackForSave(nullptr, &(GetParamWorkSpace()->paramSpace));
274 }
275 LoadPersistParams();
276 return 0;
277 }
278
FillLabelContent(ParamSecurityOps * paramSecurityOps,ParamMessage * request,uint32_t * start,uint32_t length)279 int FillLabelContent(ParamSecurityOps *paramSecurityOps, ParamMessage *request, uint32_t *start, uint32_t length)
280 {
281 if (length == 0) {
282 return 0;
283 }
284 uint32_t bufferSize = request->msgSize - sizeof(ParamMessage);
285 uint32_t offset = *start;
286 PARAM_CHECK((offset + sizeof(ParamMsgContent) + length) <= bufferSize,
287 return -1, "Invalid msgSize %u offset %u length %u", request->msgSize, offset, bufferSize);
288 ParamMsgContent *content = (ParamMsgContent *)(request->data + offset);
289 content->type = PARAM_LABEL;
290 content->contentSize = 0;
291 if (length != 0 && paramSecurityOps->securityEncodeLabel != nullptr) {
292 int ret = paramSecurityOps->securityEncodeLabel(
293 GetParamWorkSpace()->securityLabel, content->content, &length);
294 PARAM_CHECK(ret == 0, return -1, "Failed to get label length");
295 content->contentSize = length;
296 }
297 offset += sizeof(ParamMsgContent) + PARAM_ALIGN(content->contentSize);
298 *start = offset;
299 return 0;
300 }
301
CreateAndGetStreamTask()302 ParamTaskPtr CreateAndGetStreamTask()
303 {
304 ParamStreamInfo info = {};
305 info.flags = PARAM_TEST_FLAGS;
306 info.server = NULL;
307 info.close = NULL;
308 info.recvMessage = ProcessMessage;
309 info.incomingConnect = NULL;
310 ParamTaskPtr client = NULL;
311 int ret = ParamStreamCreate(&client, GetParamWorkSpace()->serverTask, &info, sizeof(ParamWatcher));
312 PARAM_CHECK(ret == 0, return NULL, "Failed to create client");
313
314 ParamWatcher *watcher = (ParamWatcher *)ParamGetTaskUserData(client);
315 PARAM_CHECK(watcher != NULL, return NULL, "Failed to get watcher");
316 ListInit(&watcher->triggerHead);
317 watcher->stream = client;
318 GetParamWorkSpace()->watcherTask = client;
319 return GetParamWorkSpace()->watcherTask;
320 }
321
TestServiceProcessMessage(const char * name,const char * value,int userLabel)322 int TestServiceProcessMessage(const char *name, const char *value, int userLabel)
323 {
324 if (g_worker == nullptr) {
325 g_worker = CreateAndGetStreamTask();
326 }
327 if (g_worker == nullptr) {
328 return 0;
329 }
330 uint32_t labelLen = 0;
331 ParamSecurityOps *paramSecurityOps = &GetParamWorkSpace()->paramSecurityOps;
332 if (userLabel) {
333 paramSecurityOps->securityEncodeLabel = TestEncodeSecurityLabel;
334 paramSecurityOps->securityDecodeLabel = TestDecodeSecurityLabel;
335 paramSecurityOps->securityFreeLabel = TestFreeLocalSecurityLabel;
336 paramSecurityOps->securityCheckParamPermission = TestCheckParamPermission;
337 }
338 uint32_t msgSize = sizeof(ParamMessage) + sizeof(ParamMsgContent) + PARAM_ALIGN(strlen(value) + 1);
339 if (paramSecurityOps->securityEncodeLabel != nullptr) {
340 int ret = paramSecurityOps->securityEncodeLabel(GetParamWorkSpace()->securityLabel, nullptr, &labelLen);
341 PARAM_CHECK(ret == 0, return -1, "Failed to get label length");
342 msgSize += sizeof(ParamMsgContent) + PARAM_ALIGN(labelLen);
343 }
344 ParamMessage *request = (ParamMessage *)CreateParamMessage(MSG_SET_PARAM, name, msgSize);
345 PARAM_CHECK(request != nullptr, return -1, "Failed to malloc for connect");
346 do {
347 request->type = MSG_SET_PARAM;
348 uint32_t offset = 0;
349 int ret = FillParamMsgContent(request, &offset, PARAM_VALUE, value, strlen(value));
350 PARAM_CHECK(ret == 0, break, "Failed to fill value");
351 ret = FillLabelContent(paramSecurityOps, request, &offset, labelLen);
352 PARAM_CHECK(ret == 0, break, "Failed to fill label");
353 ProcessMessage((const ParamTaskPtr)g_worker, (const ParamMessage *)request);
354 } while (0);
355 free(request);
356 CheckServerParamValue(name, value);
357 RegisterSecurityOps(paramSecurityOps, 1);
358 return 0;
359 }
360
AddWatch(int type,const char * name,const char * value)361 int AddWatch(int type, const char *name, const char *value)
362 {
363 if (g_worker == nullptr) {
364 g_worker = CreateAndGetStreamTask();
365 }
366 if (g_worker == nullptr) {
367 return 0;
368 }
369 uint32_t msgSize = sizeof(ParamMessage) + sizeof(ParamMsgContent) + PARAM_ALIGN(strlen(value) + 1);
370 ParamMessage *request = (ParamMessage *)(ParamMessage *)CreateParamMessage(type, name, msgSize);
371 PARAM_CHECK(request != nullptr, return -1, "Failed to malloc for connect");
372 do {
373 uint32_t offset = 0;
374 int ret = FillParamMsgContent(request, &offset, PARAM_VALUE, value, strlen(value));
375 PARAM_CHECK(ret == 0, break, "Failed to fill value");
376 ProcessMessage((const ParamTaskPtr)g_worker, (const ParamMessage *)request);
377 } while (0);
378 free(request);
379 return 0;
380 }
381
382 // 无匹配
TestAddParamWait1()383 int TestAddParamWait1()
384 {
385 const char *name = "wait.aaa.bbb.ccc.111";
386 const char *value = "wait1";
387 AddWatch(MSG_WAIT_PARAM, name, value);
388 SystemWriteParam(name, value);
389 return 0;
390 }
391
392 // 模糊匹配
TestAddParamWait2()393 int TestAddParamWait2()
394 {
395 const char *name = "wait.aaa.bbb.ccc.222";
396 const char *value = "wait2";
397 AddWatch(MSG_WAIT_PARAM, name, "*");
398 SystemWriteParam(name, value);
399 return 0;
400 }
401
402 // 属性存在
TestAddParamWait3()403 int TestAddParamWait3()
404 {
405 const char *name = "wait.aaa.bbb.ccc.333";
406 const char *value = "wait3";
407 SystemWriteParam(name, value);
408 AddWatch(MSG_WAIT_PARAM, name, value);
409 return 0;
410 }
411
TestAddParamWatch1()412 int TestAddParamWatch1()
413 {
414 const char *name = "watch.aaa.bbb.ccc.111";
415 const char *value = "watch1";
416 AddWatch(MSG_ADD_WATCHER, name, value);
417 std::string newName = name;
418 newName += ".test.test.test";
419 SystemWriteParam(newName.c_str(), value);
420 return 0;
421 }
422
TestAddParamWatch2()423 int TestAddParamWatch2()
424 {
425 const char *name = "watch.aaa.bbb.ccc.222";
426 const char *value = "watch2";
427 AddWatch(MSG_ADD_WATCHER, name, "*");
428 SystemWriteParam(name, value);
429 return 0;
430 }
431
TestAddParamWatch3()432 int TestAddParamWatch3()
433 {
434 const char *name = "watch.aaa.bbb.ccc.333";
435 const char *value = "watch3";
436 std::string newName = name;
437 newName += ".test.test.test";
438 SystemWriteParam(newName.c_str(), value);
439 AddWatch(MSG_ADD_WATCHER, name, value);
440 return 0;
441 }
442
TestCloseTriggerWatch()443 int TestCloseTriggerWatch()
444 {
445 ParamWatcher *watcher = (ParamWatcher *)ParamGetTaskUserData(g_worker);
446 ClearWatchTrigger(watcher, TRIGGER_PARAM_WAIT);
447 ParamTaskClose(g_worker);
448 g_worker = nullptr;
449 SystemWriteParam("init.svc.param_watcher", "stopped");
450 return 0;
451 }
452
TestDumpParamMemory()453 int TestDumpParamMemory()
454 {
455 DumpParametersAndTriggers();
456 return 0;
457 }
458
TestServiceCtrl(const char * serviceName,int mode)459 int TestServiceCtrl(const char *serviceName, int mode)
460 {
461 // service forbit
462 ParamAuditData auditData = {};
463 auditData.name = "ohos.servicectrl.";
464 auditData.label = "";
465 auditData.dacData.gid = 202; // 202 test dac gid
466 auditData.dacData.uid = 202; // 202 test dac uid
467 auditData.dacData.mode = mode;
468 AddSecurityLabel(&auditData, GetParamWorkSpace());
469 return SystemWriteParam("ohos.ctl.start", serviceName);
470 }
471
TestPowerCtrl(const char * reboot,int mode)472 int TestPowerCtrl(const char *reboot, int mode)
473 {
474 // service forbit
475 ParamAuditData auditData = {};
476 auditData.name = "ohos.servicectrl.";
477 auditData.label = "";
478 auditData.dacData.gid = 202; // 202 test dac gid
479 auditData.dacData.uid = 202; // 202 test dac uid
480 auditData.dacData.mode = mode;
481 AddSecurityLabel(&auditData, GetParamWorkSpace());
482 return SystemWriteParam("ohos.startup.powerctrl", reboot);
483 }
484 };
485
486 HWTEST_F(ParamUnitTest, TestPersistParam, TestSize.Level0)
487 {
488 ParamUnitTest test;
489 test.TestPersistParam();
490 }
491
492 HWTEST_F(ParamUnitTest, TestSetParam_1, TestSize.Level0)
493 {
494 ParamUnitTest test;
495 const char *params[][2] = { { "111.2222", "1" },
496 { "111.2222.3333", "2" },
497 { "111.2222.3333.4444", "3" },
498 { "111.2222.3333.4444.666", "4" },
499 { "111.2222.3333.4444.666.777", "5" } };
500 test.TestSetParams(params, 5);
501 }
502
503 HWTEST_F(ParamUnitTest, TestSetParam_2, TestSize.Level0)
504 {
505 ParamUnitTest test;
506 const char *params[][2] = { { "111.2222.xxxx.xxx.xxx", "1_1" },
507 { "111.2222.3333.xxx", "1_2" },
508 { "111.2222.xxxx.3333.4444", "1_3" },
509 { "111.2222.3333.xxxx.4444.666", "1_4" },
510 { "111.2222.3333.4444.666.xxxxx.777", "1_5" } };
511 test.TestSetParams(params, 5);
512
513 const char *ctrlParams[][2] = { { "ctl.start.111.2222.xxxx.xxx.xxx", "2_1" },
514 { "ctl.start.111.2222.3333.xxx", "2_2" },
515 { "ctl.start.111.2222.xxxx.3333.4444", "2_3" },
516 { "ctl.start.111.2222.3333.xxxx.4444.666", "2_4" },
517 { "ctl.start.111.2222.3333.4444.666.xxxxx.777", "2_5" } };
518 test.TestSetParams(ctrlParams, 5);
519
520 const char *sysParams[][2] = { { "ohos.startup.powerctrl.111.2222.xxxx.xxx.xxx", "3_1" },
521 { "ohos.startup.powerctrl.111.2222.3333.xxx", "3_2" },
522 { "ohos.startup.powerctrl.111.2222.xxxx.3333.4444", "3_3" },
523 { "ohos.startup.powerctrl.111.2222.3333.xxxx.4444.666", "3_4" },
524 { "ohos.startup.powerctrl.111.2222.3333.4444.666.xxxxx.777", "3_5" } };
525 test.TestSetParams(sysParams, 5);
526 }
527
528 HWTEST_F(ParamUnitTest, TestNameIsValid, TestSize.Level0)
529 {
530 ParamUnitTest test;
531 test.TestNameIsValid();
532 }
533
534 HWTEST_F(ParamUnitTest, TestAddSecurityLabel1, TestSize.Level0)
535 {
536 ParamUnitTest test;
537 test.TestAddSecurityLabel1();
538 }
539
540 HWTEST_F(ParamUnitTest, TestAddSecurityLabel2, TestSize.Level0)
541 {
542 ParamUnitTest test;
543 test.TestAddSecurityLabel2();
544 }
545
546 HWTEST_F(ParamUnitTest, TestAddSecurityLabel3, TestSize.Level0)
547 {
548 ParamUnitTest test;
549 test.TestAddSecurityLabel3();
550 }
551
552 HWTEST_F(ParamUnitTest, TestAddSecurityLabel4, TestSize.Level0)
553 {
554 ParamUnitTest test;
555 test.TestAddSecurityLabel4();
556 }
557
558 HWTEST_F(ParamUnitTest, TestUpdateParam, TestSize.Level0)
559 {
560 ParamUnitTest test;
561 test.TestUpdateParam("test.aaa.bbb.ccc.ddd", "100");
562 test.TestUpdateParam("test.aaa.bbb.ccc.ddd", "101");
563 test.TestUpdateParam("test.aaa.bbb.ccc.ddd", "102");
564 test.TestUpdateParam("test.aaa.bbb.ccc.ddd", "103");
565 test.TestUpdateParam("net.tcp.default_init_rwnd", "60");
566 }
567
568 HWTEST_F(ParamUnitTest, TestServiceProcessMessage, TestSize.Level0)
569 {
570 ParamUnitTest test;
571 test.TestServiceProcessMessage("wertt.qqqq.wwww.rrrr", "wwww.eeeee", 1);
572 test.TestServiceProcessMessage("wertt.2222.wwww.3333", "wwww.eeeee", 0);
573 }
574
575 HWTEST_F(ParamUnitTest, TestAddParamWait1, TestSize.Level0)
576 {
577 ParamUnitTest test;
578 test.TestAddParamWait1();
579 }
580
581 HWTEST_F(ParamUnitTest, TestAddParamWait2, TestSize.Level0)
582 {
583 ParamUnitTest test;
584 test.TestAddParamWait2();
585 }
586
587 HWTEST_F(ParamUnitTest, TestAddParamWait3, TestSize.Level0)
588 {
589 ParamUnitTest test;
590 test.TestAddParamWait3();
591 }
592
593 HWTEST_F(ParamUnitTest, TestAddParamWatch1, TestSize.Level0)
594 {
595 ParamUnitTest test;
596 test.TestAddParamWatch1();
597 }
598
599 HWTEST_F(ParamUnitTest, TestAddParamWatch2, TestSize.Level0)
600 {
601 ParamUnitTest test;
602 test.TestAddParamWatch2();
603 }
604
605 HWTEST_F(ParamUnitTest, TestAddParamWatch3, TestSize.Level0)
606 {
607 ParamUnitTest test;
608 test.TestAddParamWatch3();
609 }
610
611 HWTEST_F(ParamUnitTest, TestCloseTriggerWatch, TestSize.Level0)
612 {
613 ParamUnitTest test;
614 test.TestCloseTriggerWatch();
615 }
616
617 HWTEST_F(ParamUnitTest, TestParamTraversal, TestSize.Level0)
618 {
619 ParamUnitTest test;
620 test.TestParamTraversal();
621 }
622
623 HWTEST_F(ParamUnitTest, TestDumpParamMemory, TestSize.Level0)
624 {
625 ParamUnitTest test;
626 test.TestDumpParamMemory();
627 }
628
629 HWTEST_F(ParamUnitTest, TestServiceCtrl, TestSize.Level0)
630 {
631 ParamUnitTest test;
632 int ret = test.TestServiceCtrl("server1", 0770);
633 EXPECT_NE(ret, 0);
634 ret = test.TestServiceCtrl("server2", 0772);
635 EXPECT_EQ(ret, 0);
636 }
637
638 HWTEST_F(ParamUnitTest, TestPowerCtrl, TestSize.Level0)
639 {
640 ParamUnitTest test;
641 int ret = test.TestPowerCtrl("reboot,shutdown", 0770);
642 EXPECT_NE(ret, 0);
643 ret = test.TestPowerCtrl("reboot,shutdown", 0772);
644 EXPECT_EQ(ret, 0);
645 ret = test.TestPowerCtrl("reboot,updater", 0770);
646 EXPECT_NE(ret, 0);
647 ret = test.TestPowerCtrl("reboot,updater", 0772);
648 EXPECT_EQ(ret, 0);
649 ret = test.TestPowerCtrl("reboot,flash", 0770);
650 EXPECT_NE(ret, 0);
651 ret = test.TestPowerCtrl("reboot,flash", 0772);
652 EXPECT_EQ(ret, 0);
653 ret = test.TestPowerCtrl("reboot", 0770);
654 EXPECT_NE(ret, 0);
655 ret = test.TestPowerCtrl("reboot", 0772);
656 EXPECT_EQ(ret, 0);
657 }