169570cc8Sopenharmony_ci/*
269570cc8Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
369570cc8Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
469570cc8Sopenharmony_ci * you may not use this file except in compliance with the License.
569570cc8Sopenharmony_ci * You may obtain a copy of the License at
669570cc8Sopenharmony_ci *
769570cc8Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
869570cc8Sopenharmony_ci *
969570cc8Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1069570cc8Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1169570cc8Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1269570cc8Sopenharmony_ci * See the License for the specific language governing permissions and
1369570cc8Sopenharmony_ci * limitations under the License.
1469570cc8Sopenharmony_ci */
1569570cc8Sopenharmony_ci#include <gtest/gtest.h>
1669570cc8Sopenharmony_ci
1769570cc8Sopenharmony_ci#include <cstdio>
1869570cc8Sopenharmony_ci#include <fcntl.h>
1969570cc8Sopenharmony_ci#include <random>
2069570cc8Sopenharmony_ci#include <unistd.h>
2169570cc8Sopenharmony_ci
2269570cc8Sopenharmony_ci#include "appspawn.h"
2369570cc8Sopenharmony_ci#include "appspawn_msg.h"
2469570cc8Sopenharmony_ci#include "appspawn_utils.h"
2569570cc8Sopenharmony_ci#include "securec.h"
2669570cc8Sopenharmony_ci
2769570cc8Sopenharmony_ci#include "appspawn_test_cmder.h"
2869570cc8Sopenharmony_ci
2969570cc8Sopenharmony_ciusing namespace testing;
3069570cc8Sopenharmony_ciusing namespace testing::ext;
3169570cc8Sopenharmony_ci
3269570cc8Sopenharmony_cinamespace OHOS {
3369570cc8Sopenharmony_cinamespace AppSpawn {
3469570cc8Sopenharmony_cinamespace {
3569570cc8Sopenharmony_cistatic const int32_t DEFAULT_PID = 0;
3669570cc8Sopenharmony_cistatic const int32_t FILE_PATH_SIZE = 50;
3769570cc8Sopenharmony_cistatic const int32_t BUFFER_SIZE = 512;
3869570cc8Sopenharmony_cistatic const int32_t BASE_TYPE = 10;
3969570cc8Sopenharmony_cistatic const int32_t CONNECT_RETRY_DELAY = 50 * 1000;
4069570cc8Sopenharmony_cistatic const int32_t CONNECT_RETRY_MAX_TIMES = 5;
4169570cc8Sopenharmony_cistatic const int32_t UID_POSITION_MOVE = 5;
4269570cc8Sopenharmony_cistatic const int32_t GID_POSITION_MOVE = 5;
4369570cc8Sopenharmony_cistatic const int32_t GROUPS_POSITION_MOVE = 8;
4469570cc8Sopenharmony_cistatic const char *DELIMITER_SPACE = " ";
4569570cc8Sopenharmony_cistatic const char *DELIMITER_NEWLINE = "\n";
4669570cc8Sopenharmony_cistatic char g_buffer[BUFFER_SIZE + 1] = {};
4769570cc8Sopenharmony_ci}  // namespace
4869570cc8Sopenharmony_ci
4969570cc8Sopenharmony_cibool CheckFileIsExists(const char *filepath)
5069570cc8Sopenharmony_ci{
5169570cc8Sopenharmony_ci    int32_t retryCount = 0;
5269570cc8Sopenharmony_ci    while ((access(filepath, F_OK) != 0) && (retryCount < CONNECT_RETRY_MAX_TIMES)) {
5369570cc8Sopenharmony_ci        usleep(CONNECT_RETRY_DELAY);
5469570cc8Sopenharmony_ci        retryCount++;
5569570cc8Sopenharmony_ci    }
5669570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "retryCount :" << retryCount << ".";
5769570cc8Sopenharmony_ci    if (retryCount < CONNECT_RETRY_MAX_TIMES) {
5869570cc8Sopenharmony_ci        return true;
5969570cc8Sopenharmony_ci    }
6069570cc8Sopenharmony_ci    return false;
6169570cc8Sopenharmony_ci}
6269570cc8Sopenharmony_ci
6369570cc8Sopenharmony_cibool CheckFileIsNotExists(const char *filepath)
6469570cc8Sopenharmony_ci{
6569570cc8Sopenharmony_ci    int32_t retryCount = 0;
6669570cc8Sopenharmony_ci    while ((access(filepath, F_OK) == 0) && (retryCount < CONNECT_RETRY_MAX_TIMES)) {
6769570cc8Sopenharmony_ci        usleep(CONNECT_RETRY_DELAY);
6869570cc8Sopenharmony_ci        retryCount++;
6969570cc8Sopenharmony_ci    }
7069570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "retryCount :" << retryCount << ".";
7169570cc8Sopenharmony_ci    if (retryCount < CONNECT_RETRY_MAX_TIMES) {
7269570cc8Sopenharmony_ci        return true;
7369570cc8Sopenharmony_ci    }
7469570cc8Sopenharmony_ci    return false;
7569570cc8Sopenharmony_ci}
7669570cc8Sopenharmony_ci
7769570cc8Sopenharmony_cibool ReadFileInfo(char *buffer, const int32_t &pid, const char *fileName)
7869570cc8Sopenharmony_ci{
7969570cc8Sopenharmony_ci    // Set file path
8069570cc8Sopenharmony_ci    char filePath[FILE_PATH_SIZE];
8169570cc8Sopenharmony_ci    if (sprintf_s(filePath, sizeof(filePath), "/proc/%d/%s", pid, fileName) <= 0) {
8269570cc8Sopenharmony_ci        HILOG_ERROR(LOG_CORE, "filePath sprintf_s fail .");
8369570cc8Sopenharmony_ci        return false;
8469570cc8Sopenharmony_ci    }
8569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "ReadFileInfo :" << filePath;
8669570cc8Sopenharmony_ci    if (!CheckFileIsExists(filePath)) {
8769570cc8Sopenharmony_ci        HILOG_ERROR(LOG_CORE, "file %{public}s is not exists .", fileName);
8869570cc8Sopenharmony_ci        return false;
8969570cc8Sopenharmony_ci    }
9069570cc8Sopenharmony_ci    // Open file
9169570cc8Sopenharmony_ci    int fd = open(filePath, O_RDONLY);
9269570cc8Sopenharmony_ci    if (fd == -1) {
9369570cc8Sopenharmony_ci        HILOG_ERROR(LOG_CORE, "file %{public}s open failed . error:%{public}s", fileName, strerror(errno));
9469570cc8Sopenharmony_ci        return false;
9569570cc8Sopenharmony_ci    }
9669570cc8Sopenharmony_ci    // Read file
9769570cc8Sopenharmony_ci    int t = read(fd, buffer, BUFFER_SIZE);
9869570cc8Sopenharmony_ci    if (t <= 0 || buffer == nullptr || t > BUFFER_SIZE) {
9969570cc8Sopenharmony_ci        HILOG_INFO(LOG_CORE, "read proc status file failed.");
10069570cc8Sopenharmony_ci        close(fd);
10169570cc8Sopenharmony_ci        return false;
10269570cc8Sopenharmony_ci    }
10369570cc8Sopenharmony_ci    buffer[t] = '\0';
10469570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "ReadFileInfo buffer :" << buffer;
10569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "buffer:\n %{public}s", buffer);
10669570cc8Sopenharmony_ci    close(fd);
10769570cc8Sopenharmony_ci    return true;
10869570cc8Sopenharmony_ci}
10969570cc8Sopenharmony_ci
11069570cc8Sopenharmony_cibool CheckUid(const int32_t &pid, const int newUid)
11169570cc8Sopenharmony_ci{
11269570cc8Sopenharmony_ci    if (ReadFileInfo(g_buffer, pid, "status")) {
11369570cc8Sopenharmony_ci        GTEST_LOG_(INFO) << "CheckUid pid " << pid << " buffer :" << g_buffer;
11469570cc8Sopenharmony_ci
11569570cc8Sopenharmony_ci        // Move to Uid position
11669570cc8Sopenharmony_ci        char *uidPtr = strstr(g_buffer, "Uid:");
11769570cc8Sopenharmony_ci        if (uidPtr == nullptr) {
11869570cc8Sopenharmony_ci            HILOG_ERROR(LOG_CORE, "get Uid info failed.");
11969570cc8Sopenharmony_ci            return false;
12069570cc8Sopenharmony_ci        }
12169570cc8Sopenharmony_ci        if (strlen(uidPtr) > UID_POSITION_MOVE) {
12269570cc8Sopenharmony_ci            uidPtr = uidPtr + UID_POSITION_MOVE;
12369570cc8Sopenharmony_ci        }
12469570cc8Sopenharmony_ci        int32_t uid = static_cast<int32_t>(strtol(uidPtr, NULL, BASE_TYPE));
12569570cc8Sopenharmony_ci        HILOG_INFO(LOG_CORE, "new proc(%{public}d) uid = %{public}d, setUid=%{public}d.", pid, uid, newUid);
12669570cc8Sopenharmony_ci        if (uid == newUid) {
12769570cc8Sopenharmony_ci            return true;
12869570cc8Sopenharmony_ci        }
12969570cc8Sopenharmony_ci    }
13069570cc8Sopenharmony_ci    return false;
13169570cc8Sopenharmony_ci}
13269570cc8Sopenharmony_ci
13369570cc8Sopenharmony_cibool CheckGid(const int32_t &pid, const int newGid)
13469570cc8Sopenharmony_ci{
13569570cc8Sopenharmony_ci    if (ReadFileInfo(g_buffer, pid, "status")) {
13669570cc8Sopenharmony_ci        GTEST_LOG_(INFO) << "CheckGid pid " << pid << " buffer :" << g_buffer;
13769570cc8Sopenharmony_ci
13869570cc8Sopenharmony_ci        // Move to Gid position
13969570cc8Sopenharmony_ci        char *gidPtr = strstr(g_buffer, "Gid:");
14069570cc8Sopenharmony_ci        if (gidPtr == nullptr) {
14169570cc8Sopenharmony_ci            HILOG_ERROR(LOG_CORE, "get Gid info failed.");
14269570cc8Sopenharmony_ci            return false;
14369570cc8Sopenharmony_ci        }
14469570cc8Sopenharmony_ci        if (strlen(gidPtr) > GID_POSITION_MOVE) {
14569570cc8Sopenharmony_ci            gidPtr = gidPtr + GID_POSITION_MOVE;
14669570cc8Sopenharmony_ci        }
14769570cc8Sopenharmony_ci        if (gidPtr == nullptr) {
14869570cc8Sopenharmony_ci            HILOG_ERROR(LOG_CORE, "get Gid info failed.");
14969570cc8Sopenharmony_ci            return false;
15069570cc8Sopenharmony_ci        }
15169570cc8Sopenharmony_ci        int32_t gid = static_cast<int32_t>(strtol(gidPtr, NULL, BASE_TYPE));
15269570cc8Sopenharmony_ci        HILOG_INFO(LOG_CORE, "new proc(%{public}d) gid = %{public}d, setGid=%{public}d.", pid, gid, newGid);
15369570cc8Sopenharmony_ci        if (gid == newGid) {
15469570cc8Sopenharmony_ci            return true;
15569570cc8Sopenharmony_ci        }
15669570cc8Sopenharmony_ci    }
15769570cc8Sopenharmony_ci    return false;
15869570cc8Sopenharmony_ci}
15969570cc8Sopenharmony_ci
16069570cc8Sopenharmony_cistd::size_t GetGids(const int32_t &pid, std::vector<int32_t> &gids)
16169570cc8Sopenharmony_ci{
16269570cc8Sopenharmony_ci    if (ReadFileInfo(g_buffer, pid, "status")) {
16369570cc8Sopenharmony_ci        GTEST_LOG_(INFO) << "GetGids pid " << pid << " buffer :" << g_buffer;
16469570cc8Sopenharmony_ci        // Move to Groups position
16569570cc8Sopenharmony_ci        char *groupsPtr = strstr(g_buffer, "Groups");
16669570cc8Sopenharmony_ci        if (groupsPtr == nullptr || strlen(groupsPtr) > BUFFER_SIZE) {
16769570cc8Sopenharmony_ci            HILOG_ERROR(LOG_CORE, "get Groups info failed.");
16869570cc8Sopenharmony_ci            return false;
16969570cc8Sopenharmony_ci        }
17069570cc8Sopenharmony_ci        if (strlen(groupsPtr) > GROUPS_POSITION_MOVE) {
17169570cc8Sopenharmony_ci            groupsPtr = groupsPtr + GROUPS_POSITION_MOVE;
17269570cc8Sopenharmony_ci        }
17369570cc8Sopenharmony_ci        // Get the row content of Groups
17469570cc8Sopenharmony_ci        char *savePtr = nullptr;
17569570cc8Sopenharmony_ci        if (groupsPtr == nullptr || strlen(groupsPtr) > BUFFER_SIZE) {
17669570cc8Sopenharmony_ci            HILOG_ERROR(LOG_CORE, "get Groups info failed.");
17769570cc8Sopenharmony_ci            return false;
17869570cc8Sopenharmony_ci        }
17969570cc8Sopenharmony_ci        char *line = strtok_r(groupsPtr, DELIMITER_NEWLINE, &savePtr);
18069570cc8Sopenharmony_ci        if (line == nullptr || strlen(line) > BUFFER_SIZE) {
18169570cc8Sopenharmony_ci            HILOG_ERROR(LOG_CORE, "get Groups line info failed.");
18269570cc8Sopenharmony_ci            return false;
18369570cc8Sopenharmony_ci        }
18469570cc8Sopenharmony_ci        // Get each gid and insert into vector
18569570cc8Sopenharmony_ci        char *gid = strtok_r(line, DELIMITER_SPACE, &savePtr);
18669570cc8Sopenharmony_ci        while (gid != nullptr) {
18769570cc8Sopenharmony_ci            gids.push_back(atoi(gid));
18869570cc8Sopenharmony_ci            gid = strtok_r(nullptr, DELIMITER_SPACE, &savePtr);
18969570cc8Sopenharmony_ci        }
19069570cc8Sopenharmony_ci    }
19169570cc8Sopenharmony_ci    return gids.size();
19269570cc8Sopenharmony_ci}
19369570cc8Sopenharmony_ci
19469570cc8Sopenharmony_cibool CheckGids(const int32_t &pid, const std::vector<int32_t> newGids)
19569570cc8Sopenharmony_ci{
19669570cc8Sopenharmony_ci    // Get Gids
19769570cc8Sopenharmony_ci    std::vector<int32_t> gids;
19869570cc8Sopenharmony_ci    std::size_t gCount = GetGids(pid, gids);
19969570cc8Sopenharmony_ci    if ((gCount == newGids.size()) && (gids == newGids)) {
20069570cc8Sopenharmony_ci        return true;
20169570cc8Sopenharmony_ci    }
20269570cc8Sopenharmony_ci    return false;
20369570cc8Sopenharmony_ci}
20469570cc8Sopenharmony_ci
20569570cc8Sopenharmony_cibool CheckGidsCount(const int32_t &pid, const std::vector<int32_t> newGids)
20669570cc8Sopenharmony_ci{
20769570cc8Sopenharmony_ci    // Get GidsCount
20869570cc8Sopenharmony_ci    std::vector<int32_t> gids;
20969570cc8Sopenharmony_ci    std::size_t gCount = GetGids(pid, gids);
21069570cc8Sopenharmony_ci    if (gCount == newGids.size()) {
21169570cc8Sopenharmony_ci        return true;
21269570cc8Sopenharmony_ci    }
21369570cc8Sopenharmony_ci    return false;
21469570cc8Sopenharmony_ci}
21569570cc8Sopenharmony_ci
21669570cc8Sopenharmony_cibool CheckProcName(const int32_t &pid, const std::string &newProcessName)
21769570cc8Sopenharmony_ci{
21869570cc8Sopenharmony_ci    if (ReadFileInfo(g_buffer, pid, "cmdline")) {
21969570cc8Sopenharmony_ci        if (strlen(g_buffer) > BUFFER_SIZE) {
22069570cc8Sopenharmony_ci            HILOG_ERROR(LOG_CORE, " cmd length is too long  .");
22169570cc8Sopenharmony_ci            return false;
22269570cc8Sopenharmony_ci        }
22369570cc8Sopenharmony_ci        GTEST_LOG_(INFO) << "CheckProcName pid " << pid << " buffer :" << g_buffer;
22469570cc8Sopenharmony_ci        if (newProcessName.compare(0, newProcessName.size(), g_buffer, newProcessName.size()) == 0) {
22569570cc8Sopenharmony_ci            return true;
22669570cc8Sopenharmony_ci        }
22769570cc8Sopenharmony_ci        HILOG_ERROR(LOG_CORE, " procName=%{public}s, newProcessName=%{public}s.", g_buffer, newProcessName.c_str());
22869570cc8Sopenharmony_ci    } else {
22969570cc8Sopenharmony_ci        HILOG_ERROR(LOG_CORE, "Getting procName failed.");
23069570cc8Sopenharmony_ci    }
23169570cc8Sopenharmony_ci    return false;
23269570cc8Sopenharmony_ci}
23369570cc8Sopenharmony_ci
23469570cc8Sopenharmony_cibool CheckProcessIsDestroyed(const int32_t &pid)
23569570cc8Sopenharmony_ci{
23669570cc8Sopenharmony_ci    char filePath[FILE_PATH_SIZE];
23769570cc8Sopenharmony_ci    if (sprintf_s(filePath, sizeof(filePath), "/proc/%d", pid) <= 0) {
23869570cc8Sopenharmony_ci        HILOG_ERROR(LOG_CORE, "filePath sprintf_s fail .");
23969570cc8Sopenharmony_ci        return false;
24069570cc8Sopenharmony_ci    }
24169570cc8Sopenharmony_ci    return CheckFileIsNotExists(filePath);
24269570cc8Sopenharmony_ci}
24369570cc8Sopenharmony_ci
24469570cc8Sopenharmony_cibool CheckAppspawnPID()
24569570cc8Sopenharmony_ci{
24669570cc8Sopenharmony_ci    FILE *fp = nullptr;
24769570cc8Sopenharmony_ci    fp = popen("pidof appspawn", "r");
24869570cc8Sopenharmony_ci    if (fp == nullptr) {
24969570cc8Sopenharmony_ci        HILOG_ERROR(LOG_CORE, " popen function call failed.");
25069570cc8Sopenharmony_ci        return false;
25169570cc8Sopenharmony_ci    }
25269570cc8Sopenharmony_ci    if (fgets(g_buffer, sizeof(g_buffer), fp) != nullptr) {
25369570cc8Sopenharmony_ci        pclose(fp);
25469570cc8Sopenharmony_ci        return true;
25569570cc8Sopenharmony_ci    }
25669570cc8Sopenharmony_ci    HILOG_ERROR(LOG_CORE, "Getting Pid failed.");
25769570cc8Sopenharmony_ci    pclose(fp);
25869570cc8Sopenharmony_ci    return false;
25969570cc8Sopenharmony_ci}
26069570cc8Sopenharmony_ci
26169570cc8Sopenharmony_cibool StartAppspawn()
26269570cc8Sopenharmony_ci{
26369570cc8Sopenharmony_ci    HILOG_ERROR(LOG_CORE, " StartAppspawn ");
26469570cc8Sopenharmony_ci    FILE *fp = nullptr;
26569570cc8Sopenharmony_ci    fp = popen("/system/bin/appspawn&", "r");
26669570cc8Sopenharmony_ci    if (fp == nullptr) {
26769570cc8Sopenharmony_ci        HILOG_ERROR(LOG_CORE, " popen function call failed.");
26869570cc8Sopenharmony_ci        return false;
26969570cc8Sopenharmony_ci    }
27069570cc8Sopenharmony_ci    pclose(fp);
27169570cc8Sopenharmony_ci    return true;
27269570cc8Sopenharmony_ci}
27369570cc8Sopenharmony_ci
27469570cc8Sopenharmony_cibool StopAppspawn()
27569570cc8Sopenharmony_ci{
27669570cc8Sopenharmony_ci    HILOG_ERROR(LOG_CORE, " StopAppspawn ");
27769570cc8Sopenharmony_ci    FILE *fp = nullptr;
27869570cc8Sopenharmony_ci    fp = popen("kill -9 $(pidof appspawn)", "r");
27969570cc8Sopenharmony_ci    if (fp == nullptr) {
28069570cc8Sopenharmony_ci        HILOG_ERROR(LOG_CORE, " popen function call failed.");
28169570cc8Sopenharmony_ci        return false;
28269570cc8Sopenharmony_ci    }
28369570cc8Sopenharmony_ci    pclose(fp);
28469570cc8Sopenharmony_ci    return true;
28569570cc8Sopenharmony_ci}
28669570cc8Sopenharmony_ci
28769570cc8Sopenharmony_cistatic const std::string defaultAppInfo1 = "{ \
28869570cc8Sopenharmony_ci    \"msg-type\": \"MSG_APP_SPAWN\", \
28969570cc8Sopenharmony_ci    \"msg-flags\": [ 13, 14 ], \
29069570cc8Sopenharmony_ci    \"process-name\" : \"com.example.myapplication\", \
29169570cc8Sopenharmony_ci    \"dac-info\" : { \
29269570cc8Sopenharmony_ci            \"uid\" : 20010041, \
29369570cc8Sopenharmony_ci            \"gid\" : 20010041,\
29469570cc8Sopenharmony_ci            \"gid-table\" : [1008],\
29569570cc8Sopenharmony_ci            \"user-name\" : \"\" \
29669570cc8Sopenharmony_ci    },\
29769570cc8Sopenharmony_ci    \"access-token\" : {\
29869570cc8Sopenharmony_ci            \"accessTokenIdEx\" : 537854093\
29969570cc8Sopenharmony_ci    },\
30069570cc8Sopenharmony_ci    \"permission\" : [\
30169570cc8Sopenharmony_ci    ],\
30269570cc8Sopenharmony_ci    \"internet-permission\" : {\
30369570cc8Sopenharmony_ci            \"set-allow-internet\" : 0,\
30469570cc8Sopenharmony_ci            \"allow-internet\" : 0\
30569570cc8Sopenharmony_ci    },\
30669570cc8Sopenharmony_ci    \"bundle-info\" : {\
30769570cc8Sopenharmony_ci            \"bundle-index\" : 0,\
30869570cc8Sopenharmony_ci            \"bundle-name\" : \"com.example.myapplication\" \
30969570cc8Sopenharmony_ci    },\
31069570cc8Sopenharmony_ci    \"owner-id\" : \"\",\
31169570cc8Sopenharmony_ci    \"render-cmd\" : \"1234567890\",\
31269570cc8Sopenharmony_ci    \"domain-info\" : {\
31369570cc8Sopenharmony_ci            \"hap-flags\" : 0,\
31469570cc8Sopenharmony_ci            \"apl\" : \"system_core\"\
31569570cc8Sopenharmony_ci    },\
31669570cc8Sopenharmony_ci    \"ext-info\" : [\
31769570cc8Sopenharmony_ci            {\
31869570cc8Sopenharmony_ci                    \"name\" : \"test\",\
31969570cc8Sopenharmony_ci                    \"value\" : \"4444444444444444444\" \
32069570cc8Sopenharmony_ci            }, \
32169570cc8Sopenharmony_ci            {\
32269570cc8Sopenharmony_ci                \"name\" : \"ProvisionType\",\
32369570cc8Sopenharmony_ci                \"value\" : \"debug\"\
32469570cc8Sopenharmony_ci            }, \
32569570cc8Sopenharmony_ci            {\
32669570cc8Sopenharmony_ci                \"name\" : \"ProcessType\",\
32769570cc8Sopenharmony_ci                \"value\" : \"render\"\
32869570cc8Sopenharmony_ci            }\
32969570cc8Sopenharmony_ci    ]\
33069570cc8Sopenharmony_ci}";
33169570cc8Sopenharmony_ci
33269570cc8Sopenharmony_cistatic const std::string defaultAppInfo2 = "{ \
33369570cc8Sopenharmony_ci    \"msg-type\": \"MSG_SPAWN_NATIVE_PROCESS\", \
33469570cc8Sopenharmony_ci    \"msg-flags\": [ 13, 14 ], \
33569570cc8Sopenharmony_ci    \"process-name\" : \"com.example.myapplication\", \
33669570cc8Sopenharmony_ci    \"dac-info\" : { \
33769570cc8Sopenharmony_ci            \"uid\" : 20010043, \
33869570cc8Sopenharmony_ci            \"gid\" : 20010043,\
33969570cc8Sopenharmony_ci            \"gid-table\" : [],\
34069570cc8Sopenharmony_ci            \"user-name\" : \"\" \
34169570cc8Sopenharmony_ci    },\
34269570cc8Sopenharmony_ci    \"access-token\" : {\
34369570cc8Sopenharmony_ci            \"accessTokenIdEx\" : 537854093\
34469570cc8Sopenharmony_ci    },\
34569570cc8Sopenharmony_ci    \"permission\" : [\
34669570cc8Sopenharmony_ci    ],\
34769570cc8Sopenharmony_ci    \"internet-permission\" : {\
34869570cc8Sopenharmony_ci            \"set-allow-internet\" : 0,\
34969570cc8Sopenharmony_ci            \"allow-internet\" : 0\
35069570cc8Sopenharmony_ci    },\
35169570cc8Sopenharmony_ci    \"bundle-info\" : {\
35269570cc8Sopenharmony_ci            \"bundle-index\" : 0,\
35369570cc8Sopenharmony_ci            \"bundle-name\" : \"com.example.myapplication\" \
35469570cc8Sopenharmony_ci    },\
35569570cc8Sopenharmony_ci    \"owner-id\" : \"\",\
35669570cc8Sopenharmony_ci    \"render-cmd\" : \"1234567890\",\
35769570cc8Sopenharmony_ci    \"domain-info\" : {\
35869570cc8Sopenharmony_ci            \"hap-flags\" : 0,\
35969570cc8Sopenharmony_ci            \"apl\" : \"system_core\"\
36069570cc8Sopenharmony_ci    },\
36169570cc8Sopenharmony_ci    \"ext-info\" : [\
36269570cc8Sopenharmony_ci            {\
36369570cc8Sopenharmony_ci                    \"name\" : \"test\",\
36469570cc8Sopenharmony_ci                    \"value\" : \"4444444444444444444\" \
36569570cc8Sopenharmony_ci            }, \
36669570cc8Sopenharmony_ci            {\
36769570cc8Sopenharmony_ci                \"name\" : \"ProvisionType\",\
36869570cc8Sopenharmony_ci                \"value\" : \"debug\"\
36969570cc8Sopenharmony_ci            }, \
37069570cc8Sopenharmony_ci            {\
37169570cc8Sopenharmony_ci                \"name\" : \"ProcessType\",\
37269570cc8Sopenharmony_ci                \"value\" : \"render\"\
37369570cc8Sopenharmony_ci            }\
37469570cc8Sopenharmony_ci    ]\
37569570cc8Sopenharmony_ci}";
37669570cc8Sopenharmony_ci
37769570cc8Sopenharmony_cistatic const std::string defaultAppInfo3 = "{ \
37869570cc8Sopenharmony_ci    \"msg-type\": \"MSG_SPAWN_NATIVE_PROCESS\", \
37969570cc8Sopenharmony_ci    \"msg-flags\": [ 13, 14 ], \
38069570cc8Sopenharmony_ci    \"process-name\" : \"com.example.myapplication\", \
38169570cc8Sopenharmony_ci    \"dac-info\" : { \
38269570cc8Sopenharmony_ci            \"uid\" : 20010045, \
38369570cc8Sopenharmony_ci            \"gid\" : 20010045,\
38469570cc8Sopenharmony_ci            \"gid-table\" : [ 20010045, 20010046 ],\
38569570cc8Sopenharmony_ci            \"user-name\" : \"\" \
38669570cc8Sopenharmony_ci    },\
38769570cc8Sopenharmony_ci    \"access-token\" : {\
38869570cc8Sopenharmony_ci            \"accessTokenIdEx\" : 537854093\
38969570cc8Sopenharmony_ci    },\
39069570cc8Sopenharmony_ci    \"permission\" : [\
39169570cc8Sopenharmony_ci    ],\
39269570cc8Sopenharmony_ci    \"internet-permission\" : {\
39369570cc8Sopenharmony_ci            \"set-allow-internet\" : 0,\
39469570cc8Sopenharmony_ci            \"allow-internet\" : 0\
39569570cc8Sopenharmony_ci    },\
39669570cc8Sopenharmony_ci    \"bundle-info\" : {\
39769570cc8Sopenharmony_ci            \"bundle-index\" : 0,\
39869570cc8Sopenharmony_ci            \"bundle-name\" : \"com.example.myapplication\" \
39969570cc8Sopenharmony_ci    },\
40069570cc8Sopenharmony_ci    \"owner-id\" : \"\",\
40169570cc8Sopenharmony_ci    \"render-cmd\" : \"1234567890\",\
40269570cc8Sopenharmony_ci    \"domain-info\" : {\
40369570cc8Sopenharmony_ci            \"hap-flags\" : 0,\
40469570cc8Sopenharmony_ci            \"apl\" : \"system_core\"\
40569570cc8Sopenharmony_ci    },\
40669570cc8Sopenharmony_ci    \"ext-info\" : [\
40769570cc8Sopenharmony_ci            {\
40869570cc8Sopenharmony_ci                    \"name\" : \"test\",\
40969570cc8Sopenharmony_ci                    \"value\" : \"4444444444444444444\" \
41069570cc8Sopenharmony_ci            }, \
41169570cc8Sopenharmony_ci            {\
41269570cc8Sopenharmony_ci                \"name\" : \"ProvisionType\",\
41369570cc8Sopenharmony_ci                \"value\" : \"debug\"\
41469570cc8Sopenharmony_ci            }, \
41569570cc8Sopenharmony_ci            {\
41669570cc8Sopenharmony_ci                \"name\" : \"ProcessType\",\
41769570cc8Sopenharmony_ci                \"value\" : \"render\"\
41869570cc8Sopenharmony_ci            }\
41969570cc8Sopenharmony_ci    ]\
42069570cc8Sopenharmony_ci}";
42169570cc8Sopenharmony_ci
42269570cc8Sopenharmony_cistatic const std::string defaultAppInfoNoInternetPermission = "{ \
42369570cc8Sopenharmony_ci    \"msg-type\": \"MSG_APP_SPAWN\", \
42469570cc8Sopenharmony_ci    \"msg-flags\": [ 13, 14 ], \
42569570cc8Sopenharmony_ci    \"process-name\" : \"com.example.myapplication\", \
42669570cc8Sopenharmony_ci    \"dac-info\" : { \
42769570cc8Sopenharmony_ci            \"uid\" : 20010045, \
42869570cc8Sopenharmony_ci            \"gid\" : 20010045,\
42969570cc8Sopenharmony_ci            \"gid-table\" : [ 20010045, 20010046 ],\
43069570cc8Sopenharmony_ci            \"user-name\" : \"\" \
43169570cc8Sopenharmony_ci    },\
43269570cc8Sopenharmony_ci    \"access-token\" : {\
43369570cc8Sopenharmony_ci            \"accessTokenIdEx\" : 537854093\
43469570cc8Sopenharmony_ci    },\
43569570cc8Sopenharmony_ci    \"permission\" : [\
43669570cc8Sopenharmony_ci    ],\
43769570cc8Sopenharmony_ci    \"bundle-info\" : {\
43869570cc8Sopenharmony_ci            \"bundle-index\" : 0,\
43969570cc8Sopenharmony_ci            \"bundle-name\" : \"com.example.myapplication\" \
44069570cc8Sopenharmony_ci    },\
44169570cc8Sopenharmony_ci    \"owner-id\" : \"\",\
44269570cc8Sopenharmony_ci    \"render-cmd\" : \"1234567890\",\
44369570cc8Sopenharmony_ci    \"domain-info\" : {\
44469570cc8Sopenharmony_ci            \"hap-flags\" : 0,\
44569570cc8Sopenharmony_ci            \"apl\" : \"system_core\"\
44669570cc8Sopenharmony_ci    },\
44769570cc8Sopenharmony_ci    \"ext-info\" : [\
44869570cc8Sopenharmony_ci            {\
44969570cc8Sopenharmony_ci                    \"name\" : \"test\",\
45069570cc8Sopenharmony_ci                    \"value\" : \"4444444444444444444\" \
45169570cc8Sopenharmony_ci            }, \
45269570cc8Sopenharmony_ci            {\
45369570cc8Sopenharmony_ci                \"name\" : \"ProvisionType\",\
45469570cc8Sopenharmony_ci                \"value\" : \"debug\"\
45569570cc8Sopenharmony_ci            }, \
45669570cc8Sopenharmony_ci            {\
45769570cc8Sopenharmony_ci                \"name\" : \"ProcessType\",\
45869570cc8Sopenharmony_ci                \"value\" : \"render\"\
45969570cc8Sopenharmony_ci            }\
46069570cc8Sopenharmony_ci    ]\
46169570cc8Sopenharmony_ci}";
46269570cc8Sopenharmony_ci
46369570cc8Sopenharmony_cistatic const std::string defaultAppInfoNoDac = "{ \
46469570cc8Sopenharmony_ci    \"msg-type\": \"MSG_APP_SPAWN\", \
46569570cc8Sopenharmony_ci    \"msg-flags\": [ 13, 14 ], \
46669570cc8Sopenharmony_ci    \"process-name\" : \"com.example.myapplication\", \
46769570cc8Sopenharmony_ci    \"access-token\" : {\
46869570cc8Sopenharmony_ci            \"accessTokenIdEx\" : 537854093\
46969570cc8Sopenharmony_ci    },\
47069570cc8Sopenharmony_ci    \"permission\" : [\
47169570cc8Sopenharmony_ci    ],\
47269570cc8Sopenharmony_ci    \"internet-permission\" : {\
47369570cc8Sopenharmony_ci            \"set-allow-internet\" : 0,\
47469570cc8Sopenharmony_ci            \"allow-internet\" : 0\
47569570cc8Sopenharmony_ci    },\
47669570cc8Sopenharmony_ci    \"bundle-info\" : {\
47769570cc8Sopenharmony_ci            \"bundle-index\" : 0,\
47869570cc8Sopenharmony_ci            \"bundle-name\" : \"com.example.myapplication\" \
47969570cc8Sopenharmony_ci    },\
48069570cc8Sopenharmony_ci    \"owner-id\" : \"\",\
48169570cc8Sopenharmony_ci    \"render-cmd\" : \"1234567890\",\
48269570cc8Sopenharmony_ci    \"domain-info\" : {\
48369570cc8Sopenharmony_ci            \"hap-flags\" : 0,\
48469570cc8Sopenharmony_ci            \"apl\" : \"system_core\"\
48569570cc8Sopenharmony_ci    },\
48669570cc8Sopenharmony_ci    \"ext-info\" : [\
48769570cc8Sopenharmony_ci            {\
48869570cc8Sopenharmony_ci                    \"name\" : \"test\",\
48969570cc8Sopenharmony_ci                    \"value\" : \"4444444444444444444\" \
49069570cc8Sopenharmony_ci            }, \
49169570cc8Sopenharmony_ci            {\
49269570cc8Sopenharmony_ci                \"name\" : \"ProvisionType\",\
49369570cc8Sopenharmony_ci                \"value\" : \"debug\"\
49469570cc8Sopenharmony_ci            }, \
49569570cc8Sopenharmony_ci            {\
49669570cc8Sopenharmony_ci                \"name\" : \"ProcessType\",\
49769570cc8Sopenharmony_ci                \"value\" : \"render\"\
49869570cc8Sopenharmony_ci            }\
49969570cc8Sopenharmony_ci    ]\
50069570cc8Sopenharmony_ci}";
50169570cc8Sopenharmony_ci
50269570cc8Sopenharmony_cistatic const std::string defaultAppInfoNoToken = "{ \
50369570cc8Sopenharmony_ci    \"msg-type\": \"MSG_APP_SPAWN\", \
50469570cc8Sopenharmony_ci    \"msg-flags\": [ 13, 14 ], \
50569570cc8Sopenharmony_ci    \"process-name\" : \"com.example.myapplication\", \
50669570cc8Sopenharmony_ci    \"dac-info\" : { \
50769570cc8Sopenharmony_ci            \"uid\" : 20010043, \
50869570cc8Sopenharmony_ci            \"gid\" : 20010043,\
50969570cc8Sopenharmony_ci            \"gid-table\" : [ 20010043 ],\
51069570cc8Sopenharmony_ci            \"user-name\" : \"\" \
51169570cc8Sopenharmony_ci    },\
51269570cc8Sopenharmony_ci    \"permission\" : [\
51369570cc8Sopenharmony_ci    ],\
51469570cc8Sopenharmony_ci    \"internet-permission\" : {\
51569570cc8Sopenharmony_ci            \"set-allow-internet\" : 0,\
51669570cc8Sopenharmony_ci            \"allow-internet\" : 0\
51769570cc8Sopenharmony_ci    },\
51869570cc8Sopenharmony_ci    \"bundle-info\" : {\
51969570cc8Sopenharmony_ci            \"bundle-index\" : 0,\
52069570cc8Sopenharmony_ci            \"bundle-name\" : \"com.example.myapplication\" \
52169570cc8Sopenharmony_ci    },\
52269570cc8Sopenharmony_ci    \"owner-id\" : \"\",\
52369570cc8Sopenharmony_ci    \"render-cmd\" : \"1234567890\",\
52469570cc8Sopenharmony_ci    \"domain-info\" : {\
52569570cc8Sopenharmony_ci            \"hap-flags\" : 0,\
52669570cc8Sopenharmony_ci            \"apl\" : \"system_core\"\
52769570cc8Sopenharmony_ci    },\
52869570cc8Sopenharmony_ci    \"ext-info\" : [\
52969570cc8Sopenharmony_ci            {\
53069570cc8Sopenharmony_ci                    \"name\" : \"test\",\
53169570cc8Sopenharmony_ci                    \"value\" : \"4444444444444444444\" \
53269570cc8Sopenharmony_ci            }, \
53369570cc8Sopenharmony_ci            {\
53469570cc8Sopenharmony_ci                \"name\" : \"ProvisionType\",\
53569570cc8Sopenharmony_ci                \"value\" : \"debug\"\
53669570cc8Sopenharmony_ci            }, \
53769570cc8Sopenharmony_ci            {\
53869570cc8Sopenharmony_ci                \"name\" : \"ProcessType\",\
53969570cc8Sopenharmony_ci                \"value\" : \"render\"\
54069570cc8Sopenharmony_ci            }\
54169570cc8Sopenharmony_ci    ]\
54269570cc8Sopenharmony_ci}";
54369570cc8Sopenharmony_ci
54469570cc8Sopenharmony_cistatic const std::string defaultAppInfoNoBundleInfo = "{ \
54569570cc8Sopenharmony_ci    \"msg-type\": \"MSG_APP_SPAWN\", \
54669570cc8Sopenharmony_ci    \"msg-flags\": [ 13, 14 ], \
54769570cc8Sopenharmony_ci    \"process-name\" : \"com.example.myapplication\", \
54869570cc8Sopenharmony_ci    \"dac-info\" : { \
54969570cc8Sopenharmony_ci            \"uid\" : 20010043, \
55069570cc8Sopenharmony_ci            \"gid\" : 20010043,\
55169570cc8Sopenharmony_ci            \"gid-table\" : [ 20010043 ],\
55269570cc8Sopenharmony_ci            \"user-name\" : \"\" \
55369570cc8Sopenharmony_ci    },\
55469570cc8Sopenharmony_ci    \"access-token\" : {\
55569570cc8Sopenharmony_ci            \"accessTokenIdEx\" : 537854093\
55669570cc8Sopenharmony_ci    },\
55769570cc8Sopenharmony_ci    \"permission\" : [\
55869570cc8Sopenharmony_ci    ],\
55969570cc8Sopenharmony_ci    \"internet-permission\" : {\
56069570cc8Sopenharmony_ci            \"set-allow-internet\" : 0,\
56169570cc8Sopenharmony_ci            \"allow-internet\" : 0\
56269570cc8Sopenharmony_ci    },\
56369570cc8Sopenharmony_ci    \"owner-id\" : \"\",\
56469570cc8Sopenharmony_ci    \"render-cmd\" : \"1234567890\",\
56569570cc8Sopenharmony_ci    \"domain-info\" : {\
56669570cc8Sopenharmony_ci            \"hap-flags\" : 0,\
56769570cc8Sopenharmony_ci            \"apl\" : \"system_core\"\
56869570cc8Sopenharmony_ci    },\
56969570cc8Sopenharmony_ci    \"ext-info\" : [\
57069570cc8Sopenharmony_ci            {\
57169570cc8Sopenharmony_ci                    \"name\" : \"test\",\
57269570cc8Sopenharmony_ci                    \"value\" : \"4444444444444444444\" \
57369570cc8Sopenharmony_ci            }, \
57469570cc8Sopenharmony_ci            {\
57569570cc8Sopenharmony_ci                \"name\" : \"ProvisionType\",\
57669570cc8Sopenharmony_ci                \"value\" : \"debug\"\
57769570cc8Sopenharmony_ci            }, \
57869570cc8Sopenharmony_ci            {\
57969570cc8Sopenharmony_ci                \"name\" : \"ProcessType\",\
58069570cc8Sopenharmony_ci                \"value\" : \"render\"\
58169570cc8Sopenharmony_ci            }\
58269570cc8Sopenharmony_ci    ]\
58369570cc8Sopenharmony_ci}";
58469570cc8Sopenharmony_ci
58569570cc8Sopenharmony_cistatic const std::string defaultWebInfo1 = "{ \
58669570cc8Sopenharmony_ci    \"msg-type\": \"MSG_APP_SPAWN\", \
58769570cc8Sopenharmony_ci    \"msg-flags\": [ 13, 14 ], \
58869570cc8Sopenharmony_ci    \"process-name\" : \"com.example.myapplication\", \
58969570cc8Sopenharmony_ci    \"dac-info\" : { \
59069570cc8Sopenharmony_ci            \"uid\" : 1000001, \
59169570cc8Sopenharmony_ci            \"gid\" : 1000001,\
59269570cc8Sopenharmony_ci            \"gid-table\" : [1097, 1098],\
59369570cc8Sopenharmony_ci            \"user-name\" : \"\" \
59469570cc8Sopenharmony_ci    },\
59569570cc8Sopenharmony_ci    \"access-token\" : {\
59669570cc8Sopenharmony_ci            \"accessTokenIdEx\" : 537854093\
59769570cc8Sopenharmony_ci    },\
59869570cc8Sopenharmony_ci    \"permission\" : [\
59969570cc8Sopenharmony_ci    ],\
60069570cc8Sopenharmony_ci    \"internet-permission\" : {\
60169570cc8Sopenharmony_ci            \"set-allow-internet\" : 0,\
60269570cc8Sopenharmony_ci            \"allow-internet\" : 0\
60369570cc8Sopenharmony_ci    },\
60469570cc8Sopenharmony_ci    \"bundle-info\" : {\
60569570cc8Sopenharmony_ci            \"bundle-index\" : 0,\
60669570cc8Sopenharmony_ci            \"bundle-name\" : \"com.example.myapplication\" \
60769570cc8Sopenharmony_ci    },\
60869570cc8Sopenharmony_ci    \"owner-id\" : \"\",\
60969570cc8Sopenharmony_ci    \"render-cmd\" : \"1234567890\",\
61069570cc8Sopenharmony_ci    \"domain-info\" : {\
61169570cc8Sopenharmony_ci            \"hap-flags\" : 0,\
61269570cc8Sopenharmony_ci            \"apl\" : \"system_core\"\
61369570cc8Sopenharmony_ci    },\
61469570cc8Sopenharmony_ci    \"ext-info\" : [\
61569570cc8Sopenharmony_ci            {\
61669570cc8Sopenharmony_ci                    \"name\" : \"test\",\
61769570cc8Sopenharmony_ci                    \"value\" : \"4444444444444444444\" \
61869570cc8Sopenharmony_ci            }, \
61969570cc8Sopenharmony_ci            {\
62069570cc8Sopenharmony_ci                \"name\" : \"ProvisionType\",\
62169570cc8Sopenharmony_ci                \"value\" : \"debug\"\
62269570cc8Sopenharmony_ci            }, \
62369570cc8Sopenharmony_ci            {\
62469570cc8Sopenharmony_ci                \"name\" : \"ProcessType\",\
62569570cc8Sopenharmony_ci                \"value\" : \"render\"\
62669570cc8Sopenharmony_ci            }\
62769570cc8Sopenharmony_ci    ]\
62869570cc8Sopenharmony_ci}";
62969570cc8Sopenharmony_ci
63069570cc8Sopenharmony_ciclass AppSpawnModuleTest : public testing::Test {
63169570cc8Sopenharmony_cipublic:
63269570cc8Sopenharmony_ci    static void SetUpTestCase() {}
63369570cc8Sopenharmony_ci    static void TearDownTestCase() {}
63469570cc8Sopenharmony_ci    void SetUp() {}
63569570cc8Sopenharmony_ci    void TearDown() {}
63669570cc8Sopenharmony_ci};
63769570cc8Sopenharmony_ci
63869570cc8Sopenharmony_ci/*
63969570cc8Sopenharmony_ci    * Feature: AppSpawn
64069570cc8Sopenharmony_ci    * Function: Listen
64169570cc8Sopenharmony_ci    * SubFunction: Message listener
64269570cc8Sopenharmony_ci    * FunctionPoints: Process start message monitoring
64369570cc8Sopenharmony_ci    * EnvConditions: AppSpawn main process has started.
64469570cc8Sopenharmony_ci    *                 The socket server has been established.
64569570cc8Sopenharmony_ci    * CaseDescription: 1. Query the process of appspawn through the ps command
64669570cc8Sopenharmony_ci    */
64769570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_listen_001, TestSize.Level0)
64869570cc8Sopenharmony_ci{
64969570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_listen_001 start");
65069570cc8Sopenharmony_ci
65169570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckAppspawnPID());
65269570cc8Sopenharmony_ci
65369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_listen_001 end");
65469570cc8Sopenharmony_ci}
65569570cc8Sopenharmony_ci
65669570cc8Sopenharmony_ci/*
65769570cc8Sopenharmony_ci    * Feature: AppSpawn
65869570cc8Sopenharmony_ci    * Function: Listen
65969570cc8Sopenharmony_ci    * SubFunction: Message listener
66069570cc8Sopenharmony_ci    * FunctionPoints: Process start message monitoring.
66169570cc8Sopenharmony_ci    * EnvConditions: AppSpawn main process has started.
66269570cc8Sopenharmony_ci    *                The socket server has been established.
66369570cc8Sopenharmony_ci    * CaseDescription: 1. Establish a socket client and connect with the Appspawn server
66469570cc8Sopenharmony_ci    */
66569570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_fork_001, TestSize.Level0)
66669570cc8Sopenharmony_ci{
66769570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_fork_001 start");
66869570cc8Sopenharmony_ci
66969570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
67069570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
67169570cc8Sopenharmony_ci    AppSpawnResult result;
67269570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
67369570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
67469570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
67569570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
67669570cc8Sopenharmony_ci    if (result.pid > 0) {
67769570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
67869570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
67969570cc8Sopenharmony_ci    }
68069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_fork_001 end");
68169570cc8Sopenharmony_ci}
68269570cc8Sopenharmony_ci
68369570cc8Sopenharmony_ci/*
68469570cc8Sopenharmony_ci    * Feature: AppSpawn
68569570cc8Sopenharmony_ci    * Function: Fork
68669570cc8Sopenharmony_ci    * SubFunction: fork process
68769570cc8Sopenharmony_ci    * FunctionPoints: Fork the process and run the App object.
68869570cc8Sopenharmony_ci    * EnvConditions: AppSpawn main process has started.
68969570cc8Sopenharmony_ci    *                The socket server has been established.
69069570cc8Sopenharmony_ci    * CaseDescription: 1. Establish a socket client and connect with the Appspawn server
69169570cc8Sopenharmony_ci    *                  2. Send the message and the message format is correct, the message type is APP_TYPE_DEFAULT
69269570cc8Sopenharmony_ci    */
69369570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_fork_002, TestSize.Level0)
69469570cc8Sopenharmony_ci{
69569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_fork_002 start");
69669570cc8Sopenharmony_ci
69769570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
69869570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
69969570cc8Sopenharmony_ci    AppSpawnResult result;
70069570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
70169570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
70269570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
70369570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
70469570cc8Sopenharmony_ci    if (result.pid > 0) {
70569570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
70669570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
70769570cc8Sopenharmony_ci    }
70869570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_fork_002 end");
70969570cc8Sopenharmony_ci}
71069570cc8Sopenharmony_ci
71169570cc8Sopenharmony_ci/*
71269570cc8Sopenharmony_ci    * Feature: AppSpawn
71369570cc8Sopenharmony_ci    * Function: Fork
71469570cc8Sopenharmony_ci    * SubFunction: fork process
71569570cc8Sopenharmony_ci    * FunctionPoints: Fork the process and run the App object.
71669570cc8Sopenharmony_ci    * EnvConditions: AppSpawn main process has started.
71769570cc8Sopenharmony_ci    *                The socket server has been established.
71869570cc8Sopenharmony_ci    * CaseDescription: 1. Establish a socket client and connect with the Appspawn server
71969570cc8Sopenharmony_ci    *                  2. Send the message and the message format is correct, the message type is APP_TYPE_NATIVE
72069570cc8Sopenharmony_ci    */
72169570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_fork_003, TestSize.Level0)
72269570cc8Sopenharmony_ci{
72369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_fork_003 start");
72469570cc8Sopenharmony_ci
72569570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
72669570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
72769570cc8Sopenharmony_ci    AppSpawnResult result;
72869570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo2.c_str());
72969570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
73069570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
73169570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
73269570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
73369570cc8Sopenharmony_ci    if (result.pid > 0) {
73469570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
73569570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
73669570cc8Sopenharmony_ci    }
73769570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_fork_003 end");
73869570cc8Sopenharmony_ci}
73969570cc8Sopenharmony_ci
74069570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Native_Fork_001, TestSize.Level0)
74169570cc8Sopenharmony_ci{
74269570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Native_Fork_001 start");
74369570cc8Sopenharmony_ci
74469570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
74569570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
74669570cc8Sopenharmony_ci    AppSpawnResult result;
74769570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo2.c_str(), MSG_SPAWN_NATIVE_PROCESS);
74869570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
74969570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
75069570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
75169570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
75269570cc8Sopenharmony_ci    if (result.pid > 0) {
75369570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
75469570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
75569570cc8Sopenharmony_ci    }
75669570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Native_Fork_001 end");
75769570cc8Sopenharmony_ci}
75869570cc8Sopenharmony_ci
75969570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Native_Fork_002, TestSize.Level0)
76069570cc8Sopenharmony_ci{
76169570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Native_Fork_002 start");
76269570cc8Sopenharmony_ci
76369570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // for nwebspawn
76469570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
76569570cc8Sopenharmony_ci    AppSpawnResult result;
76669570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultWebInfo1.c_str(), MSG_SPAWN_NATIVE_PROCESS);
76769570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
76869570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
76969570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
77069570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
77169570cc8Sopenharmony_ci    if (result.pid > 0) {
77269570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
77369570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
77469570cc8Sopenharmony_ci    }
77569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Native_Fork_002 end");
77669570cc8Sopenharmony_ci}
77769570cc8Sopenharmony_ci
77869570cc8Sopenharmony_ci/*
77969570cc8Sopenharmony_ci    * Feature: AppSpawn
78069570cc8Sopenharmony_ci    * Function: SetUid
78169570cc8Sopenharmony_ci    * SubFunction: Set child process permissions
78269570cc8Sopenharmony_ci    * FunctionPoints: Set the permissions of the child process to increase the priority of the new process
78369570cc8Sopenharmony_ci    * EnvConditions: AppSpawn main process has started.
78469570cc8Sopenharmony_ci    *                The socket server has been established.
78569570cc8Sopenharmony_ci    * CaseDescription: 1. Establish a socket client and connect with the Appspawn server
78669570cc8Sopenharmony_ci    *                  2. Send the message and the message format is correct, the message type is APP_TYPE_DEFAULT
78769570cc8Sopenharmony_ci    */
78869570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_setUid_001, TestSize.Level0)
78969570cc8Sopenharmony_ci{
79069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setUid_001 start");
79169570cc8Sopenharmony_ci
79269570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
79369570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
79469570cc8Sopenharmony_ci    AppSpawnResult result;
79569570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
79669570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
79769570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
79869570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
79969570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
80069570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
80169570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckUid(result.pid, 20010041));  // 20010041 test
80269570cc8Sopenharmony_ci    if (result.pid > 0) {
80369570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
80469570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
80569570cc8Sopenharmony_ci    }
80669570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setUid_001 end");
80769570cc8Sopenharmony_ci}
80869570cc8Sopenharmony_ci
80969570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_setUid_002, TestSize.Level0)
81069570cc8Sopenharmony_ci{
81169570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setUid_002 start");
81269570cc8Sopenharmony_ci
81369570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
81469570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
81569570cc8Sopenharmony_ci    AppSpawnResult result;
81669570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo2.c_str());
81769570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
81869570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
81969570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
82069570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
82169570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
82269570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckUid(result.pid, 20010043));  // 20010043 test
82369570cc8Sopenharmony_ci
82469570cc8Sopenharmony_ci    if (result.pid > 0) {
82569570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
82669570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
82769570cc8Sopenharmony_ci    }
82869570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setUid_002 end");
82969570cc8Sopenharmony_ci}
83069570cc8Sopenharmony_ci
83169570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_setUid_003, TestSize.Level0)
83269570cc8Sopenharmony_ci{
83369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setUid_003 start");
83469570cc8Sopenharmony_ci
83569570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
83669570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
83769570cc8Sopenharmony_ci    AppSpawnResult result;
83869570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo2.c_str(), MSG_SPAWN_NATIVE_PROCESS);
83969570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
84069570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
84169570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
84269570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
84369570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
84469570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckUid(result.pid, 20010043));  // 20010043 test
84569570cc8Sopenharmony_ci
84669570cc8Sopenharmony_ci    if (result.pid > 0) {
84769570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
84869570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
84969570cc8Sopenharmony_ci    }
85069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setUid_003 end");
85169570cc8Sopenharmony_ci}
85269570cc8Sopenharmony_ci
85369570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_setUid_004, TestSize.Level0)
85469570cc8Sopenharmony_ci{
85569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setUid_004 start");
85669570cc8Sopenharmony_ci
85769570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // nwebspawn
85869570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
85969570cc8Sopenharmony_ci    AppSpawnResult result;
86069570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultWebInfo1.c_str());
86169570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
86269570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
86369570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
86469570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
86569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
86669570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckUid(result.pid, 1000001));  // 1000001 test
86769570cc8Sopenharmony_ci
86869570cc8Sopenharmony_ci    if (result.pid > 0) {
86969570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
87069570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
87169570cc8Sopenharmony_ci    }
87269570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setUid_004 end");
87369570cc8Sopenharmony_ci}
87469570cc8Sopenharmony_ci
87569570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_setUid_005, TestSize.Level0)
87669570cc8Sopenharmony_ci{
87769570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setUid_005 start");
87869570cc8Sopenharmony_ci
87969570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // nwebspawn
88069570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
88169570cc8Sopenharmony_ci    AppSpawnResult result;
88269570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultWebInfo1.c_str(), MSG_SPAWN_NATIVE_PROCESS);
88369570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
88469570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
88569570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
88669570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
88769570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
88869570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckUid(result.pid, 1000001));  // 1000001 test
88969570cc8Sopenharmony_ci
89069570cc8Sopenharmony_ci    if (result.pid > 0) {
89169570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
89269570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
89369570cc8Sopenharmony_ci    }
89469570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setUid_005 end");
89569570cc8Sopenharmony_ci}
89669570cc8Sopenharmony_ci
89769570cc8Sopenharmony_ci/*
89869570cc8Sopenharmony_ci    * Feature: AppSpawn
89969570cc8Sopenharmony_ci    * Function: CheckGid
90069570cc8Sopenharmony_ci    * SubFunction: Set child process permissions
90169570cc8Sopenharmony_ci    * FunctionPoints: Set the permissions of the child process to increase the priority of the new process
90269570cc8Sopenharmony_ci    * EnvConditions: AppSpawn main process has started.
90369570cc8Sopenharmony_ci    *                The socket server has been established.
90469570cc8Sopenharmony_ci    * CaseDescription: 1. Establish a socket client and connect with the Appspawn server
90569570cc8Sopenharmony_ci    *                  2. Send the message and the message format is correct, the message type is APP_TYPE_DEFAULT
90669570cc8Sopenharmony_ci    */
90769570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_checkGid_001, TestSize.Level0)
90869570cc8Sopenharmony_ci{
90969570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGid_001 start");
91069570cc8Sopenharmony_ci
91169570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
91269570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
91369570cc8Sopenharmony_ci    AppSpawnResult result;
91469570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo2.c_str());
91569570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
91669570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
91769570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
91869570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
91969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
92069570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckGid(result.pid, 20010043));  // 20010043 test gid
92169570cc8Sopenharmony_ci
92269570cc8Sopenharmony_ci    if (result.pid > 0) {
92369570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
92469570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
92569570cc8Sopenharmony_ci    }
92669570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGid_001 end");
92769570cc8Sopenharmony_ci}
92869570cc8Sopenharmony_ci
92969570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_checkGid_002, TestSize.Level0)
93069570cc8Sopenharmony_ci{
93169570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGid_002 start");
93269570cc8Sopenharmony_ci
93369570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
93469570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
93569570cc8Sopenharmony_ci    AppSpawnResult result;
93669570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
93769570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
93869570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
93969570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
94069570cc8Sopenharmony_ci
94169570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
94269570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
94369570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckGid(result.pid, 20010041));  // 20010041 test gid
94469570cc8Sopenharmony_ci
94569570cc8Sopenharmony_ci    if (result.pid > 0) {
94669570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
94769570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
94869570cc8Sopenharmony_ci    }
94969570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGid_002 end");
95069570cc8Sopenharmony_ci}
95169570cc8Sopenharmony_ci
95269570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_checkGid_003, TestSize.Level0)
95369570cc8Sopenharmony_ci{
95469570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGid_003 start");
95569570cc8Sopenharmony_ci
95669570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
95769570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
95869570cc8Sopenharmony_ci    AppSpawnResult result;
95969570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str(), MSG_SPAWN_NATIVE_PROCESS);
96069570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
96169570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
96269570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
96369570cc8Sopenharmony_ci
96469570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
96569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
96669570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckGid(result.pid, 20010041));  // 20010041 test gid
96769570cc8Sopenharmony_ci
96869570cc8Sopenharmony_ci    if (result.pid > 0) {
96969570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
97069570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
97169570cc8Sopenharmony_ci    }
97269570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGid_003 end");
97369570cc8Sopenharmony_ci}
97469570cc8Sopenharmony_ci
97569570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_checkGid_004, TestSize.Level0)
97669570cc8Sopenharmony_ci{
97769570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGid_004 start");
97869570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // for nwebspawn
97969570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
98069570cc8Sopenharmony_ci    AppSpawnResult result;
98169570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultWebInfo1.c_str());
98269570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
98369570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
98469570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
98569570cc8Sopenharmony_ci
98669570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
98769570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
98869570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckGid(result.pid, 1000001));  // 1000001 test gid
98969570cc8Sopenharmony_ci
99069570cc8Sopenharmony_ci    if (result.pid > 0) {
99169570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
99269570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
99369570cc8Sopenharmony_ci    }
99469570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGid_004 end");
99569570cc8Sopenharmony_ci}
99669570cc8Sopenharmony_ci
99769570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_checkGid_005, TestSize.Level0)
99869570cc8Sopenharmony_ci{
99969570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGid_005 start");
100069570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // for nwebspawn
100169570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
100269570cc8Sopenharmony_ci    AppSpawnResult result;
100369570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultWebInfo1.c_str(), MSG_SPAWN_NATIVE_PROCESS);
100469570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
100569570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
100669570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
100769570cc8Sopenharmony_ci
100869570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
100969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
101069570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckGid(result.pid, 1000001));  // 1000001 test gid
101169570cc8Sopenharmony_ci
101269570cc8Sopenharmony_ci    if (result.pid > 0) {
101369570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
101469570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
101569570cc8Sopenharmony_ci    }
101669570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGid_005 end");
101769570cc8Sopenharmony_ci}
101869570cc8Sopenharmony_ci
101969570cc8Sopenharmony_ci/*
102069570cc8Sopenharmony_ci    * Feature: AppSpawn
102169570cc8Sopenharmony_ci    * Function: CheckGids
102269570cc8Sopenharmony_ci    * SubFunction: Set child process permissions
102369570cc8Sopenharmony_ci    * FunctionPoints: Set the permissions of the child process to increase the priority of the new process
102469570cc8Sopenharmony_ci    * EnvConditions: AppSpawn main process has started.
102569570cc8Sopenharmony_ci    *                The socket server has been established.
102669570cc8Sopenharmony_ci    * CaseDescription: 1. Establish a socket client and connect with the Appspawn server
102769570cc8Sopenharmony_ci    *                  2. Send the message and the message format is correct, the message type is APP_TYPE_DEFAULT
102869570cc8Sopenharmony_ci    */
102969570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_checkGids_001, TestSize.Level0)
103069570cc8Sopenharmony_ci{
103169570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGids_001 start");
103269570cc8Sopenharmony_ci
103369570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
103469570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
103569570cc8Sopenharmony_ci    AppSpawnResult result;
103669570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
103769570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
103869570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
103969570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
104069570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
104169570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
104269570cc8Sopenharmony_ci
104369570cc8Sopenharmony_ci    std::vector<int32_t> gids = {1008};  // 1008 gids
104469570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckGids(result.pid, gids));
104569570cc8Sopenharmony_ci
104669570cc8Sopenharmony_ci    if (result.pid > 0) {
104769570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
104869570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
104969570cc8Sopenharmony_ci    }
105069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setUid_001 end");
105169570cc8Sopenharmony_ci}
105269570cc8Sopenharmony_ci
105369570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_checkGids_002, TestSize.Level0)
105469570cc8Sopenharmony_ci{
105569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGids_002 start");
105669570cc8Sopenharmony_ci
105769570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
105869570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
105969570cc8Sopenharmony_ci    AppSpawnResult result;
106069570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo3.c_str());
106169570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
106269570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
106369570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
106469570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
106569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
106669570cc8Sopenharmony_ci
106769570cc8Sopenharmony_ci    std::vector<int32_t> gids = {20010045, 20010046};  // 20010045, 20010046 test gids
106869570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckGids(result.pid, gids));
106969570cc8Sopenharmony_ci
107069570cc8Sopenharmony_ci    if (result.pid > 0) {
107169570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
107269570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
107369570cc8Sopenharmony_ci    }
107469570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGids_002 end");
107569570cc8Sopenharmony_ci}
107669570cc8Sopenharmony_ci
107769570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_checkGids_003, TestSize.Level0)
107869570cc8Sopenharmony_ci{
107969570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGids_003 start");
108069570cc8Sopenharmony_ci
108169570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
108269570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
108369570cc8Sopenharmony_ci    AppSpawnResult result;
108469570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo3.c_str(), MSG_SPAWN_NATIVE_PROCESS);
108569570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
108669570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
108769570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
108869570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
108969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
109069570cc8Sopenharmony_ci
109169570cc8Sopenharmony_ci    std::vector<int32_t> gids = {20010045, 20010046};  // 20010045, 20010046 test gids
109269570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckGids(result.pid, gids));
109369570cc8Sopenharmony_ci
109469570cc8Sopenharmony_ci    if (result.pid > 0) {
109569570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
109669570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
109769570cc8Sopenharmony_ci    }
109869570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGids_003 end");
109969570cc8Sopenharmony_ci}
110069570cc8Sopenharmony_ci
110169570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_checkGids_004, TestSize.Level0)
110269570cc8Sopenharmony_ci{
110369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGids_004 start");
110469570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // for nwebspawn
110569570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
110669570cc8Sopenharmony_ci    AppSpawnResult result;
110769570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultWebInfo1.c_str());
110869570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
110969570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
111069570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
111169570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
111269570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
111369570cc8Sopenharmony_ci
111469570cc8Sopenharmony_ci    std::vector<int32_t> gids = {1097, 1098};  // 1097, 1098 test gids
111569570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckGids(result.pid, gids));
111669570cc8Sopenharmony_ci
111769570cc8Sopenharmony_ci    if (result.pid > 0) {
111869570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
111969570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
112069570cc8Sopenharmony_ci    }
112169570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGids_004 end");
112269570cc8Sopenharmony_ci}
112369570cc8Sopenharmony_ci
112469570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_checkGids_005, TestSize.Level0)
112569570cc8Sopenharmony_ci{
112669570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGids_005 start");
112769570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // for nwebspawn
112869570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
112969570cc8Sopenharmony_ci    AppSpawnResult result;
113069570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultWebInfo1.c_str(), MSG_SPAWN_NATIVE_PROCESS);
113169570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
113269570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
113369570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
113469570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
113569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
113669570cc8Sopenharmony_ci
113769570cc8Sopenharmony_ci    std::vector<int32_t> gids = {1097, 1098};  // 1097, 1098 test gids
113869570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckGids(result.pid, gids));
113969570cc8Sopenharmony_ci
114069570cc8Sopenharmony_ci    if (result.pid > 0) {
114169570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
114269570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
114369570cc8Sopenharmony_ci    }
114469570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_checkGids_003 end");
114569570cc8Sopenharmony_ci}
114669570cc8Sopenharmony_ci
114769570cc8Sopenharmony_ci/*
114869570cc8Sopenharmony_ci    * Feature: AppSpawn
114969570cc8Sopenharmony_ci    * Function: setProcName
115069570cc8Sopenharmony_ci    * SubFunction: Set process name
115169570cc8Sopenharmony_ci    * FunctionPoints: Set process information .
115269570cc8Sopenharmony_ci    * EnvConditions: AppSpawn main process has started.
115369570cc8Sopenharmony_ci    *                The socket server has been established.
115469570cc8Sopenharmony_ci    * CaseDescription: 1. Establish a socket client and connect with the Appspawn server
115569570cc8Sopenharmony_ci    *                  2. Send the message and the message format is correct, the message type is APP_TYPE_DEFAULT
115669570cc8Sopenharmony_ci    */
115769570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_setProcName_001, TestSize.Level0)
115869570cc8Sopenharmony_ci{
115969570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setProcName_001 start");
116069570cc8Sopenharmony_ci
116169570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
116269570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
116369570cc8Sopenharmony_ci    AppSpawnResult result;
116469570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
116569570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
116669570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
116769570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
116869570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
116969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
117069570cc8Sopenharmony_ci    // Check new app proc name
117169570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckProcName(result.pid, "com.example.myapplication"));
117269570cc8Sopenharmony_ci
117369570cc8Sopenharmony_ci    if (result.pid > 0) {
117469570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
117569570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
117669570cc8Sopenharmony_ci    }
117769570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setProcName_001 end");
117869570cc8Sopenharmony_ci}
117969570cc8Sopenharmony_ci
118069570cc8Sopenharmony_ci/*
118169570cc8Sopenharmony_ci    * Feature: AppSpawn
118269570cc8Sopenharmony_ci    * Function: setProcName
118369570cc8Sopenharmony_ci    * SubFunction: Set process name
118469570cc8Sopenharmony_ci    * FunctionPoints: Set process information .
118569570cc8Sopenharmony_ci    * EnvConditions: AppSpawn main process has started.
118669570cc8Sopenharmony_ci    *                The socket server has been established.
118769570cc8Sopenharmony_ci    * CaseDescription: 1. Establish a socket client and connect with the Appspawn server
118869570cc8Sopenharmony_ci    *                  2. Send the message and the message format is correct, the message type is APP_TYPE_NATIVE
118969570cc8Sopenharmony_ci    */
119069570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_setProcName_002, TestSize.Level0)
119169570cc8Sopenharmony_ci{
119269570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setProcName_002 start");
119369570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
119469570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
119569570cc8Sopenharmony_ci    AppSpawnResult result;
119669570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo2.c_str());  // native start, can run
119769570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
119869570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
119969570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
120069570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
120169570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
120269570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setProcName_002 end");
120369570cc8Sopenharmony_ci}
120469570cc8Sopenharmony_ci
120569570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_setProcName_003, TestSize.Level0)
120669570cc8Sopenharmony_ci{
120769570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setProcName_003 start");
120869570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
120969570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
121069570cc8Sopenharmony_ci    AppSpawnResult result;
121169570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo2.c_str(), MSG_SPAWN_NATIVE_PROCESS);
121269570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
121369570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
121469570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
121569570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
121669570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
121769570cc8Sopenharmony_ci    // do not check, native run fail
121869570cc8Sopenharmony_ci    // Failed to launch a native process with execvp: No such file or directory
121969570cc8Sopenharmony_ci    if (result.pid > 0) {
122069570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
122169570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
122269570cc8Sopenharmony_ci    }
122369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setProcName_003 end");
122469570cc8Sopenharmony_ci}
122569570cc8Sopenharmony_ci
122669570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_setProcName_004, TestSize.Level0)
122769570cc8Sopenharmony_ci{
122869570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setProcName_004 start");
122969570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // for nwebspawn
123069570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
123169570cc8Sopenharmony_ci    AppSpawnResult result;
123269570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultWebInfo1.c_str());
123369570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
123469570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
123569570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
123669570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
123769570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
123869570cc8Sopenharmony_ci    // Check new app proc name
123969570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckProcName(result.pid, "com.example.myapplication"));
124069570cc8Sopenharmony_ci
124169570cc8Sopenharmony_ci    if (result.pid > 0) {
124269570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
124369570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
124469570cc8Sopenharmony_ci    }
124569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setProcName_004 end");
124669570cc8Sopenharmony_ci}
124769570cc8Sopenharmony_ci
124869570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_setProcName_005, TestSize.Level0)
124969570cc8Sopenharmony_ci{
125069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setProcName_005 start");
125169570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // for nwebspawn
125269570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
125369570cc8Sopenharmony_ci    AppSpawnResult result;
125469570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultWebInfo1.c_str(), MSG_SPAWN_NATIVE_PROCESS);
125569570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
125669570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
125769570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
125869570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
125969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
126069570cc8Sopenharmony_ci    // Check new app proc name
126169570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckProcName(result.pid, "com.example.myapplication"));
126269570cc8Sopenharmony_ci
126369570cc8Sopenharmony_ci    if (result.pid > 0) {
126469570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
126569570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
126669570cc8Sopenharmony_ci    }
126769570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_setProcName_005 end");
126869570cc8Sopenharmony_ci}
126969570cc8Sopenharmony_ci
127069570cc8Sopenharmony_ci/*
127169570cc8Sopenharmony_ci    * Feature: AppSpawn
127269570cc8Sopenharmony_ci    * Function: recycleProc
127369570cc8Sopenharmony_ci    * SubFunction: Recycling process
127469570cc8Sopenharmony_ci    * FunctionPoints: Recycling zombie processes.
127569570cc8Sopenharmony_ci    * EnvConditions: Start a js ability
127669570cc8Sopenharmony_ci    * CaseDescription: 1. Use the command kill to kill the process pid of the ability
127769570cc8Sopenharmony_ci    */
127869570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_recycleProc_001, TestSize.Level0)
127969570cc8Sopenharmony_ci{
128069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_recycleProc_001 start");
128169570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
128269570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
128369570cc8Sopenharmony_ci    AppSpawnResult result;
128469570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo2.c_str());
128569570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
128669570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
128769570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
128869570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
128969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
129069570cc8Sopenharmony_ci    if (result.pid > 0) {
129169570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
129269570cc8Sopenharmony_ci    }
129369570cc8Sopenharmony_ci    // Check Process Is Destroyed
129469570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckProcessIsDestroyed(result.pid));
129569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_recycleProc_001 end");
129669570cc8Sopenharmony_ci}
129769570cc8Sopenharmony_ci
129869570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_recycleProc_002, TestSize.Level0)
129969570cc8Sopenharmony_ci{
130069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_recycleProc_002 start");
130169570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
130269570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
130369570cc8Sopenharmony_ci    AppSpawnResult result;
130469570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
130569570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
130669570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
130769570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
130869570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
130969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
131069570cc8Sopenharmony_ci    if (result.pid > 0) {
131169570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
131269570cc8Sopenharmony_ci    }
131369570cc8Sopenharmony_ci    // Check Process Is Destroyed
131469570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckProcessIsDestroyed(result.pid));
131569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_recycleProc_002 end");
131669570cc8Sopenharmony_ci}
131769570cc8Sopenharmony_ci
131869570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_recycleProc_003, TestSize.Level0)
131969570cc8Sopenharmony_ci{
132069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_recycleProc_003 start");
132169570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
132269570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
132369570cc8Sopenharmony_ci    AppSpawnResult result;
132469570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
132569570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
132669570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
132769570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
132869570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
132969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
133069570cc8Sopenharmony_ci    if (result.pid > 0) {
133169570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
133269570cc8Sopenharmony_ci    }
133369570cc8Sopenharmony_ci    // Check Process Is Destroyed
133469570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckProcessIsDestroyed(result.pid));
133569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_recycleProc_003 end");
133669570cc8Sopenharmony_ci}
133769570cc8Sopenharmony_ci
133869570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_recycleProc_006, TestSize.Level0)
133969570cc8Sopenharmony_ci{
134069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_recycleProc_006 start");
134169570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
134269570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
134369570cc8Sopenharmony_ci    AppSpawnResult result;
134469570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str(), MSG_SPAWN_NATIVE_PROCESS);
134569570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
134669570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
134769570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
134869570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
134969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
135069570cc8Sopenharmony_ci    if (result.pid > 0) {
135169570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
135269570cc8Sopenharmony_ci    }
135369570cc8Sopenharmony_ci
135469570cc8Sopenharmony_ci    // Check Process Is Destroyed
135569570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckProcessIsDestroyed(result.pid));
135669570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_recycleProc_006 end");
135769570cc8Sopenharmony_ci}
135869570cc8Sopenharmony_ci
135969570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_recycleProc_007, TestSize.Level0)
136069570cc8Sopenharmony_ci{
136169570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_recycleProc_007 start");
136269570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);
136369570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
136469570cc8Sopenharmony_ci    AppSpawnResult result;
136569570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
136669570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
136769570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
136869570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
136969570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
137069570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
137169570cc8Sopenharmony_ci    if (result.pid > 0) {
137269570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
137369570cc8Sopenharmony_ci    }
137469570cc8Sopenharmony_ci
137569570cc8Sopenharmony_ci    // Check Process Is Destroyed
137669570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckProcessIsDestroyed(result.pid));
137769570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_recycleProc_007 end");
137869570cc8Sopenharmony_ci}
137969570cc8Sopenharmony_ci
138069570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_HF_recycleProc_008, TestSize.Level0)
138169570cc8Sopenharmony_ci{
138269570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_recycleProc_008 start");
138369570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);
138469570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
138569570cc8Sopenharmony_ci    AppSpawnResult result;
138669570cc8Sopenharmony_ci    std::random_device rd;
138769570cc8Sopenharmony_ci    std::mt19937 gen(rd());
138869570cc8Sopenharmony_ci    std::uniform_int_distribution<> dis(0, 62);
138969570cc8Sopenharmony_ci    printf("number: %d\n", dis(gen));
139069570cc8Sopenharmony_ci    AppFlagsIndex number = static_cast<AppFlagsIndex>(dis(gen));
139169570cc8Sopenharmony_ci
139269570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str(), MSG_SPAWN_NATIVE_PROCESS);
139369570cc8Sopenharmony_ci    int ret = AppSpawnReqMsgSetAppFlag(reqHandle, number);
139469570cc8Sopenharmony_ci    ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
139569570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
139669570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
139769570cc8Sopenharmony_ci    EXPECT_NE(0, result.pid);
139869570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "newPid :" << result.pid << ".";
139969570cc8Sopenharmony_ci    if (result.pid > 0) {
140069570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
140169570cc8Sopenharmony_ci    }
140269570cc8Sopenharmony_ci    // Check Process Is Destroyed
140369570cc8Sopenharmony_ci    EXPECT_EQ(true, CheckProcessIsDestroyed(result.pid));
140469570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_HF_recycleProc_008 end");
140569570cc8Sopenharmony_ci}
140669570cc8Sopenharmony_ci
140769570cc8Sopenharmony_ci/**
140869570cc8Sopenharmony_ci * @brief
140969570cc8Sopenharmony_ci *  no internet permission
141069570cc8Sopenharmony_ci *
141169570cc8Sopenharmony_ci */
141269570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Invalid_Msg_001, TestSize.Level0)
141369570cc8Sopenharmony_ci{
141469570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_001 start");
141569570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
141669570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
141769570cc8Sopenharmony_ci    AppSpawnResult result;
141869570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfoNoInternetPermission.c_str());
141969570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
142069570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
142169570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
142269570cc8Sopenharmony_ci    if (result.pid > 0) {
142369570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
142469570cc8Sopenharmony_ci    }
142569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_001 end");
142669570cc8Sopenharmony_ci}
142769570cc8Sopenharmony_ci
142869570cc8Sopenharmony_ci/**
142969570cc8Sopenharmony_ci * @brief
143069570cc8Sopenharmony_ci *  no dac
143169570cc8Sopenharmony_ci *
143269570cc8Sopenharmony_ci */
143369570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Invalid_Msg_002, TestSize.Level0)
143469570cc8Sopenharmony_ci{
143569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_001 start");
143669570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
143769570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
143869570cc8Sopenharmony_ci    AppSpawnResult result;
143969570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfoNoDac.c_str());
144069570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
144169570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
144269570cc8Sopenharmony_ci    EXPECT_EQ(APPSPAWN_MSG_INVALID, result.result);
144369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_001 end");
144469570cc8Sopenharmony_ci}
144569570cc8Sopenharmony_ci
144669570cc8Sopenharmony_ci/**
144769570cc8Sopenharmony_ci * @brief
144869570cc8Sopenharmony_ci *  no access token
144969570cc8Sopenharmony_ci *
145069570cc8Sopenharmony_ci */
145169570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Invalid_Msg_003, TestSize.Level0)
145269570cc8Sopenharmony_ci{
145369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_003 start");
145469570cc8Sopenharmony_ci
145569570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
145669570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
145769570cc8Sopenharmony_ci    AppSpawnResult result;
145869570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfoNoToken.c_str());
145969570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
146069570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
146169570cc8Sopenharmony_ci    EXPECT_EQ(APPSPAWN_MSG_INVALID, result.result);
146269570cc8Sopenharmony_ci
146369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_003 end");
146469570cc8Sopenharmony_ci}
146569570cc8Sopenharmony_ci
146669570cc8Sopenharmony_ci/**
146769570cc8Sopenharmony_ci * @brief
146869570cc8Sopenharmony_ci *  no bundle info
146969570cc8Sopenharmony_ci *
147069570cc8Sopenharmony_ci */
147169570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Invalid_Msg_004, TestSize.Level0)
147269570cc8Sopenharmony_ci{
147369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_004 start");
147469570cc8Sopenharmony_ci
147569570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
147669570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
147769570cc8Sopenharmony_ci    AppSpawnResult result;
147869570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfoNoBundleInfo.c_str());
147969570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
148069570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
148169570cc8Sopenharmony_ci    EXPECT_EQ(APPSPAWN_MSG_INVALID, result.result);
148269570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_004 end");
148369570cc8Sopenharmony_ci}
148469570cc8Sopenharmony_ci
148569570cc8Sopenharmony_ci/**
148669570cc8Sopenharmony_ci * @brief
148769570cc8Sopenharmony_ci *  no internet permission
148869570cc8Sopenharmony_ci *
148969570cc8Sopenharmony_ci */
149069570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Invalid_Msg_005, TestSize.Level0)
149169570cc8Sopenharmony_ci{
149269570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_005 start");
149369570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // nwebspawn
149469570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
149569570cc8Sopenharmony_ci    AppSpawnResult result;
149669570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfoNoInternetPermission.c_str());
149769570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
149869570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
149969570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
150069570cc8Sopenharmony_ci    if (result.pid > 0) {
150169570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
150269570cc8Sopenharmony_ci    }
150369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_005 end");
150469570cc8Sopenharmony_ci}
150569570cc8Sopenharmony_ci
150669570cc8Sopenharmony_ci/**
150769570cc8Sopenharmony_ci * @brief
150869570cc8Sopenharmony_ci *  no dac
150969570cc8Sopenharmony_ci *
151069570cc8Sopenharmony_ci */
151169570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Invalid_Msg_006, TestSize.Level0)
151269570cc8Sopenharmony_ci{
151369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_006 start");
151469570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // nwebspawn
151569570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
151669570cc8Sopenharmony_ci    AppSpawnResult result;
151769570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfoNoDac.c_str());
151869570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
151969570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
152069570cc8Sopenharmony_ci    EXPECT_EQ(APPSPAWN_MSG_INVALID, result.result);
152169570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_006 end");
152269570cc8Sopenharmony_ci}
152369570cc8Sopenharmony_ci
152469570cc8Sopenharmony_ci/**
152569570cc8Sopenharmony_ci * @brief
152669570cc8Sopenharmony_ci *  no access token
152769570cc8Sopenharmony_ci *
152869570cc8Sopenharmony_ci */
152969570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Invalid_Msg_007, TestSize.Level0)
153069570cc8Sopenharmony_ci{
153169570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_007 start");
153269570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // nwebspawn
153369570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
153469570cc8Sopenharmony_ci    AppSpawnResult result;
153569570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfoNoToken.c_str());
153669570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
153769570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
153869570cc8Sopenharmony_ci    EXPECT_EQ(APPSPAWN_MSG_INVALID, result.result);
153969570cc8Sopenharmony_ci
154069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_007 end");
154169570cc8Sopenharmony_ci}
154269570cc8Sopenharmony_ci
154369570cc8Sopenharmony_ci/**
154469570cc8Sopenharmony_ci * @brief
154569570cc8Sopenharmony_ci *  no bundle info
154669570cc8Sopenharmony_ci *
154769570cc8Sopenharmony_ci */
154869570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Invalid_Msg_008, TestSize.Level0)
154969570cc8Sopenharmony_ci{
155069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_008 start");
155169570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // nwebspawn
155269570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
155369570cc8Sopenharmony_ci    AppSpawnResult result;
155469570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfoNoBundleInfo.c_str());
155569570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
155669570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
155769570cc8Sopenharmony_ci    EXPECT_EQ(APPSPAWN_MSG_INVALID, result.result);
155869570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_008 end");
155969570cc8Sopenharmony_ci}
156069570cc8Sopenharmony_ci
156169570cc8Sopenharmony_ci/**
156269570cc8Sopenharmony_ci * @brief
156369570cc8Sopenharmony_ci *  no internet permission
156469570cc8Sopenharmony_ci *
156569570cc8Sopenharmony_ci */
156669570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Invalid_Msg_009, TestSize.Level0)
156769570cc8Sopenharmony_ci{
156869570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_009 start");
156969570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
157069570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
157169570cc8Sopenharmony_ci    AppSpawnResult result;
157269570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfoNoInternetPermission.c_str(), MSG_SPAWN_NATIVE_PROCESS);
157369570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
157469570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
157569570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
157669570cc8Sopenharmony_ci    if (result.pid > 0) {
157769570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
157869570cc8Sopenharmony_ci    }
157969570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_009 end");
158069570cc8Sopenharmony_ci}
158169570cc8Sopenharmony_ci
158269570cc8Sopenharmony_ci/**
158369570cc8Sopenharmony_ci * @brief
158469570cc8Sopenharmony_ci *  no dac
158569570cc8Sopenharmony_ci *
158669570cc8Sopenharmony_ci */
158769570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Invalid_Msg_010, TestSize.Level0)
158869570cc8Sopenharmony_ci{
158969570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_010 start");
159069570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
159169570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
159269570cc8Sopenharmony_ci    AppSpawnResult result;
159369570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfoNoDac.c_str(), MSG_SPAWN_NATIVE_PROCESS);
159469570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
159569570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
159669570cc8Sopenharmony_ci    EXPECT_EQ(APPSPAWN_MSG_INVALID, result.result);
159769570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_010 end");
159869570cc8Sopenharmony_ci}
159969570cc8Sopenharmony_ci
160069570cc8Sopenharmony_ci/**
160169570cc8Sopenharmony_ci * @brief
160269570cc8Sopenharmony_ci *  no access token
160369570cc8Sopenharmony_ci *
160469570cc8Sopenharmony_ci */
160569570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Invalid_Msg_011, TestSize.Level0)
160669570cc8Sopenharmony_ci{
160769570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_011 start");
160869570cc8Sopenharmony_ci
160969570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
161069570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
161169570cc8Sopenharmony_ci    AppSpawnResult result;
161269570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfoNoToken.c_str(), MSG_SPAWN_NATIVE_PROCESS);
161369570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
161469570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
161569570cc8Sopenharmony_ci    EXPECT_EQ(APPSPAWN_MSG_INVALID, result.result);
161669570cc8Sopenharmony_ci
161769570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_011 end");
161869570cc8Sopenharmony_ci}
161969570cc8Sopenharmony_ci
162069570cc8Sopenharmony_ci/**
162169570cc8Sopenharmony_ci * @brief
162269570cc8Sopenharmony_ci *  no bundle info
162369570cc8Sopenharmony_ci *
162469570cc8Sopenharmony_ci */
162569570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Invalid_Msg_012, TestSize.Level0)
162669570cc8Sopenharmony_ci{
162769570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_012 start");
162869570cc8Sopenharmony_ci
162969570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
163069570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
163169570cc8Sopenharmony_ci    AppSpawnResult result;
163269570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfoNoBundleInfo.c_str(), MSG_SPAWN_NATIVE_PROCESS);
163369570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
163469570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
163569570cc8Sopenharmony_ci    EXPECT_EQ(APPSPAWN_MSG_INVALID, result.result);
163669570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Invalid_Msg_012 end");
163769570cc8Sopenharmony_ci}
163869570cc8Sopenharmony_ci
163969570cc8Sopenharmony_ci/**
164069570cc8Sopenharmony_ci * @brief app flags
164169570cc8Sopenharmony_ci *
164269570cc8Sopenharmony_ci */
164369570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_App_Flags_001, TestSize.Level0)
164469570cc8Sopenharmony_ci{
164569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_App_Flags_001 start");
164669570cc8Sopenharmony_ci
164769570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
164869570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
164969570cc8Sopenharmony_ci    AppSpawnResult result;
165069570cc8Sopenharmony_ci    std::random_device rd;
165169570cc8Sopenharmony_ci    std::mt19937 gen(rd());
165269570cc8Sopenharmony_ci    std::uniform_int_distribution<> dis(0, 62);
165369570cc8Sopenharmony_ci    printf("number: %d\n", dis(gen));
165469570cc8Sopenharmony_ci    AppFlagsIndex number = static_cast<AppFlagsIndex>(dis(gen));
165569570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
165669570cc8Sopenharmony_ci    APPSPAWN_LOGI("number: %{public}d", number);
165769570cc8Sopenharmony_ci    int ret = AppSpawnReqMsgSetAppFlag(reqHandle, number);
165869570cc8Sopenharmony_ci    ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
165969570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
166069570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
166169570cc8Sopenharmony_ci    if (result.pid > 0) {
166269570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
166369570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
166469570cc8Sopenharmony_ci    }
166569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_App_Flags_001 end");
166669570cc8Sopenharmony_ci}
166769570cc8Sopenharmony_ci
166869570cc8Sopenharmony_ci/**
166969570cc8Sopenharmony_ci * @brief app flags
167069570cc8Sopenharmony_ci *
167169570cc8Sopenharmony_ci */
167269570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_App_Flags_002, TestSize.Level0)
167369570cc8Sopenharmony_ci{
167469570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_App_Flags_002 start");
167569570cc8Sopenharmony_ci
167669570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
167769570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
167869570cc8Sopenharmony_ci    AppSpawnResult result;
167969570cc8Sopenharmony_ci    std::random_device rd;
168069570cc8Sopenharmony_ci    std::mt19937 gen(rd());
168169570cc8Sopenharmony_ci    std::uniform_int_distribution<> dis(0, 62);
168269570cc8Sopenharmony_ci    printf("number: %d\n", dis(gen));
168369570cc8Sopenharmony_ci    AppFlagsIndex number = static_cast<AppFlagsIndex>(dis(gen));
168469570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str(), MSG_SPAWN_NATIVE_PROCESS);
168569570cc8Sopenharmony_ci    APPSPAWN_LOGI("number: %{public}d", number);
168669570cc8Sopenharmony_ci    int ret = AppSpawnReqMsgSetAppFlag(reqHandle, number);
168769570cc8Sopenharmony_ci    ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
168869570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
168969570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
169069570cc8Sopenharmony_ci    if (result.pid > 0) {
169169570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
169269570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
169369570cc8Sopenharmony_ci    }
169469570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_App_Flags_002 end");
169569570cc8Sopenharmony_ci}
169669570cc8Sopenharmony_ci
169769570cc8Sopenharmony_ci/**
169869570cc8Sopenharmony_ci * @brief app flags
169969570cc8Sopenharmony_ci *
170069570cc8Sopenharmony_ci */
170169570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_App_Flags_003, TestSize.Level0)
170269570cc8Sopenharmony_ci{
170369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_App_Flags_003 start");
170469570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // nwebspawn
170569570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
170669570cc8Sopenharmony_ci    AppSpawnResult result;
170769570cc8Sopenharmony_ci    std::random_device rd;
170869570cc8Sopenharmony_ci    std::mt19937 gen(rd());
170969570cc8Sopenharmony_ci    std::uniform_int_distribution<> dis(0, 62);
171069570cc8Sopenharmony_ci    printf("number: %d\n", dis(gen));
171169570cc8Sopenharmony_ci    AppFlagsIndex number = static_cast<AppFlagsIndex>(dis(gen));
171269570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
171369570cc8Sopenharmony_ci    APPSPAWN_LOGI("number: %{public}d", number);
171469570cc8Sopenharmony_ci    int ret = AppSpawnReqMsgSetAppFlag(reqHandle, number);
171569570cc8Sopenharmony_ci    ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
171669570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
171769570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
171869570cc8Sopenharmony_ci    if (result.pid > 0) {
171969570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
172069570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
172169570cc8Sopenharmony_ci    }
172269570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_App_Flags_003 end");
172369570cc8Sopenharmony_ci}
172469570cc8Sopenharmony_ci
172569570cc8Sopenharmony_ci/**
172669570cc8Sopenharmony_ci * @brief app flags
172769570cc8Sopenharmony_ci *
172869570cc8Sopenharmony_ci */
172969570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_App_Flags_004, TestSize.Level0)
173069570cc8Sopenharmony_ci{
173169570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_App_Flags_004 start");
173269570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // nwebspawn
173369570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
173469570cc8Sopenharmony_ci    AppSpawnResult result;
173569570cc8Sopenharmony_ci    std::random_device rd;
173669570cc8Sopenharmony_ci    std::mt19937 gen(rd());
173769570cc8Sopenharmony_ci    std::uniform_int_distribution<> dis(0, 62);
173869570cc8Sopenharmony_ci    printf("number: %d\n", dis(gen));
173969570cc8Sopenharmony_ci    AppFlagsIndex number = static_cast<AppFlagsIndex>(dis(gen));
174069570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str(), MSG_SPAWN_NATIVE_PROCESS);
174169570cc8Sopenharmony_ci    APPSPAWN_LOGI("number: %{public}d", number);
174269570cc8Sopenharmony_ci    int ret = AppSpawnReqMsgSetAppFlag(reqHandle, number);
174369570cc8Sopenharmony_ci    ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
174469570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
174569570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
174669570cc8Sopenharmony_ci    if (result.pid > 0) {
174769570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
174869570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
174969570cc8Sopenharmony_ci    }
175069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_App_Flags_004 end");
175169570cc8Sopenharmony_ci}
175269570cc8Sopenharmony_ci
175369570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Msg_001, TestSize.Level0)
175469570cc8Sopenharmony_ci{
175569570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Msg_001 start");
175669570cc8Sopenharmony_ci
175769570cc8Sopenharmony_ci    static const std::string dumpInfo = "{ \
175869570cc8Sopenharmony_ci        \"msg-type\": \"MSG_DUMP\", \
175969570cc8Sopenharmony_ci        \"msg-flags\": [ 13 ], \
176069570cc8Sopenharmony_ci        \"process-name\" : \"com.example.myapplication\" \
176169570cc8Sopenharmony_ci    }";
176269570cc8Sopenharmony_ci
176369570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
176469570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
176569570cc8Sopenharmony_ci    AppSpawnResult result;
176669570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, dumpInfo.c_str());
176769570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
176869570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
176969570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Msg_001 end");
177069570cc8Sopenharmony_ci}
177169570cc8Sopenharmony_ci
177269570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Msg_002, TestSize.Level0)
177369570cc8Sopenharmony_ci{
177469570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Msg_002 start");
177569570cc8Sopenharmony_ci    static const std::string appInfo = "{ \
177669570cc8Sopenharmony_ci        \"msg-type\": \"MSG_GET_RENDER_TERMINATION_STATUS\", \
177769570cc8Sopenharmony_ci        \"msg-flags\": [ 13 ], \
177869570cc8Sopenharmony_ci        \"process-name\" : \"com.example.myapplication\" \
177969570cc8Sopenharmony_ci    }";
178069570cc8Sopenharmony_ci
178169570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander;
178269570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
178369570cc8Sopenharmony_ci    AppSpawnResult result;
178469570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
178569570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
178669570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
178769570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
178869570cc8Sopenharmony_ci    if (result.pid > 0) {
178969570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
179069570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
179169570cc8Sopenharmony_ci    }
179269570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, appInfo.c_str(), MSG_GET_RENDER_TERMINATION_STATUS);
179369570cc8Sopenharmony_ci    ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
179469570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
179569570cc8Sopenharmony_ci    EXPECT_NE(0, result.result);
179669570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Msg_002 end");
179769570cc8Sopenharmony_ci}
179869570cc8Sopenharmony_ci
179969570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Msg_003, TestSize.Level0)
180069570cc8Sopenharmony_ci{
180169570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Msg_003 start");
180269570cc8Sopenharmony_ci    static const std::string appInfo = "{ \
180369570cc8Sopenharmony_ci        \"msg-type\": \"MSG_GET_RENDER_TERMINATION_STATUS\", \
180469570cc8Sopenharmony_ci        \"msg-flags\": [ 13 ], \
180569570cc8Sopenharmony_ci        \"process-name\" : \"com.example.myapplication\" \
180669570cc8Sopenharmony_ci    }";
180769570cc8Sopenharmony_ci
180869570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // nwebspawn
180969570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
181069570cc8Sopenharmony_ci    AppSpawnResult result;
181169570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
181269570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
181369570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
181469570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
181569570cc8Sopenharmony_ci    if (result.pid > 0) {
181669570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
181769570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
181869570cc8Sopenharmony_ci    }
181969570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, appInfo.c_str(), MSG_GET_RENDER_TERMINATION_STATUS);
182069570cc8Sopenharmony_ci    ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
182169570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
182269570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
182369570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Msg_003 end");
182469570cc8Sopenharmony_ci}
182569570cc8Sopenharmony_ci
182669570cc8Sopenharmony_ciHWTEST_F(AppSpawnModuleTest, AppSpawn_Msg_004, TestSize.Level0)
182769570cc8Sopenharmony_ci{
182869570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Msg_004 start");
182969570cc8Sopenharmony_ci    static const std::string appInfo = "{ \
183069570cc8Sopenharmony_ci        \"msg-type\": \"MSG_GET_RENDER_TERMINATION_STATUS\", \
183169570cc8Sopenharmony_ci        \"msg-flags\": [ 13 ], \
183269570cc8Sopenharmony_ci        \"process-name\" : \"com.example.myapplication\" \
183369570cc8Sopenharmony_ci    }";
183469570cc8Sopenharmony_ci
183569570cc8Sopenharmony_ci    OHOS::AppSpawnModuleTest::AppSpawnTestCommander commander(0);  // nwebspawn
183669570cc8Sopenharmony_ci    AppSpawnReqMsgHandle reqHandle;
183769570cc8Sopenharmony_ci    AppSpawnResult result;
183869570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, defaultAppInfo1.c_str());
183969570cc8Sopenharmony_ci    int ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
184069570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
184169570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
184269570cc8Sopenharmony_ci    commander.CreateMsg(reqHandle, appInfo.c_str(), MSG_GET_RENDER_TERMINATION_STATUS);
184369570cc8Sopenharmony_ci    ret = AppSpawnClientSendMsg(commander.GetClientHandle(), reqHandle, &result);
184469570cc8Sopenharmony_ci    EXPECT_EQ(0, ret);
184569570cc8Sopenharmony_ci    EXPECT_EQ(0, result.result);
184669570cc8Sopenharmony_ci    if (result.pid > 0) {
184769570cc8Sopenharmony_ci        EXPECT_EQ(0, kill(result.pid, SIGKILL));
184869570cc8Sopenharmony_ci        result.pid = DEFAULT_PID;
184969570cc8Sopenharmony_ci    }
185069570cc8Sopenharmony_ci    HILOG_INFO(LOG_CORE, "AppSpawn_Msg_004 end");
185169570cc8Sopenharmony_ci}
185269570cc8Sopenharmony_ci}  // namespace AppSpawn
185369570cc8Sopenharmony_ci}  // namespace OHOS
1854