1d9f0492fSopenharmony_ci/* 2d9f0492fSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3d9f0492fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4d9f0492fSopenharmony_ci * you may not use this file except in compliance with the License. 5d9f0492fSopenharmony_ci * You may obtain a copy of the License at 6d9f0492fSopenharmony_ci * 7d9f0492fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8d9f0492fSopenharmony_ci * 9d9f0492fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10d9f0492fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11d9f0492fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d9f0492fSopenharmony_ci * See the License for the specific language governing permissions and 13d9f0492fSopenharmony_ci * limitations under the License. 14d9f0492fSopenharmony_ci */ 15d9f0492fSopenharmony_ci#include <gtest/gtest.h> 16d9f0492fSopenharmony_ci 17d9f0492fSopenharmony_ci#include <cstdlib> 18d9f0492fSopenharmony_ci#include <unistd.h> 19d9f0492fSopenharmony_ci#include <sys/wait.h> 20d9f0492fSopenharmony_ci#include <csignal> 21d9f0492fSopenharmony_ci#include <cerrno> 22d9f0492fSopenharmony_ci#include <cstring> 23d9f0492fSopenharmony_ci#include <sys/prctl.h> 24d9f0492fSopenharmony_ci#include <sys/types.h> 25d9f0492fSopenharmony_ci#include <sys/stat.h> 26d9f0492fSopenharmony_ci#include <fcntl.h> 27d9f0492fSopenharmony_ci#include <sys/syscall.h> 28d9f0492fSopenharmony_ci#include <asm/unistd.h> 29d9f0492fSopenharmony_ci#include <syscall.h> 30d9f0492fSopenharmony_ci#include <climits> 31d9f0492fSopenharmony_ci#include <sched.h> 32d9f0492fSopenharmony_ci 33d9f0492fSopenharmony_ci#include "service_control.h" 34d9f0492fSopenharmony_ci 35d9f0492fSopenharmony_ciusing namespace std; 36d9f0492fSopenharmony_ciusing namespace testing::ext; 37d9f0492fSopenharmony_ci 38d9f0492fSopenharmony_cinamespace init_ut { 39d9f0492fSopenharmony_ciclass ServiceControlUnitTest : public testing::Test { 40d9f0492fSopenharmony_cipublic: 41d9f0492fSopenharmony_ci static void SetUpTestCase(void) {}; 42d9f0492fSopenharmony_ci static void TearDownTestCase(void) {}; 43d9f0492fSopenharmony_ci void SetUp() {}; 44d9f0492fSopenharmony_ci void TearDown() {}; 45d9f0492fSopenharmony_ci} 46d9f0492fSopenharmony_ci 47d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceControlWithExtra_001, TestSize.Level1) 48d9f0492fSopenharmony_ci{ 49d9f0492fSopenharmony_ci int ret = ServiceControlWithExtra("deviceinfoservice", RESTART, argv, 1); 50d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_SUCCESS); 51d9f0492fSopenharmony_ci} 52d9f0492fSopenharmony_ci 53d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceControlWithExtra_002, TestSize.Level1) 54d9f0492fSopenharmony_ci{ 55d9f0492fSopenharmony_ci int ret = ServiceControlWithExtra(nullptr, RESTART, argv, 1); 56d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_FAILURE); 57d9f0492fSopenharmony_ci} 58d9f0492fSopenharmony_ci 59d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceControlWithExtra_003, TestSize.Level1) 60d9f0492fSopenharmony_ci{ 61d9f0492fSopenharmony_ci int ret = ServiceControlWithExtra(nullptr, 3, argv, 1); // 3 is action 62d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_FAILURE); 63d9f0492fSopenharmony_ci} 64d9f0492fSopenharmony_ci 65d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceControlWithExtra_004, TestSize.Level1) 66d9f0492fSopenharmony_ci{ 67d9f0492fSopenharmony_ci int ret = ServiceControlWithExtra("notservie", RESTART, argv, 1); 68d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_FAILURE); 69d9f0492fSopenharmony_ci} 70d9f0492fSopenharmony_ci 71d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceControlWithExtra_005, TestSize.Level1) 72d9f0492fSopenharmony_ci{ 73d9f0492fSopenharmony_ci int ret = ServiceControlWithExtra("deviceinfoservice", 3, argv, 1); // 3 is action 74d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_SUCCESS); 75d9f0492fSopenharmony_ci} 76d9f0492fSopenharmony_ci 77d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceControl_001, TestSize.Level1) 78d9f0492fSopenharmony_ci{ 79d9f0492fSopenharmony_ci int ret = ServiceControl("deviceinfoservice", START); 80d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_SUCCESS); 81d9f0492fSopenharmony_ci} 82d9f0492fSopenharmony_ci 83d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceControl_002, TestSize.Level1) 84d9f0492fSopenharmony_ci{ 85d9f0492fSopenharmony_ci int ret = ServiceControl("deviceinfoservice", STOP); 86d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_SUCCESS); 87d9f0492fSopenharmony_ci} 88d9f0492fSopenharmony_ci 89d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceControl_003, TestSize.Level1) 90d9f0492fSopenharmony_ci{ 91d9f0492fSopenharmony_ci int ret = ServiceControl("deviceinfoservice", RESTART); 92d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_SUCCESS); 93d9f0492fSopenharmony_ci} 94d9f0492fSopenharmony_ci 95d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceControl_004, TestSize.Level1) 96d9f0492fSopenharmony_ci{ 97d9f0492fSopenharmony_ci int ret = ServiceControl(nullptr, RESTART); 98d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_FAILURE); 99d9f0492fSopenharmony_ci} 100d9f0492fSopenharmony_ci 101d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceWaitForStatus_001, TestSize.Level1) 102d9f0492fSopenharmony_ci{ 103d9f0492fSopenharmony_ci int ret = ServiceWaitForStatus("deviceinfoservice", SERVICE_READY, 1); 104d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_SUCCESS); 105d9f0492fSopenharmony_ci} 106d9f0492fSopenharmony_ci 107d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceWaitForStatus_002, TestSize.Level1) 108d9f0492fSopenharmony_ci{ 109d9f0492fSopenharmony_ci int ret = ServiceWaitForStatus("deviceinfoservice", SERVICE_READY, -1); 110d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_SUCCESS); 111d9f0492fSopenharmony_ci} 112d9f0492fSopenharmony_ci 113d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceWaitForStatus_003, TestSize.Level1) 114d9f0492fSopenharmony_ci{ 115d9f0492fSopenharmony_ci int ret = ServiceWaitForStatus(nullptr, SERVICE_READY, 1); 116d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_FAILURE); 117d9f0492fSopenharmony_ci} 118d9f0492fSopenharmony_ci 119d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceSetReady_001, TestSize.Level1) 120d9f0492fSopenharmony_ci{ 121d9f0492fSopenharmony_ci int ret = ServiceSetReady("deviceinfoservice"); 122d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_SUCCESS); 123d9f0492fSopenharmony_ci} 124d9f0492fSopenharmony_ci 125d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, ServiceSetReady_002, TestSize.Level1) 126d9f0492fSopenharmony_ci{ 127d9f0492fSopenharmony_ci int ret = ServiceSetReady(nullptr); 128d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_FAILURE); 129d9f0492fSopenharmony_ci} 130d9f0492fSopenharmony_ci 131d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, StartServiceByTimer_001, TestSize.Level1) 132d9f0492fSopenharmony_ci{ 133d9f0492fSopenharmony_ci int ret = StartServiceByTimer("deviceinfoservice", 1); 134d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_SUCCESS); 135d9f0492fSopenharmony_ci} 136d9f0492fSopenharmony_ci 137d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, StartServiceByTimer_002, TestSize.Level1) 138d9f0492fSopenharmony_ci{ 139d9f0492fSopenharmony_ci int ret = StartServiceByTimer("deviceinfoservice", 0); 140d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_SUCCESS); 141d9f0492fSopenharmony_ci} 142d9f0492fSopenharmony_ci 143d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, StartServiceByTimer_003, TestSize.Level1) 144d9f0492fSopenharmony_ci{ 145d9f0492fSopenharmony_ci int ret = StartServiceByTimer(nullptr, 0); 146d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_FAILURE); 147d9f0492fSopenharmony_ci} 148d9f0492fSopenharmony_ci 149d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, StopServiceTimer_001, TestSize.Level1) 150d9f0492fSopenharmony_ci{ 151d9f0492fSopenharmony_ci int ret = StopServiceTimer("deviceinfoservice"); 152d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_SUCCESS); 153d9f0492fSopenharmony_ci} 154d9f0492fSopenharmony_ci 155d9f0492fSopenharmony_ciHWTEST_F(ServiceControlUnitTest, StopServiceTimer_002, TestSize.Level1) 156d9f0492fSopenharmony_ci{ 157d9f0492fSopenharmony_ci int ret = StopServiceTimer(nullptr); 158d9f0492fSopenharmony_ci EXPECT_EQ(ret, EC_FAILURE); 159d9f0492fSopenharmony_ci} 160d9f0492fSopenharmony_ci}