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