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}