14d6c458bSopenharmony_ci/*
24d6c458bSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
34d6c458bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44d6c458bSopenharmony_ci * you may not use this file except in compliance with the License.
54d6c458bSopenharmony_ci * You may obtain a copy of the License at
64d6c458bSopenharmony_ci *
74d6c458bSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84d6c458bSopenharmony_ci *
94d6c458bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104d6c458bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114d6c458bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124d6c458bSopenharmony_ci * See the License for the specific language governing permissions and
134d6c458bSopenharmony_ci * limitations under the License.
144d6c458bSopenharmony_ci */
154d6c458bSopenharmony_ci
164d6c458bSopenharmony_ci#include <ctime>
174d6c458bSopenharmony_ci#include "test.h"
184d6c458bSopenharmony_ci
194d6c458bSopenharmony_ci#include "napi/native_api.h"
204d6c458bSopenharmony_ci#include "napi/native_node_api.h"
214d6c458bSopenharmony_ci
224d6c458bSopenharmony_ci#include "securec.h"
234d6c458bSopenharmony_ci#include "js_childprocess.h"
244d6c458bSopenharmony_ci#include "js_process.h"
254d6c458bSopenharmony_ci#include "tools/log.h"
264d6c458bSopenharmony_ci
274d6c458bSopenharmony_ci#define ASSERT_CHECK_CALL(call)   \
284d6c458bSopenharmony_ci    {                             \
294d6c458bSopenharmony_ci        ASSERT_EQ(call, napi_ok); \
304d6c458bSopenharmony_ci    }
314d6c458bSopenharmony_ci
324d6c458bSopenharmony_ci#define ASSERT_CHECK_VALUE_TYPE(env, value, type)               \
334d6c458bSopenharmony_ci    {                                                           \
344d6c458bSopenharmony_ci        napi_valuetype valueType = napi_undefined;              \
354d6c458bSopenharmony_ci        ASSERT_TRUE(value != nullptr);                          \
364d6c458bSopenharmony_ci        ASSERT_CHECK_CALL(napi_typeof(env, value, &valueType)); \
374d6c458bSopenharmony_ci        ASSERT_EQ(valueType, type);                             \
384d6c458bSopenharmony_ci    }
394d6c458bSopenharmony_cistatic OHOS::JsSysModule::Process::ChildProcess RunCommand(napi_env env, napi_value command, napi_value options)
404d6c458bSopenharmony_ci{
414d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::ChildProcess objectInfo;
424d6c458bSopenharmony_ci
434d6c458bSopenharmony_ci    objectInfo.InitOptionsInfo(env, options);
444d6c458bSopenharmony_ci
454d6c458bSopenharmony_ci    objectInfo.Spawn(env, command);
464d6c458bSopenharmony_ci
474d6c458bSopenharmony_ci    return objectInfo;
484d6c458bSopenharmony_ci}
494d6c458bSopenharmony_cistatic std::string testStr = "";
504d6c458bSopenharmony_cinapi_value Method(napi_env env, napi_callback_info info)
514d6c458bSopenharmony_ci{
524d6c458bSopenharmony_ci    napi_value thisVar = nullptr;
534d6c458bSopenharmony_ci    size_t argc = 0;
544d6c458bSopenharmony_ci    napi_value args[6] = { 0 }; // 6:six args
554d6c458bSopenharmony_ci    NAPI_CALL(env, napi_get_cb_info(env, info, &argc, nullptr, &thisVar, nullptr));
564d6c458bSopenharmony_ci    NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, &thisVar, nullptr));
574d6c458bSopenharmony_ci
584d6c458bSopenharmony_ci    napi_value name = args[0];
594d6c458bSopenharmony_ci    napi_value value = args[1];
604d6c458bSopenharmony_ci
614d6c458bSopenharmony_ci    std::string buffer1 = "";
624d6c458bSopenharmony_ci    size_t bufferSize1 = 0;
634d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, name, nullptr, 0, &bufferSize1);
644d6c458bSopenharmony_ci    buffer1.reserve(bufferSize1 + 1);
654d6c458bSopenharmony_ci    buffer1.resize(bufferSize1);
664d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, name, buffer1.data(), bufferSize1 + 1, &bufferSize1);
674d6c458bSopenharmony_ci
684d6c458bSopenharmony_ci    std::string buffer2 = "";
694d6c458bSopenharmony_ci    size_t bufferSize2 = 0;
704d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, value, nullptr, 0, &bufferSize2);
714d6c458bSopenharmony_ci    buffer2.reserve(bufferSize2 + 1);
724d6c458bSopenharmony_ci    buffer2.resize(bufferSize2);
734d6c458bSopenharmony_ci    napi_get_value_string_utf8(env, value, buffer2.data(), bufferSize2 + 1, &bufferSize2);
744d6c458bSopenharmony_ci    testStr += buffer1 + buffer2;
754d6c458bSopenharmony_ci    napi_value result = nullptr;
764d6c458bSopenharmony_ci    napi_get_boolean(env, true, &result);
774d6c458bSopenharmony_ci    return result;
784d6c458bSopenharmony_ci}
794d6c458bSopenharmony_ci/**
804d6c458bSopenharmony_ci * @tc.name: ProcessUptimeTest001
814d6c458bSopenharmony_ci * @tc.desc: Test process Uptime.
824d6c458bSopenharmony_ci * @tc.type: FUNC
834d6c458bSopenharmony_ci */
844d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessUptimeTest001, testing::ext::TestSize.Level0)
854d6c458bSopenharmony_ci{
864d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
874d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
884d6c458bSopenharmony_ci    napi_value timeStart = process.Uptime(env);
894d6c458bSopenharmony_ci    sleep(1);
904d6c458bSopenharmony_ci    napi_value timeEnd = process.Uptime(env);
914d6c458bSopenharmony_ci    double start = 0;
924d6c458bSopenharmony_ci    double end = 0;
934d6c458bSopenharmony_ci    napi_get_value_double(env, timeStart, &start);
944d6c458bSopenharmony_ci    napi_get_value_double(env, timeEnd, &end);
954d6c458bSopenharmony_ci    ASSERT_EQ(end - start, 1);
964d6c458bSopenharmony_ci}
974d6c458bSopenharmony_ci
984d6c458bSopenharmony_ci/**
994d6c458bSopenharmony_ci * @tc.name: ProcessKillTest001
1004d6c458bSopenharmony_ci * @tc.desc: Test process kill signal.
1014d6c458bSopenharmony_ci * @tc.type: FUNC
1024d6c458bSopenharmony_ci */
1034d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessKillTest001, testing::ext::TestSize.Level0)
1044d6c458bSopenharmony_ci{
1054d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
1064d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
1074d6c458bSopenharmony_ci
1084d6c458bSopenharmony_ci    std::string command("ls; sleep 1");
1094d6c458bSopenharmony_ci    napi_value temp = nullptr;
1104d6c458bSopenharmony_ci    napi_create_string_utf8(env, command.c_str(), command.length(), &temp);
1114d6c458bSopenharmony_ci
1124d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::ChildProcess childprocess = RunCommand(env, temp, nullptr);
1134d6c458bSopenharmony_ci
1144d6c458bSopenharmony_ci    napi_value pid = childprocess.Getpid(env);
1154d6c458bSopenharmony_ci    napi_value signal = nullptr;
1164d6c458bSopenharmony_ci    napi_create_int32(env, 9, &signal);
1174d6c458bSopenharmony_ci    napi_value result = process.Kill(env, pid, signal);
1184d6c458bSopenharmony_ci    bool res = false;
1194d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &res);
1204d6c458bSopenharmony_ci    ASSERT_FALSE(res);
1214d6c458bSopenharmony_ci}
1224d6c458bSopenharmony_ci
1234d6c458bSopenharmony_ci/**
1244d6c458bSopenharmony_ci * @tc.name: ProcessKillTest002
1254d6c458bSopenharmony_ci * @tc.desc: Test process kill signal.
1264d6c458bSopenharmony_ci * @tc.type: FUNC
1274d6c458bSopenharmony_ci */
1284d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessKillTest002, testing::ext::TestSize.Level0)
1294d6c458bSopenharmony_ci{
1304d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
1314d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
1324d6c458bSopenharmony_ci
1334d6c458bSopenharmony_ci    std::string command("ls; sleep 1");
1344d6c458bSopenharmony_ci    napi_value temp = nullptr;
1354d6c458bSopenharmony_ci    napi_create_string_utf8(env, command.c_str(), command.length(), &temp);
1364d6c458bSopenharmony_ci
1374d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::ChildProcess childprocess = RunCommand(env, temp, nullptr);
1384d6c458bSopenharmony_ci
1394d6c458bSopenharmony_ci    napi_value pid = childprocess.Getpid(env);
1404d6c458bSopenharmony_ci    napi_value signal = nullptr;
1414d6c458bSopenharmony_ci    napi_create_int32(env, 999, &signal);
1424d6c458bSopenharmony_ci    napi_value result = process.Kill(env, pid, signal);
1434d6c458bSopenharmony_ci    bool res = false;
1444d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &res);
1454d6c458bSopenharmony_ci    ASSERT_FALSE(res);
1464d6c458bSopenharmony_ci}
1474d6c458bSopenharmony_ci
1484d6c458bSopenharmony_ci/**
1494d6c458bSopenharmony_ci * @tc.name: ProcessRunCmdTest001
1504d6c458bSopenharmony_ci * @tc.desc: Test process RunCmd fork process.
1514d6c458bSopenharmony_ci * @tc.type: FUNC
1524d6c458bSopenharmony_ci */
1534d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessRunCmdTest001, testing::ext::TestSize.Level0)
1544d6c458bSopenharmony_ci{
1554d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
1564d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
1574d6c458bSopenharmony_ci
1584d6c458bSopenharmony_ci    std::string command("each abc");
1594d6c458bSopenharmony_ci    napi_value temp = nullptr;
1604d6c458bSopenharmony_ci    napi_create_string_utf8(env, command.c_str(), command.length(), &temp);
1614d6c458bSopenharmony_ci
1624d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::ChildProcess childprocess = RunCommand(env, temp, nullptr);
1634d6c458bSopenharmony_ci
1644d6c458bSopenharmony_ci    napi_value output = childprocess.GetOutput(env);
1654d6c458bSopenharmony_ci    bool res = false;
1664d6c458bSopenharmony_ci    napi_is_promise(env, output, &res);
1674d6c458bSopenharmony_ci    ASSERT_TRUE(res);
1684d6c458bSopenharmony_ci}
1694d6c458bSopenharmony_ci
1704d6c458bSopenharmony_ci/**
1714d6c458bSopenharmony_ci * @tc.name: ProcessRunCmdTest002
1724d6c458bSopenharmony_ci * @tc.desc: Test process RunCmd fork process.
1734d6c458bSopenharmony_ci * @tc.type: FUNC
1744d6c458bSopenharmony_ci */
1754d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessRunCmdTest002, testing::ext::TestSize.Level0)
1764d6c458bSopenharmony_ci{
1774d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
1784d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
1794d6c458bSopenharmony_ci
1804d6c458bSopenharmony_ci    std::string command("mkdir test.txt");
1814d6c458bSopenharmony_ci    napi_value temp = nullptr;
1824d6c458bSopenharmony_ci    napi_create_string_utf8(env, command.c_str(), command.length(), &temp);
1834d6c458bSopenharmony_ci
1844d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::ChildProcess childprocess = RunCommand(env, temp, nullptr);
1854d6c458bSopenharmony_ci
1864d6c458bSopenharmony_ci    napi_value errorOutput = childprocess.GetErrorOutput(env);
1874d6c458bSopenharmony_ci    bool res = false;
1884d6c458bSopenharmony_ci    napi_is_promise(env, errorOutput, &res);
1894d6c458bSopenharmony_ci    ASSERT_TRUE(res);
1904d6c458bSopenharmony_ci}
1914d6c458bSopenharmony_ci
1924d6c458bSopenharmony_ci/**
1934d6c458bSopenharmony_ci * @tc.name: ProcessGetUidTest001
1944d6c458bSopenharmony_ci * @tc.desc: Test process uid.
1954d6c458bSopenharmony_ci * @tc.type: FUNC
1964d6c458bSopenharmony_ci */
1974d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessGetUidTest001, testing::ext::TestSize.Level0)
1984d6c458bSopenharmony_ci{
1994d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
2004d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
2014d6c458bSopenharmony_ci    napi_value napiUid = process.GetUid(env);
2024d6c458bSopenharmony_ci    int32_t uid = 0;
2034d6c458bSopenharmony_ci    napi_get_value_int32(env, napiUid, &uid);
2044d6c458bSopenharmony_ci    bool res = false;
2054d6c458bSopenharmony_ci    if (uid >= 0) {
2064d6c458bSopenharmony_ci        res = true;
2074d6c458bSopenharmony_ci    }
2084d6c458bSopenharmony_ci    ASSERT_TRUE(res);
2094d6c458bSopenharmony_ci}
2104d6c458bSopenharmony_ci
2114d6c458bSopenharmony_ci/**
2124d6c458bSopenharmony_ci * @tc.name: ProcessGetGidTest001
2134d6c458bSopenharmony_ci * @tc.desc: Test process gid.
2144d6c458bSopenharmony_ci * @tc.type: FUNC
2154d6c458bSopenharmony_ci */
2164d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessGetGidTest001, testing::ext::TestSize.Level0)
2174d6c458bSopenharmony_ci{
2184d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
2194d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
2204d6c458bSopenharmony_ci    napi_value napiGid = process.GetGid(env);
2214d6c458bSopenharmony_ci    int32_t gid = 0;
2224d6c458bSopenharmony_ci    napi_get_value_int32(env, napiGid, &gid);
2234d6c458bSopenharmony_ci    bool res = false;
2244d6c458bSopenharmony_ci    if (gid >= 0) {
2254d6c458bSopenharmony_ci        res = true;
2264d6c458bSopenharmony_ci    }
2274d6c458bSopenharmony_ci    ASSERT_TRUE(res);
2284d6c458bSopenharmony_ci}
2294d6c458bSopenharmony_ci
2304d6c458bSopenharmony_ci/**
2314d6c458bSopenharmony_ci * @tc.name: ProcessGetEUidTest001
2324d6c458bSopenharmony_ci * @tc.desc: Test process euid.
2334d6c458bSopenharmony_ci * @tc.type: FUNC
2344d6c458bSopenharmony_ci */
2354d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessGetEUidTest001, testing::ext::TestSize.Level0)
2364d6c458bSopenharmony_ci{
2374d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
2384d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
2394d6c458bSopenharmony_ci    napi_value napiEuid = process.GetEUid(env);
2404d6c458bSopenharmony_ci    int32_t euid = 0;
2414d6c458bSopenharmony_ci    napi_get_value_int32(env, napiEuid, &euid);
2424d6c458bSopenharmony_ci    bool res = false;
2434d6c458bSopenharmony_ci    if (euid >= 0) {
2444d6c458bSopenharmony_ci        res = true;
2454d6c458bSopenharmony_ci    }
2464d6c458bSopenharmony_ci    ASSERT_TRUE(res);
2474d6c458bSopenharmony_ci}
2484d6c458bSopenharmony_ci
2494d6c458bSopenharmony_ci/**
2504d6c458bSopenharmony_ci * @tc.name: ProcessGetEGidTest001
2514d6c458bSopenharmony_ci * @tc.desc: Test process egid.
2524d6c458bSopenharmony_ci * @tc.type: FUNC
2534d6c458bSopenharmony_ci */
2544d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessGetEGidTest001, testing::ext::TestSize.Level0)
2554d6c458bSopenharmony_ci{
2564d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
2574d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
2584d6c458bSopenharmony_ci    napi_value napiEgid = process.GetEGid(env);
2594d6c458bSopenharmony_ci    int32_t egid = 0;
2604d6c458bSopenharmony_ci    napi_get_value_int32(env, napiEgid, &egid);
2614d6c458bSopenharmony_ci    bool res = false;
2624d6c458bSopenharmony_ci    if (egid >= 0) {
2634d6c458bSopenharmony_ci        res = true;
2644d6c458bSopenharmony_ci    }
2654d6c458bSopenharmony_ci    ASSERT_TRUE(res);
2664d6c458bSopenharmony_ci}
2674d6c458bSopenharmony_ci
2684d6c458bSopenharmony_ci/**
2694d6c458bSopenharmony_ci * @tc.name: ProcessGetPidTest001
2704d6c458bSopenharmony_ci * @tc.desc: Test process pid.
2714d6c458bSopenharmony_ci * @tc.type: FUNC
2724d6c458bSopenharmony_ci */
2734d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessGetPidTest001, testing::ext::TestSize.Level0)
2744d6c458bSopenharmony_ci{
2754d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
2764d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
2774d6c458bSopenharmony_ci    napi_value napiPid = process.GetPid(env);
2784d6c458bSopenharmony_ci    int32_t pid = 0;
2794d6c458bSopenharmony_ci    napi_get_value_int32(env, napiPid, &pid);
2804d6c458bSopenharmony_ci    bool res = false;
2814d6c458bSopenharmony_ci    if (pid > 0) {
2824d6c458bSopenharmony_ci        res = true;
2834d6c458bSopenharmony_ci    }
2844d6c458bSopenharmony_ci    ASSERT_TRUE(res);
2854d6c458bSopenharmony_ci}
2864d6c458bSopenharmony_ci
2874d6c458bSopenharmony_ci/**
2884d6c458bSopenharmony_ci * @tc.name: ProcessGetPidTest001
2894d6c458bSopenharmony_ci * @tc.desc: Test process ppid.
2904d6c458bSopenharmony_ci * @tc.type: FUNC
2914d6c458bSopenharmony_ci */
2924d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessGetPpidTest001, testing::ext::TestSize.Level0)
2934d6c458bSopenharmony_ci{
2944d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
2954d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
2964d6c458bSopenharmony_ci    napi_value napiPpid = process.GetPpid(env);
2974d6c458bSopenharmony_ci    int32_t ppid = 0;
2984d6c458bSopenharmony_ci    napi_get_value_int32(env, napiPpid, &ppid);
2994d6c458bSopenharmony_ci    bool res = false;
3004d6c458bSopenharmony_ci    if (ppid > 0) {
3014d6c458bSopenharmony_ci        res = true;
3024d6c458bSopenharmony_ci    }
3034d6c458bSopenharmony_ci    ASSERT_TRUE(res);
3044d6c458bSopenharmony_ci}
3054d6c458bSopenharmony_ci
3064d6c458bSopenharmony_ci/**
3074d6c458bSopenharmony_ci * @tc.name:childProcessPpidTest001
3084d6c458bSopenharmony_ci * @tc.desc: test get the parent process ID.
3094d6c458bSopenharmony_ci * @tc.type: FUNC
3104d6c458bSopenharmony_ci */
3114d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, childProcessPpidTest001, testing::ext::TestSize.Level0)
3124d6c458bSopenharmony_ci{
3134d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
3144d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
3154d6c458bSopenharmony_ci
3164d6c458bSopenharmony_ci    std::string command("ls; sleep 1s;");
3174d6c458bSopenharmony_ci    napi_value temp = nullptr;
3184d6c458bSopenharmony_ci    napi_create_string_utf8(env, command.c_str(), command.length(), &temp);
3194d6c458bSopenharmony_ci
3204d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::ChildProcess childprocess = RunCommand(env, temp, nullptr);
3214d6c458bSopenharmony_ci    napi_value result = childprocess.Getppid(env);
3224d6c458bSopenharmony_ci    int32_t ppid = 0;
3234d6c458bSopenharmony_ci    napi_get_value_int32(env, result, &ppid);
3244d6c458bSopenharmony_ci    bool res = false;
3254d6c458bSopenharmony_ci    if (ppid >= 0) {
3264d6c458bSopenharmony_ci        res = true;
3274d6c458bSopenharmony_ci    }
3284d6c458bSopenharmony_ci    ASSERT_TRUE(res);
3294d6c458bSopenharmony_ci}
3304d6c458bSopenharmony_ci
3314d6c458bSopenharmony_ci/**
3324d6c458bSopenharmony_ci * @tc.name:childProcesspidTest001
3334d6c458bSopenharmony_ci * @tc.desc: test get the specific pid value.
3344d6c458bSopenharmony_ci * @tc.type: FUNC
3354d6c458bSopenharmony_ci */
3364d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, childProcesspidTest001, testing::ext::TestSize.Level0)
3374d6c458bSopenharmony_ci{
3384d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
3394d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
3404d6c458bSopenharmony_ci
3414d6c458bSopenharmony_ci    std::string command("ls; sleep 1s;");
3424d6c458bSopenharmony_ci    napi_value temp = nullptr;
3434d6c458bSopenharmony_ci    napi_create_string_utf8(env, command.c_str(), command.length(), &temp);
3444d6c458bSopenharmony_ci
3454d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::ChildProcess childprocess = RunCommand(env, temp, nullptr);
3464d6c458bSopenharmony_ci    napi_value result = childprocess.Getpid(env);
3474d6c458bSopenharmony_ci    int32_t pid = 0;
3484d6c458bSopenharmony_ci    napi_get_value_int32(env, result, &pid);
3494d6c458bSopenharmony_ci    bool res = false;
3504d6c458bSopenharmony_ci    if (pid >= 0) {
3514d6c458bSopenharmony_ci        res = true;
3524d6c458bSopenharmony_ci    }
3534d6c458bSopenharmony_ci    ASSERT_TRUE(res);
3544d6c458bSopenharmony_ci}
3554d6c458bSopenharmony_ci
3564d6c458bSopenharmony_ci/**
3574d6c458bSopenharmony_ci * @tc.name: ProcessGetGroupsTest001
3584d6c458bSopenharmony_ci * @tc.desc: Test process groups.
3594d6c458bSopenharmony_ci * @tc.type: FUNC
3604d6c458bSopenharmony_ci */
3614d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessGetGroupsTest001, testing::ext::TestSize.Level0)
3624d6c458bSopenharmony_ci{
3634d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
3644d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
3654d6c458bSopenharmony_ci    napi_value element = nullptr;
3664d6c458bSopenharmony_ci    napi_value groups = process.GetGroups(env);
3674d6c458bSopenharmony_ci    napi_get_element(env, groups, 1, &element);
3684d6c458bSopenharmony_ci    int32_t indexOne = 0;
3694d6c458bSopenharmony_ci    napi_get_value_int32(env, element, &indexOne);
3704d6c458bSopenharmony_ci    bool res = false;
3714d6c458bSopenharmony_ci    if (indexOne >= 0) {
3724d6c458bSopenharmony_ci        res = true;
3734d6c458bSopenharmony_ci    }
3744d6c458bSopenharmony_ci    ASSERT_TRUE(res);
3754d6c458bSopenharmony_ci}
3764d6c458bSopenharmony_ci
3774d6c458bSopenharmony_ci/**
3784d6c458bSopenharmony_ci * @tc.name: ProcessChdirTest001
3794d6c458bSopenharmony_ci * @tc.desc: Test process gid.
3804d6c458bSopenharmony_ci * @tc.type: FUNC
3814d6c458bSopenharmony_ci */
3824d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessChdirTest001, testing::ext::TestSize.Level0)
3834d6c458bSopenharmony_ci{
3844d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
3854d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
3864d6c458bSopenharmony_ci    std::string catalogue = "/system/lib";
3874d6c458bSopenharmony_ci    napi_value temp = nullptr;
3884d6c458bSopenharmony_ci    napi_create_string_utf8(env, catalogue.c_str(), catalogue.length(), &temp);
3894d6c458bSopenharmony_ci    process.Chdir(env, temp);
3904d6c458bSopenharmony_ci    napi_value cwd = process.Cwd(env);
3914d6c458bSopenharmony_ci    size_t bufferSize = 0;
3924d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, cwd, nullptr, 0, &bufferSize) != napi_ok) {
3934d6c458bSopenharmony_ci        HILOG_ERROR("can not get str size");
3944d6c458bSopenharmony_ci    }
3954d6c458bSopenharmony_ci    std::string result = "";
3964d6c458bSopenharmony_ci    result.reserve(bufferSize + 1);
3974d6c458bSopenharmony_ci    result.resize(bufferSize);
3984d6c458bSopenharmony_ci    if (napi_get_value_string_utf8(env, cwd, result.data(), bufferSize + 1, &bufferSize) != napi_ok) {
3994d6c458bSopenharmony_ci        HILOG_ERROR("can not get str value");
4004d6c458bSopenharmony_ci    }
4014d6c458bSopenharmony_ci    std::string tag = "";
4024d6c458bSopenharmony_ci    tag = result;
4034d6c458bSopenharmony_ci    bool res = false;
4044d6c458bSopenharmony_ci    if (tag == catalogue) {
4054d6c458bSopenharmony_ci        res = true;
4064d6c458bSopenharmony_ci    }
4074d6c458bSopenharmony_ci    ASSERT_TRUE(res);
4084d6c458bSopenharmony_ci}
4094d6c458bSopenharmony_ci
4104d6c458bSopenharmony_ci/**
4114d6c458bSopenharmony_ci * @tc.name: ProcessOn001
4124d6c458bSopenharmony_ci * @tc.desc: Test process gid.
4134d6c458bSopenharmony_ci * @tc.type: FUNC
4144d6c458bSopenharmony_ci */
4154d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessOn001, testing::ext::TestSize.Level0)
4164d6c458bSopenharmony_ci{
4174d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
4184d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
4194d6c458bSopenharmony_ci    napi_value temp = nullptr;
4204d6c458bSopenharmony_ci    std::string cbNameEvent = "add";
4214d6c458bSopenharmony_ci    napi_create_string_utf8(env, cbNameEvent.c_str(), cbNameEvent.length(), &temp);
4224d6c458bSopenharmony_ci    std::string cbName = "cbMethod";
4234d6c458bSopenharmony_ci    napi_value cb = nullptr;
4244d6c458bSopenharmony_ci    napi_create_function(env, cbName.c_str(), cbName.size(), Method, nullptr, &cb);
4254d6c458bSopenharmony_ci    process.On(env, temp, cb);
4264d6c458bSopenharmony_ci    napi_value convertResult = nullptr;
4274d6c458bSopenharmony_ci    convertResult = process.Off(env, temp);
4284d6c458bSopenharmony_ci    bool res = false;
4294d6c458bSopenharmony_ci    napi_get_value_bool(env, convertResult, &res);
4304d6c458bSopenharmony_ci    ASSERT_FALSE(res);
4314d6c458bSopenharmony_ci}
4324d6c458bSopenharmony_ci
4334d6c458bSopenharmony_ci/**
4344d6c458bSopenharmony_ci * @tc.name: ProcessOn002
4354d6c458bSopenharmony_ci * @tc.desc: Test process gid.
4364d6c458bSopenharmony_ci * @tc.type: FUNC
4374d6c458bSopenharmony_ci */
4384d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessOn002, testing::ext::TestSize.Level0)
4394d6c458bSopenharmony_ci{
4404d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
4414d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
4424d6c458bSopenharmony_ci    napi_value temp = nullptr;
4434d6c458bSopenharmony_ci    std::string cbNameEvent = "UnHandleRejection";
4444d6c458bSopenharmony_ci    napi_create_string_utf8(env, cbNameEvent.c_str(), cbNameEvent.length(), &temp);
4454d6c458bSopenharmony_ci    std::string cbName = "cbMethod";
4464d6c458bSopenharmony_ci    napi_value cb = nullptr;
4474d6c458bSopenharmony_ci    napi_create_function(env, cbName.c_str(), cbName.size(), Method, nullptr, &cb);
4484d6c458bSopenharmony_ci    process.On(env, temp, cb);
4494d6c458bSopenharmony_ci    napi_value convertResult = nullptr;
4504d6c458bSopenharmony_ci    convertResult = process.Off(env, temp);
4514d6c458bSopenharmony_ci    bool res = false;
4524d6c458bSopenharmony_ci    napi_get_value_bool(env, convertResult, &res);
4534d6c458bSopenharmony_ci    ASSERT_TRUE(res);
4544d6c458bSopenharmony_ci}
4554d6c458bSopenharmony_ci
4564d6c458bSopenharmony_ci/**
4574d6c458bSopenharmony_ci * @tc.name: ProcessGetTid001
4584d6c458bSopenharmony_ci * @tc.desc: Test process gid.
4594d6c458bSopenharmony_ci * @tc.type: FUNC
4604d6c458bSopenharmony_ci */
4614d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessGetTid001, testing::ext::TestSize.Level0)
4624d6c458bSopenharmony_ci{
4634d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
4644d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
4654d6c458bSopenharmony_ci    napi_value napiTid = process.GetTid(env);
4664d6c458bSopenharmony_ci    int32_t tid = 0;
4674d6c458bSopenharmony_ci    napi_get_value_int32(env, napiTid, &tid);
4684d6c458bSopenharmony_ci    bool res = false;
4694d6c458bSopenharmony_ci    if (tid != 0) {
4704d6c458bSopenharmony_ci        res = true;
4714d6c458bSopenharmony_ci    }
4724d6c458bSopenharmony_ci    ASSERT_TRUE(res);
4734d6c458bSopenharmony_ci}
4744d6c458bSopenharmony_ci
4754d6c458bSopenharmony_ci/**
4764d6c458bSopenharmony_ci * @tc.name: ProcessIsIsolatedProcess001
4774d6c458bSopenharmony_ci * @tc.desc: test whether the process is isolated.
4784d6c458bSopenharmony_ci * @tc.type: FUNC
4794d6c458bSopenharmony_ci */
4804d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessIsolatedProcess001, testing::ext::TestSize.Level0)
4814d6c458bSopenharmony_ci{
4824d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
4834d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
4844d6c458bSopenharmony_ci    napi_value result = process.IsIsolatedProcess(env);
4854d6c458bSopenharmony_ci    bool res = false;
4864d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &res);
4874d6c458bSopenharmony_ci    if (res) {
4884d6c458bSopenharmony_ci        ASSERT_TRUE(res);
4894d6c458bSopenharmony_ci    } else {
4904d6c458bSopenharmony_ci        ASSERT_FALSE(res);
4914d6c458bSopenharmony_ci    }
4924d6c458bSopenharmony_ci}
4934d6c458bSopenharmony_ci
4944d6c458bSopenharmony_ci/**
4954d6c458bSopenharmony_ci * @tc.name: ProcessIsAppUid001
4964d6c458bSopenharmony_ci * @tc.desc: test whether the process is AppUid.
4974d6c458bSopenharmony_ci * @tc.type: FUNC
4984d6c458bSopenharmony_ci */
4994d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessIsAppUid001, testing::ext::TestSize.Level0)
5004d6c458bSopenharmony_ci{
5014d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
5024d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
5034d6c458bSopenharmony_ci    napi_value uid = nullptr;
5044d6c458bSopenharmony_ci    napi_create_int32(env, 9, &uid);
5054d6c458bSopenharmony_ci    napi_value result = process.IsAppUid(env, uid);
5064d6c458bSopenharmony_ci    bool res = false;
5074d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &res);
5084d6c458bSopenharmony_ci    ASSERT_FALSE(res);
5094d6c458bSopenharmony_ci}
5104d6c458bSopenharmony_ci
5114d6c458bSopenharmony_ci/**
5124d6c458bSopenharmony_ci * @tc.name: ProcessIs64Bit001
5134d6c458bSopenharmony_ci * @tc.desc: test the operating environment is 64-bit.
5144d6c458bSopenharmony_ci * @tc.type: FUNC
5154d6c458bSopenharmony_ci */
5164d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessIs64Bit001, testing::ext::TestSize.Level0)
5174d6c458bSopenharmony_ci{
5184d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
5194d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
5204d6c458bSopenharmony_ci    napi_value result = process.Is64Bit(env);
5214d6c458bSopenharmony_ci    bool res = false;
5224d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &res);
5234d6c458bSopenharmony_ci    if (res) {
5244d6c458bSopenharmony_ci        ASSERT_TRUE(res);
5254d6c458bSopenharmony_ci    } else {
5264d6c458bSopenharmony_ci        ASSERT_FALSE(res);
5274d6c458bSopenharmony_ci    }
5284d6c458bSopenharmony_ci}
5294d6c458bSopenharmony_ci
5304d6c458bSopenharmony_ci/**
5314d6c458bSopenharmony_ci * @tc.name: ProcessGetEnvironmentVar001
5324d6c458bSopenharmony_ci * @tc.desc: test get the value corresponding to the environment variable.
5334d6c458bSopenharmony_ci * @tc.type: FUNC
5344d6c458bSopenharmony_ci */
5354d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessGetEnvironmentVar001, testing::ext::TestSize.Level0)
5364d6c458bSopenharmony_ci{
5374d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
5384d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
5394d6c458bSopenharmony_ci    napi_value temp = nullptr;
5404d6c458bSopenharmony_ci    std::string envVar = "PATH";
5414d6c458bSopenharmony_ci    napi_create_string_utf8(env, envVar.c_str(), envVar.length(), &temp);
5424d6c458bSopenharmony_ci    napi_value result = process.GetEnvironmentVar(env, temp);
5434d6c458bSopenharmony_ci    napi_valuetype valuetype;
5444d6c458bSopenharmony_ci    napi_typeof(env, result, &valuetype);
5454d6c458bSopenharmony_ci    bool res = false;
5464d6c458bSopenharmony_ci    if (valuetype == napi_string) {
5474d6c458bSopenharmony_ci        res = true;
5484d6c458bSopenharmony_ci    }
5494d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &res);
5504d6c458bSopenharmony_ci    ASSERT_TRUE(res);
5514d6c458bSopenharmony_ci}
5524d6c458bSopenharmony_ci
5534d6c458bSopenharmony_ci/**
5544d6c458bSopenharmony_ci * @tc.name: ProcesGetUidForName001
5554d6c458bSopenharmony_ci * @tc.desc: test Get process uid by process name.
5564d6c458bSopenharmony_ci * @tc.type: FUNC
5574d6c458bSopenharmony_ci */
5584d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcesGetUidForName001, testing::ext::TestSize.Level0)
5594d6c458bSopenharmony_ci{
5604d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
5614d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
5624d6c458bSopenharmony_ci    napi_value temp = nullptr;
5634d6c458bSopenharmony_ci    std::string user = "root";
5644d6c458bSopenharmony_ci    napi_create_string_utf8(env, user.c_str(), user.length(), &temp);
5654d6c458bSopenharmony_ci    napi_value result = process.GetUidForName(env, temp);
5664d6c458bSopenharmony_ci    int32_t num = 0;
5674d6c458bSopenharmony_ci    napi_get_value_int32(env, result, &num);
5684d6c458bSopenharmony_ci    bool res = false;
5694d6c458bSopenharmony_ci    if (num >= 0) {
5704d6c458bSopenharmony_ci        res = true;
5714d6c458bSopenharmony_ci    }
5724d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &res);
5734d6c458bSopenharmony_ci    ASSERT_TRUE(res);
5744d6c458bSopenharmony_ci}
5754d6c458bSopenharmony_ci
5764d6c458bSopenharmony_ci/**
5774d6c458bSopenharmony_ci * @tc.name: ProcesGetUidForName002
5784d6c458bSopenharmony_ci * @tc.desc: test Get process uid by process name.
5794d6c458bSopenharmony_ci * @tc.type: FUNC
5804d6c458bSopenharmony_ci */
5814d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcesGetUidForName002, testing::ext::TestSize.Level0)
5824d6c458bSopenharmony_ci{
5834d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
5844d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
5854d6c458bSopenharmony_ci    napi_value temp = nullptr;
5864d6c458bSopenharmony_ci    std::string user = "1234";
5874d6c458bSopenharmony_ci    napi_create_string_utf8(env, user.c_str(), user.length(), &temp);
5884d6c458bSopenharmony_ci    napi_value result = process.GetUidForName(env, temp);
5894d6c458bSopenharmony_ci    int32_t num = 0;
5904d6c458bSopenharmony_ci    napi_get_value_int32(env, result, &num);
5914d6c458bSopenharmony_ci    bool res = false;
5924d6c458bSopenharmony_ci    if (num == -1) {
5934d6c458bSopenharmony_ci        res = true;
5944d6c458bSopenharmony_ci    }
5954d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &res);
5964d6c458bSopenharmony_ci    ASSERT_TRUE(res);
5974d6c458bSopenharmony_ci}
5984d6c458bSopenharmony_ci
5994d6c458bSopenharmony_ci/**
6004d6c458bSopenharmony_ci * @tc.name: ProcesGetThreadPriority001
6014d6c458bSopenharmony_ci * @tc.desc: test Get thread priority based on specified tid.
6024d6c458bSopenharmony_ci * @tc.type: FUNC
6034d6c458bSopenharmony_ci */
6044d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcesGetThreadPriority001, testing::ext::TestSize.Level0)
6054d6c458bSopenharmony_ci{
6064d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
6074d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
6084d6c458bSopenharmony_ci    napi_value napiTid = process.GetTid(env);
6094d6c458bSopenharmony_ci    napi_value result = process.GetThreadPriority(env, napiTid);
6104d6c458bSopenharmony_ci    napi_valuetype valuetype;
6114d6c458bSopenharmony_ci    napi_typeof(env, result, &valuetype);
6124d6c458bSopenharmony_ci    bool res = false;
6134d6c458bSopenharmony_ci    if (valuetype == napi_number) {
6144d6c458bSopenharmony_ci        res = true;
6154d6c458bSopenharmony_ci    }
6164d6c458bSopenharmony_ci    ASSERT_TRUE(res);
6174d6c458bSopenharmony_ci}
6184d6c458bSopenharmony_ci
6194d6c458bSopenharmony_ci/**
6204d6c458bSopenharmony_ci * @tc.name: ProcesGetGetStartRealtime001
6214d6c458bSopenharmony_ci * @tc.desc: test Get the real-time elapsed time from system startup to process startup.
6224d6c458bSopenharmony_ci * @tc.type: FUNC
6234d6c458bSopenharmony_ci */
6244d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcesGetGetStartRealtime001, testing::ext::TestSize.Level0)
6254d6c458bSopenharmony_ci{
6264d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
6274d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
6284d6c458bSopenharmony_ci    napi_value result = process.GetStartRealtime(env);
6294d6c458bSopenharmony_ci    double num = 0;
6304d6c458bSopenharmony_ci    napi_get_value_double(env, result, &num);
6314d6c458bSopenharmony_ci    bool res = false;
6324d6c458bSopenharmony_ci    if (num != 0) {
6334d6c458bSopenharmony_ci        res = true;
6344d6c458bSopenharmony_ci    }
6354d6c458bSopenharmony_ci    ASSERT_TRUE(res);
6364d6c458bSopenharmony_ci}
6374d6c458bSopenharmony_ci
6384d6c458bSopenharmony_ci/**
6394d6c458bSopenharmony_ci * @tc.name: ProcesGetPastCputime001
6404d6c458bSopenharmony_ci * @tc.desc: test Get the CPU time from the process startup to the current time.
6414d6c458bSopenharmony_ci * @tc.type: FUNC
6424d6c458bSopenharmony_ci */
6434d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcesGetPastCputime001, testing::ext::TestSize.Level0)
6444d6c458bSopenharmony_ci{
6454d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
6464d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
6474d6c458bSopenharmony_ci    napi_value result = process.GetPastCputime(env);
6484d6c458bSopenharmony_ci    int32_t num = 0;
6494d6c458bSopenharmony_ci    napi_get_value_int32(env, result, &num);
6504d6c458bSopenharmony_ci    bool res = false;
6514d6c458bSopenharmony_ci    if (num != 0) {
6524d6c458bSopenharmony_ci        res = true;
6534d6c458bSopenharmony_ci    }
6544d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &res);
6554d6c458bSopenharmony_ci    ASSERT_TRUE(res);
6564d6c458bSopenharmony_ci}
6574d6c458bSopenharmony_ci
6584d6c458bSopenharmony_ci/**
6594d6c458bSopenharmony_ci * @tc.name: ProcesGetSystemConfig001
6604d6c458bSopenharmony_ci * @tc.desc: test Get system configuration information.
6614d6c458bSopenharmony_ci * @tc.type: FUNC
6624d6c458bSopenharmony_ci */
6634d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcesGetSystemConfig001, testing::ext::TestSize.Level0)
6644d6c458bSopenharmony_ci{
6654d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
6664d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
6674d6c458bSopenharmony_ci    napi_value config = nullptr;
6684d6c458bSopenharmony_ci    napi_create_int32(env, _SC_NPROCESSORS_CONF, &config);
6694d6c458bSopenharmony_ci    napi_value result = process.GetSystemConfig(env, config);
6704d6c458bSopenharmony_ci    int32_t num = 0;
6714d6c458bSopenharmony_ci    napi_get_value_int32(env, result, &num);
6724d6c458bSopenharmony_ci    bool res = false;
6734d6c458bSopenharmony_ci    if (num != 0) {
6744d6c458bSopenharmony_ci        res = true;
6754d6c458bSopenharmony_ci    }
6764d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &res);
6774d6c458bSopenharmony_ci    ASSERT_TRUE(res);
6784d6c458bSopenharmony_ci}
6794d6c458bSopenharmony_ci
6804d6c458bSopenharmony_ci/**
6814d6c458bSopenharmony_ci * @tc.name: ProcessCloseTest001
6824d6c458bSopenharmony_ci * @tc.desc: Close the target process.
6834d6c458bSopenharmony_ci * @tc.type: FUNC
6844d6c458bSopenharmony_ci */
6854d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, ProcessCloseTest001, testing::ext::TestSize.Level0)
6864d6c458bSopenharmony_ci{
6874d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
6884d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
6894d6c458bSopenharmony_ci
6904d6c458bSopenharmony_ci    std::string command("ls; sleep 1");
6914d6c458bSopenharmony_ci    napi_value temp = nullptr;
6924d6c458bSopenharmony_ci    napi_create_string_utf8(env, command.c_str(), command.length(), &temp);
6934d6c458bSopenharmony_ci
6944d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::ChildProcess childprocess = RunCommand(env, temp, nullptr);
6954d6c458bSopenharmony_ci    childprocess.Wait(env);
6964d6c458bSopenharmony_ci    childprocess.Close();
6974d6c458bSopenharmony_ci    napi_value exitCode = childprocess.GetExitCode(env);
6984d6c458bSopenharmony_ci    int32_t num = 0;
6994d6c458bSopenharmony_ci    napi_value result = nullptr;
7004d6c458bSopenharmony_ci    napi_get_value_int32(env, exitCode, &num);
7014d6c458bSopenharmony_ci    bool res = false;
7024d6c458bSopenharmony_ci    if (num == 0) {
7034d6c458bSopenharmony_ci        res = true;
7044d6c458bSopenharmony_ci    }
7054d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &res);
7064d6c458bSopenharmony_ci    ASSERT_TRUE(res);
7074d6c458bSopenharmony_ci}
7084d6c458bSopenharmony_ci
7094d6c458bSopenharmony_ci/**
7104d6c458bSopenharmony_ci * @tc.name:childProcessKillTest001
7114d6c458bSopenharmony_ci * @tc.desc: Send a signal to process.
7124d6c458bSopenharmony_ci * @tc.type: FUNC
7134d6c458bSopenharmony_ci */
7144d6c458bSopenharmony_ciHWTEST_F(NativeEngineTest, childProcessKillTest001, testing::ext::TestSize.Level0)
7154d6c458bSopenharmony_ci{
7164d6c458bSopenharmony_ci    napi_env env = (napi_env)engine_;
7174d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::Process process;
7184d6c458bSopenharmony_ci
7194d6c458bSopenharmony_ci    std::string command("ls; sleep 1s;");
7204d6c458bSopenharmony_ci    napi_value temp = nullptr;
7214d6c458bSopenharmony_ci    napi_create_string_utf8(env, command.c_str(), command.length(), &temp);
7224d6c458bSopenharmony_ci
7234d6c458bSopenharmony_ci    OHOS::JsSysModule::Process::ChildProcess childprocess = RunCommand(env, temp, nullptr);
7244d6c458bSopenharmony_ci    childprocess.Wait(env);
7254d6c458bSopenharmony_ci    napi_value signo = nullptr;
7264d6c458bSopenharmony_ci    napi_create_int32(env, 9, &signo);
7274d6c458bSopenharmony_ci    childprocess.Kill(env, signo);
7284d6c458bSopenharmony_ci    napi_value result = childprocess.GetKilled(env);
7294d6c458bSopenharmony_ci    bool res = false;
7304d6c458bSopenharmony_ci    napi_get_value_bool(env, result, &res);
7314d6c458bSopenharmony_ci    ASSERT_FALSE(res);
7324d6c458bSopenharmony_ci}