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 "init_param.h" 18 #include "param_message.h" 19 #include "param_stub.h" 20 #include "param_init.h" 21 #include "trigger_manager.h" 22 #include "le_timer.h" 23 24 using namespace testing::ext; 25 using namespace std; 26 TestTriggerExecute(TriggerNode * trigger,const char * content,uint32_t size)27 static int TestTriggerExecute(TriggerNode *trigger, const char *content, uint32_t size) 28 { 29 return 0; 30 } 31 CheckServerParamValue(const char * name,const char * expectValue)32 static int CheckServerParamValue(const char *name, const char *expectValue) 33 { 34 char tmp[PARAM_BUFFER_SIZE] = {0}; 35 u_int32_t len = sizeof(tmp); 36 SystemReadParam(name, tmp, &len); 37 printf("CheckParamValue name %s value: \'%s\' expectValue:\'%s\' \n", name, tmp, expectValue); 38 EXPECT_NE((int)strlen(tmp), 0); 39 if (expectValue != nullptr) { 40 EXPECT_EQ(strcmp(tmp, expectValue), 0); 41 } 42 return 0; 43 } 44 45 namespace init_ut { 46 static ParamTaskPtr g_worker = nullptr; 47 class ParamServiceUnitTest : public ::testing::Test { 48 public: ParamServiceUnitTest()49 ParamServiceUnitTest() {} ~ParamServiceUnitTest()50 virtual ~ParamServiceUnitTest() {} 51 SetUpTestCase(void)52 static void SetUpTestCase(void) {} 53 SetUp()54 void SetUp() 55 { 56 if (GetParamSecurityLabel() != nullptr) { 57 GetParamSecurityLabel()->cred.uid = 1000; // 1000 test uid 58 GetParamSecurityLabel()->cred.gid = 1000; // 1000 test gid 59 } 60 } TearDown()61 void TearDown() {} TestBody()62 void TestBody() {} 63 TestSetParams(const char * params[][1+1],int num)64 int TestSetParams(const char *params[][1 + 1], int num) 65 { 66 for (int i = 0; i < num; i++) { 67 SystemWriteParam(params[i][0], params[i][1]); 68 } 69 70 // check 71 for (int i = 0; i < num; i++) { 72 CheckServerParamValue(params[i][0], params[i][1]); 73 } 74 75 for (int i = num - 1; i >= 0; i--) { 76 CheckServerParamValue(params[i][0], params[i][1]); 77 } 78 return 0; 79 } 80 TestAddSecurityLabel1()81 int TestAddSecurityLabel1() 82 { 83 GetParamSecurityLabel()->cred.gid = 9999; // 9999 test gid 84 const char *name = "label1.test.aaa.bbb.ccc.dddd.eee"; 85 const char *value = "2001"; 86 uint32_t labelIndex = 0; 87 SystemWriteParam(name, value); 88 // 获取到跟属性 89 WorkSpace *workspace = GetWorkSpace(WORKSPACE_INDEX_DAC); 90 (void)FindTrieNode(workspace, name, strlen(name), &labelIndex); 91 ParamSecurityNode *node = (ParamSecurityNode *)GetTrieNode(workspace, labelIndex); 92 if (node == nullptr) { 93 EXPECT_EQ(1, 0); 94 return 0; 95 } 96 EXPECT_EQ(node->gid, 0); 97 return 0; 98 } 99 100 // 添加一个label,最长匹配到这个节点 TestAddSecurityLabel2()101 int TestAddSecurityLabel2() 102 { 103 GetParamSecurityLabel()->cred.gid = 9999; // 9999 test gid 104 const char *name = "label2.test.aaa.bbb.ccc.dddd.eee"; 105 const char *value = "2001"; 106 ParamAuditData auditData = {}; 107 auditData.name = "label2.test.aaa"; 108 auditData.dacData.gid = 202; // 202 test dac gid 109 auditData.dacData.uid = geteuid(); 110 auditData.dacData.mode = 0666; // 0666 test mode 111 SystemWriteParam(name, value); 112 uint32_t labelIndex = 0; 113 AddSecurityLabel(&auditData); 114 WorkSpace *workspace = GetWorkSpace(WORKSPACE_INDEX_DAC); 115 (void)FindTrieNode(workspace, name, strlen(name), &labelIndex); 116 ParamSecurityNode *node = (ParamSecurityNode *)GetTrieNode(workspace, labelIndex); 117 if (node == nullptr) { 118 EXPECT_EQ(1, 0); 119 return 0; 120 } 121 EXPECT_EQ(node->gid, auditData.dacData.gid); 122 return 0; 123 } 124 125 // 添加一个label,最长匹配到最后一个相同节点 TestAddSecurityLabel3()126 int TestAddSecurityLabel3() 127 { 128 GetParamSecurityLabel()->cred.gid = 9999; // 9999 test gid 129 const char *name = "label3.test.aaa.bbb.ccc.dddd.eee"; 130 const char *value = "2001"; 131 ParamAuditData auditData = {}; 132 auditData.name = "label3.test.aaa"; 133 auditData.dacData.gid = 203; // 203 test gid 134 auditData.dacData.uid = geteuid(); 135 auditData.dacData.mode = 0666; // 0666 test mode 136 SystemWriteParam(name, value); 137 AddSecurityLabel(&auditData); 138 139 auditData.name = "label3.test.aaa.bbb.ccc.dddd.eee.dddd"; 140 auditData.dacData.gid = 202; // 202 test dac gid 141 auditData.dacData.uid = geteuid(); 142 auditData.dacData.mode = 0666; // 0666 test mode 143 SystemWriteParam(name, value); 144 AddSecurityLabel(&auditData); 145 146 uint32_t labelIndex = 0; 147 WorkSpace *workspace = GetWorkSpace(WORKSPACE_INDEX_DAC); 148 ParamTrieNode *paramNode = FindTrieNode(workspace, name, strlen(name), &labelIndex); 149 ParamSecurityNode *node = (ParamSecurityNode *)GetTrieNode(workspace, labelIndex); 150 if (paramNode == nullptr || node == nullptr) { 151 EXPECT_EQ(1, 0); 152 return 0; 153 } 154 EXPECT_EQ((int)node->gid, 203); // 203 test gid 155 return 0; 156 } 157 158 // 添加一个label,完全匹配 TestAddSecurityLabel4()159 int TestAddSecurityLabel4() 160 { 161 GetParamSecurityLabel()->cred.gid = 9999; // 9999 test gid 162 const char *name = "label4.test.aaa.bbb.ccc.dddd.eee"; 163 const char *value = "2001"; 164 ParamAuditData auditData = {}; 165 auditData.name = "label4.test.aaa.bbb.ccc.dddd.eee"; 166 auditData.dacData.gid = 203; // 203 test gid 167 auditData.dacData.uid = geteuid(); 168 auditData.dacData.mode = 0666; // 0666 test mode 169 SystemWriteParam(name, value); 170 uint32_t labelIndex = 0; 171 AddSecurityLabel(&auditData); 172 WorkSpace *workspace = GetWorkSpace(WORKSPACE_INDEX_DAC); 173 ParamTrieNode *paramNode = FindTrieNode(workspace, name, strlen(name), &labelIndex); 174 ParamSecurityNode *node = (ParamSecurityNode *)GetTrieNode(workspace, labelIndex); 175 if (paramNode == nullptr || node == nullptr) { 176 EXPECT_EQ(1, 0); 177 return 0; 178 } 179 EXPECT_EQ(node->gid, auditData.dacData.gid); 180 return 0; 181 } 182 TestBufferValue(char * buffer,uint32_t len)183 void TestBufferValue(char *buffer, uint32_t len) 184 { 185 const int printBase = 10; 186 for (uint32_t index = 0; index <= len; index++) { 187 buffer[index] = '0' + index % printBase; 188 if (index != 0 && index % printBase == 0) { 189 buffer[index] = '.'; 190 } 191 } 192 buffer[len] = '\0'; 193 } 194 TestNameIsValid()195 int TestNameIsValid() 196 { 197 char buffer[PARAM_BUFFER_SIZE]; 198 // set name length = 127 199 TestBufferValue(buffer, PARAM_NAME_LEN_MAX - 1); 200 int ret = SystemWriteParam(buffer, "1111"); 201 EXPECT_EQ(ret, 0); 202 TestBufferValue(buffer, PARAM_NAME_LEN_MAX); 203 ret = SystemWriteParam(buffer, "1111"); 204 EXPECT_NE(ret, 0); 205 TestBufferValue(buffer, PARAM_NAME_LEN_MAX + 1); 206 ret = SystemWriteParam(buffer, "1111"); 207 EXPECT_NE(ret, 0); 208 209 ret = SystemWriteParam(" ", "1111"); 210 EXPECT_NE(ret, 0); 211 ret = SystemWriteParam("__.__..", "1111"); 212 EXPECT_NE(ret, 0); 213 ret = SystemWriteParam(".__..", "1111"); 214 EXPECT_NE(ret, 0); 215 ret = SystemWriteParam("test.-@:_", "1111"); 216 EXPECT_EQ(ret, 0); 217 218 // 保存一个只读的属性,大于最大值 219 TestBufferValue(buffer, PARAM_VALUE_LEN_MAX - 1); 220 ret = SystemWriteParam("const.test_readonly.dddddddddddddddddd.fffffffffffffffffff", buffer); 221 EXPECT_EQ(ret, 0); 222 223 TestBufferValue(buffer, PARAM_VALUE_LEN_MAX + 1); 224 ret = SystemWriteParam("const.test_readonly.aaaaaaaaaaaaaaaaaa.fffffffffffffffffff", buffer); 225 EXPECT_EQ(ret, 0); 226 227 // 更新只读项目 228 TestBufferValue(buffer, PARAM_VALUE_LEN_MAX - 1); 229 ret = SystemWriteParam("const.test_readonly.dddddddddddddddddd.fffffffffffffffffff", buffer); 230 EXPECT_NE(ret, 0); 231 232 // 写普通属性 233 TestBufferValue(buffer, PARAM_VALUE_LEN_MAX - 1); 234 ret = SystemWriteParam("test.bigvalue.dddddddddddddddddd.fffffffffffffffffff", buffer); 235 EXPECT_EQ(ret, 0); 236 TestBufferValue(buffer, PARAM_VALUE_LEN_MAX + 1); 237 ret = SystemWriteParam("test.bigvalue.dddddddddddddddddd.fffffffffffffffffff", buffer); 238 EXPECT_NE(ret, 0); 239 240 // invalid name 241 TestBufferValue(buffer, PARAM_VALUE_LEN_MAX - 1); 242 ret = SystemWriteParam("test.invalidname..fffffffffffffffffff", buffer); 243 EXPECT_NE(ret, 0); 244 ret = SystemWriteParam("test.invalidname.%fffffffffffffffffff", buffer); 245 EXPECT_NE(ret, 0); 246 ret = SystemWriteParam("test.invalidname.$fffffffffffffffffff", buffer); 247 EXPECT_NE(ret, 0); 248 return 0; 249 } 250 TestParamTraversal()251 int TestParamTraversal() 252 { 253 char value[PARAM_BUFFER_SIZE + PARAM_BUFFER_SIZE] = {0}; 254 SystemTraversalParameter( 255 "", 256 [](ParamHandle handle, void *cookie) { 257 SystemGetParameterName(handle, (char *)cookie, PARAM_BUFFER_SIZE); 258 u_int32_t len = PARAM_BUFFER_SIZE; 259 SystemGetParameterValue(handle, ((char *)cookie) + PARAM_BUFFER_SIZE, &len); 260 printf("$$$$$$$$Param %s=%s \n", (char *)cookie, ((char *)cookie) + PARAM_BUFFER_SIZE); 261 }, 262 (void *)value); 263 return 0; 264 } 265 TestUpdateParam(const char * name,const char * value)266 int TestUpdateParam(const char *name, const char *value) 267 { 268 SystemWriteParam(name, value); 269 SystemWriteParam(name, value); 270 SystemWriteParam(name, value); 271 SystemWriteParam(name, value); 272 CheckServerParamValue(name, value); 273 return 0; 274 } 275 TestPersistParam()276 int TestPersistParam() 277 { 278 RegisterPersistParamOps(nullptr); 279 LoadPersistParams(); 280 SystemWriteParam("persist.111.ffff.bbbb.cccc.dddd.eeee", "1101"); 281 SystemWriteParam("persist.111.aaaa.bbbb.cccc.dddd.eeee", "1102"); 282 SystemWriteParam("persist.111.bbbb.cccc.dddd.eeee", "1103"); 283 CheckServerParamValue("persist.111.bbbb.cccc.dddd.eeee", "1103"); 284 SystemWriteParam("persist.111.cccc.bbbb.cccc.dddd.eeee", "1104"); 285 SystemWriteParam("persist.111.eeee.bbbb.cccc.dddd.eeee", "1105"); 286 CheckServerParamValue("persist.111.ffff.bbbb.cccc.dddd.eeee", "1101"); 287 SystemWriteParam("persist.111.ffff.bbbb.cccc.dddd.eeee", "1106"); 288 CheckServerParamValue("persist.111.ffff.bbbb.cccc.dddd.eeee", "1106"); 289 290 SystemWriteParam("persist.111.bbbb.cccc.dddd.1107", "1107"); 291 SystemWriteParam("persist.111.bbbb.cccc.dddd.1108", "1108"); 292 SystemWriteParam("persist.111.bbbb.cccc.dddd.1109", "1108"); 293 294 SystemWriteParam("persist.111.bbbb.cccc.dddd.1110", "1108"); 295 SystemWriteParam("persist.111.bbbb.cccc.dddd.1111", "1108"); 296 TimerCallbackForSave(nullptr, nullptr); 297 LoadPersistParams(); 298 return 0; 299 } 300 CreateAndGetStreamTask()301 ParamTaskPtr CreateAndGetStreamTask() 302 { 303 OnIncomingConnect(LE_GetDefaultLoop(), GetParamService()->serverTask); 304 EXPECT_NE(GetParamService()->watcherTask, nullptr); 305 return GetParamService()->watcherTask; 306 } 307 TestServiceProcessMessage(const char * name,const char * value,int userLabel)308 int TestServiceProcessMessage(const char *name, const char *value, int userLabel) 309 { 310 if (g_worker == nullptr) { 311 g_worker = CreateAndGetStreamTask(); 312 } 313 if (g_worker == nullptr) { 314 return 0; 315 } 316 ParamSecurityOps *paramSecurityOps = GetParamSecurityOps(0); 317 if (userLabel && paramSecurityOps != nullptr) { 318 paramSecurityOps->securityFreeLabel = TestFreeLocalSecurityLabel; 319 paramSecurityOps->securityCheckParamPermission = TestCheckParamPermission; 320 } 321 uint32_t msgSize = sizeof(ParamMessage) + sizeof(ParamMsgContent) + PARAM_ALIGN(strlen(value) + 1); 322 ParamMessage *request = (ParamMessage *)CreateParamMessage(MSG_SET_PARAM, name, msgSize); 323 PARAM_CHECK(request != nullptr, return -1, "Failed to malloc for connect"); 324 do { 325 request->type = MSG_SET_PARAM; 326 uint32_t offset = 0; 327 int ret = FillParamMsgContent(request, &offset, PARAM_VALUE, value, strlen(value)); 328 PARAM_CHECK(ret == 0, break, "Failed to fill value"); 329 ProcessMessage((const ParamTaskPtr)g_worker, (const ParamMessage *)request); 330 } while (0); 331 free(request); 332 RegisterSecurityOps(1); 333 return 0; 334 } 335 AddWatch(int type,const char * name,const char * value)336 int AddWatch(int type, const char *name, const char *value) 337 { 338 if (g_worker == nullptr) { 339 g_worker = CreateAndGetStreamTask(); 340 } 341 if (g_worker == nullptr) { 342 return 0; 343 } 344 uint32_t msgSize = sizeof(ParamMessage) + sizeof(ParamMsgContent) + sizeof(ParamMsgContent) 345 + PARAM_ALIGN(strlen(value) + 1) + sizeof(uint32_t); 346 ParamMessage *request = (ParamMessage *)(ParamMessage *)CreateParamMessage(type, name, msgSize); 347 PARAM_CHECK(request != nullptr, return -1, "Failed to malloc for connect"); 348 do { 349 uint32_t offset = 0; 350 int ret = FillParamMsgContent(request, &offset, PARAM_VALUE, value, strlen(value)); 351 PARAM_CHECK(ret == 0, break, "Failed to fill value"); 352 353 ParamMsgContent *content = (ParamMsgContent *)(request->data + offset); 354 content->type = PARAM_WAIT_TIMEOUT; 355 content->contentSize = sizeof(uint32_t); 356 *((uint32_t *)(content->content)) = 100; // 100 is test value 357 offset += sizeof(ParamMsgContent) + sizeof(uint32_t); 358 request->msgSize = offset + sizeof(ParamMessage); 359 360 ProcessMessage((const ParamTaskPtr)g_worker, (const ParamMessage *)request); 361 } while (0); 362 free(request); 363 return 0; 364 } 365 366 // 无匹配 TestAddParamWait1()367 int TestAddParamWait1() 368 { 369 const char *name = "wait.aaa.bbb.ccc.111"; 370 const char *value = "wait1"; 371 AddWatch(MSG_WAIT_PARAM, name, value); 372 SystemWriteParam(name, value); 373 // execute trigger 374 LE_DoAsyncEvent(LE_GetDefaultLoop(), GetTriggerWorkSpace()->eventHandle); 375 return 0; 376 } 377 378 // 模糊匹配 TestAddParamWait2()379 int TestAddParamWait2() 380 { 381 const char *name = "wait.aaa.bbb.ccc.222"; 382 const char *value = "wait2"; 383 AddWatch(MSG_WAIT_PARAM, name, "*"); 384 SystemWriteParam(name, value); 385 // execute trigger 386 LE_DoAsyncEvent(LE_GetDefaultLoop(), GetTriggerWorkSpace()->eventHandle); 387 return 0; 388 } 389 390 // 属性存在 TestAddParamWait3()391 int TestAddParamWait3() 392 { 393 const char *name = "wait.aaa.bbb.ccc.333"; 394 const char *value = "wait3"; 395 SystemWriteParam(name, value); 396 AddWatch(MSG_WAIT_PARAM, name, value); 397 // execute trigger 398 LE_DoAsyncEvent(LE_GetDefaultLoop(), GetTriggerWorkSpace()->eventHandle); 399 return 0; 400 } 401 TestAddParamWatch1()402 int TestAddParamWatch1() 403 { 404 const char *name = "watch.aaa.bbb.ccc.111"; 405 const char *value = "watch1"; 406 AddWatch(MSG_ADD_WATCHER, name, value); 407 std::string newName = name; 408 newName += ".test.test.test"; 409 SystemWriteParam(newName.c_str(), value); 410 // execute trigger 411 LE_DoAsyncEvent(LE_GetDefaultLoop(), GetTriggerWorkSpace()->eventHandle); 412 return 0; 413 } 414 TestAddParamWatch2()415 int TestAddParamWatch2() 416 { 417 const char *name = "watch.aaa.bbb.ccc.222"; 418 const char *value = "watch2"; 419 AddWatch(MSG_ADD_WATCHER, name, "*"); 420 SystemWriteParam(name, value); 421 // execute trigger 422 LE_DoAsyncEvent(LE_GetDefaultLoop(), GetTriggerWorkSpace()->eventHandle); 423 return 0; 424 } 425 TestAddParamWatch3()426 int TestAddParamWatch3() 427 { 428 const char *name = "watch.aaa.bbb.ccc.333"; 429 const char *value = "watch3"; 430 std::string newName = name; 431 newName += ".test.test.test"; 432 SystemWriteParam(newName.c_str(), value); 433 AddWatch(MSG_ADD_WATCHER, name, value); 434 char buffer[] = "testbuff"; 435 CheckTrigger(GetTriggerWorkSpace(), TRIGGER_PARAM_WATCH, buffer, strlen(buffer), TestTriggerExecute); 436 AddWatch(MSG_DEL_WATCHER, name, value); 437 return 0; 438 } 439 TestCloseTriggerWatch()440 int TestCloseTriggerWatch() 441 { 442 #ifdef PARAM_SUPPORT_TRIGGER 443 SystemDumpTriggers(1, nullptr); 444 #endif 445 ParamWatcher *watcher = (ParamWatcher *)ParamGetTaskUserData(g_worker); 446 ClearWatchTrigger(watcher, TRIGGER_PARAM_WAIT); 447 ParamTaskClose(g_worker); 448 g_worker = nullptr; 449 ParamTaskClose(g_worker); 450 SystemWriteParam("init.svc.param_watcher", "stopped"); 451 return 0; 452 } 453 TestServiceCtrl(const char * serviceName,uint16_t mode)454 int TestServiceCtrl(const char *serviceName, uint16_t mode) 455 { 456 // service forbid 457 TestSetParamCheckResult("ohos.servicectrl.", mode, 1); 458 return SystemWriteParam("ohos.ctl.start", serviceName); 459 } 460 TestPowerCtrl(const char * reboot,uint16_t mode)461 int TestPowerCtrl(const char *reboot, uint16_t mode) 462 { 463 // service forbid 464 TestSetParamCheckResult("ohos.servicectrl.reboot", mode, 1); 465 return SystemWriteParam("ohos.startup.powerctrl", reboot); 466 } 467 }; 468 469 HWTEST_F(ParamServiceUnitTest, Init_TestPersistParam_001, TestSize.Level0) 470 { 471 ParamServiceUnitTest test; 472 test.TestPersistParam(); 473 } 474 475 HWTEST_F(ParamServiceUnitTest, Init_TestReadCmdline_001, TestSize.Level0) 476 { 477 const char *snData = "222222222222222222222"; 478 CreateTestFile(STARTUP_INIT_UT_PATH "/system/etc/sn", snData); 479 // for cmdline 480 std::string cmdLineForSn = "bootgroup=device.charge.group earlycon=uart8250,mmio32,0xfe660000 " 481 "root=PARTUUID=614e0000-0000 rw rootwait rootfstype=ext4 console=ttyFIQ0 hardware=rk3568" 482 " BOOT_IMAGE=/kernel init=/init"; 483 std::string snWithPath = cmdLineForSn + "ohos.boot.sn=" + STARTUP_INIT_UT_PATH "/system/etc/sn"; 484 CreateTestFile(BOOT_CMD_LINE, snWithPath.c_str()); 485 LoadParamFromCmdLine(); 486 std::string snWithSN = cmdLineForSn + "ohos.boot.sn=" + snData; 487 CreateTestFile(BOOT_CMD_LINE, snWithSN.c_str()); 488 LoadParamFromCmdLine(); 489 CreateTestFile(BOOT_CMD_LINE, cmdLineForSn.c_str()); 490 LoadParamFromCmdLine(); 491 } 492 493 HWTEST_F(ParamServiceUnitTest, Init_TestServiceProcessMessage_001, TestSize.Level0) 494 { 495 ParamServiceUnitTest test; 496 test.TestServiceProcessMessage("wertt.qqqq.wwww.rrrr", "wwww.eeeee", 1); 497 test.TestServiceProcessMessage("wertt.2222.wwww.3333", "wwww.eeeee", 0); 498 } 499 500 HWTEST_F(ParamServiceUnitTest, Init_TestAddParamWait_001, TestSize.Level0) 501 { 502 ParamServiceUnitTest test; 503 test.TestAddParamWait1(); 504 } 505 506 HWTEST_F(ParamServiceUnitTest, Init_TestAddParamWait_002, TestSize.Level0) 507 { 508 ParamServiceUnitTest test; 509 test.TestAddParamWait2(); 510 } 511 512 HWTEST_F(ParamServiceUnitTest, Init_TestAddParamWait_003, TestSize.Level0) 513 { 514 ParamServiceUnitTest test; 515 test.TestAddParamWait3(); 516 } 517 518 HWTEST_F(ParamServiceUnitTest, Init_TestAddParamWatch_001, TestSize.Level0) 519 { 520 ParamServiceUnitTest test; 521 test.TestAddParamWatch1(); 522 } 523 524 HWTEST_F(ParamServiceUnitTest, Init_TestAddParamWatch_002, TestSize.Level0) 525 { 526 ParamServiceUnitTest test; 527 test.TestAddParamWatch2(); 528 } 529 530 #ifndef OHOS_LITE 531 HWTEST_F(ParamServiceUnitTest, Init_TestAddParamWatch_003, TestSize.Level0) 532 { 533 ParamServiceUnitTest test; 534 test.TestAddParamWatch3(); 535 int hashCode = CheckWatchTriggerTimeout(); 536 EXPECT_EQ(hashCode, 0); 537 } 538 539 HWTEST_F(ParamServiceUnitTest, Init_TestCloseTriggerWatch_001, TestSize.Level0) 540 { 541 ParamServiceUnitTest test; 542 test.TestCloseTriggerWatch(); 543 } 544 545 HWTEST_F(ParamServiceUnitTest, Init_TestServiceCtrl_001, TestSize.Level0) 546 { 547 ParamServiceUnitTest test; 548 int ret = test.TestServiceCtrl("server1", 0770); 549 EXPECT_NE(ret, 0); 550 #ifdef PARAM_SUPPORT_SELINUX 551 // selinux forbid 552 ret = test.TestServiceCtrl("server2", 0772); 553 EXPECT_NE(ret, 0); 554 #endif 555 ret = 0; 556 } 557 558 HWTEST_F(ParamServiceUnitTest, Init_TestPowerCtrl_001, TestSize.Level0) 559 { 560 ParamServiceUnitTest test; 561 int ret = test.TestPowerCtrl("reboot,shutdown", 0770); 562 EXPECT_NE(ret, 0); 563 ret = test.TestPowerCtrl("reboot,shutdown", 0772); 564 #ifdef PARAM_SUPPORT_SELINUX 565 // selinux forbid 566 EXPECT_NE(ret, 0); 567 #endif 568 ret = test.TestPowerCtrl("reboot,updater", 0770); 569 EXPECT_NE(ret, 0); 570 ret = test.TestPowerCtrl("reboot,updater", 0772); 571 #ifdef PARAM_SUPPORT_SELINUX 572 // selinux forbid 573 EXPECT_NE(ret, 0); 574 #endif 575 ret = test.TestPowerCtrl("reboot,flashd", 0770); 576 EXPECT_NE(ret, 0); 577 ret = test.TestPowerCtrl("reboot,flashd", 0772); 578 #ifdef PARAM_SUPPORT_SELINUX 579 // selinux forbid 580 EXPECT_NE(ret, 0); 581 #endif 582 583 ret = test.TestPowerCtrl("reboot", 0770); 584 EXPECT_NE(ret, 0); 585 ret = test.TestPowerCtrl("reboot", 0772); 586 #ifdef PARAM_SUPPORT_SELINUX 587 // selinux forbid 588 EXPECT_NE(ret, 0); 589 #endif 590 591 ParamServiceStop(); 592 } 593 #endif 594 } // namespace init_ut 595