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}