From e4f9d31f9fb9bcc88adf42b094d68c29fae4f40e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A8=8A=E6=99=AF=E4=B9=90?= Date: Mon, 21 Jul 2025 10:51:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B=E3=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 樊景乐 --- modules/common/appspawn_encaps.c | 2 +- test/mock/app_spawn_stub.h | 14 ++ .../app_spawn_common_test.cpp | 143 ++++++++++++++++++ 3 files changed, 158 insertions(+), 1 deletion(-) diff --git a/modules/common/appspawn_encaps.c b/modules/common/appspawn_encaps.c index 6d492d80..42f2ebb7 100644 --- a/modules/common/appspawn_encaps.c +++ b/modules/common/appspawn_encaps.c @@ -337,7 +337,7 @@ APPSPAWN_STATIC void FreeEncapsInfo(UserEncaps *encapsInfo) } /* set ohos.encaps.fork.count to encaps */ -static int SpawnSetMaxPids(AppSpawningCtx *property, UserEncaps *encapsInfo) +APPSPAWN_STATIC int SpawnSetMaxPids(AppSpawningCtx *property, UserEncaps *encapsInfo) { uint32_t maxPidCount = 0; if (GetAppSpawnMsgType(property) != MSG_SPAWN_NATIVE_PROCESS) { diff --git a/test/mock/app_spawn_stub.h b/test/mock/app_spawn_stub.h index d451750e..7e8f5a01 100644 --- a/test/mock/app_spawn_stub.h +++ b/test/mock/app_spawn_stub.h @@ -146,6 +146,20 @@ int AddPermissionIntArrayToValue(cJSON *arrayItem, UserEncap *encap, int arraySi int AddPermissionBoolArrayToValue(cJSON *arrayItem, UserEncap *encap, int arraySize); int AddPermissionStrArrayToValue(cJSON *arrayItem, UserEncap *encap); int AddPermissionArrayToValue(cJSON *permissionItemArr, UserEncap *encap); +int OpenEncapsFile(void); +int EnableEncapsForProc(int encapsFileFd); +uint32_t SpawnGetMaxPids(AppSpawningCtx *property); +int AddPermissionStrToValue(const char *valueStr, UserEncap *encap); +int AddPermissionIntArrayToValue(cJSON *arrayItem, UserEncap *encap, int arraySize); +AddPermissionBoolArrayToValue(cJSON *arrayItem, UserEncap *encap, int arraySize); +AddPermissionStrArrayToValue(cJSON *arrayItem, UserEncap *encap); +AddPermissionArrayToValue(cJSON *permissionItemArr, UserEncap *encap); +AddPermissionItemToEncapsInfo(UserEncap *encap, cJSON *permissionItem); +AddMembersToEncapsInfo(cJSON *extInfoJson, UserEncaps *encapsInfo); +void FreeEncapsInfo(UserEncaps *encapsInfo); +int SpawnSetMaxPids(AppSpawningCtx *property, UserEncaps *encapsInfo); +int SpawnSetPermissions(AppSpawningCtx *property, UserEncaps *encapsInfo); +int SpawnSetEncapsPermissions(AppSpawnMgr *content, AppSpawningCtx *property); #ifdef APPSPAWN_HITRACE_OPTION int FilterAppSpawnTrace(AppSpawnMgr *content, AppSpawningCtx *property); diff --git a/test/unittest/app_spawn_standard_test/app_spawn_common_test.cpp b/test/unittest/app_spawn_standard_test/app_spawn_common_test.cpp index 52e09332..0c92ec3f 100644 --- a/test/unittest/app_spawn_standard_test/app_spawn_common_test.cpp +++ b/test/unittest/app_spawn_standard_test/app_spawn_common_test.cpp @@ -1418,4 +1418,147 @@ HWTEST_F(AppSpawnCommonTest, App_Spawn_SetCapabilities, TestSize.Level0) ASSERT_EQ(ret, 0); } +HWTEST_F(AppSpawnCommonTest, App_Spawn_OpenEncapsFile, TestSize.Level0) +{ + int fd = -1; + fd = OpenEncapsFile(); + EXPECT_EQ(fd, -1); + int ret = 0; + ret = EnableEncapsForProc(fd); + EXPECT_EQ(ret, 0); + char *encapsInfo = NULL; + ret = WriteEncapsInfo(fd, ENCAPS_MAX_TYPE_MODE, encapsInfo, 0); + EXPECT_EQ(ret, APPSPAWN_ARG_INVALID); + ret = WriteEncapsInfo(fd, ENCAPS_PROC_TYPE_MODE, encapsInfo, 0); + EXPECT_NE(ret, 0); + const char encapsInfo0[] = "{\"encaps\" : {\"encaps.count\":3,\"ohos.encaps.fork.count\":128}}"; + ret = WriteEncapsInfo(fd, ENCAPS_PERMISSION_TYPE_MODE, encapsInfo0, 0); + EXPECT_EQ(ret, 0); + const char encapsInfo0[] = "{\"encaps\" : {\"encaps.count\":1,\"ohos.encaps.fork.count\":128}}"; + ret = WriteEncapsInfo(fd, ENCAPS_PERMISSION_TYPE_MODE, encapsInfo0, 0); + EXPECT_EQ(ret, 0); +} + +HWTEST_F(AppSpawnCommonTest, App_Spawn_SpawnGetMaxPids_001, TestSize.Level0) +{ + AppSpawnClientHandle clientHandle = nullptr; + AppSpawnReqMsgHandle reqHandle = 0; + AppSpawningCtx *property = nullptr; + int ret = 0; + ret = SpawnGetMaxPids(nullptr, property); + EXPECT_EQ(ret, 0); + do { + ret = AppSpawnClientInit(NWEBSPAWN_SERVER_NAME, &clientHandle); + APPSPAWN_CHECK(ret == 0, break, "Failed to create reqMgr %{public}s", APPSPAWN_SERVER_NAME); + reqHandle = g_testHelper.CreateMsg(clientHandle, MSG_APP_SPAWN, 1); + APPSPAWN_CHECK(reqHandle != INVALID_REQ_HANDLE, break, + "Failed to create req %{public}s", NWEBSPAWN_SERVER_NAME); + const char *max = "128"; + ret = AppSpawnReqMsgAddStringInfo(reqHandle, MSG_EXT_NAME_MAX_CHILD_PROCCESS_MAX, max); + APPSPAWN_CHECK(ret == 0, break, "Failed to create max %{public}s", APPSPAWN_SERVER_NAME); + property = g_testHelper.GetAppProperty(clientHandle, reqHandle); + APPSPAWN_CHECK_ONLY_EXPER(property != nullptr, break); + ret = SpawnGetMaxPids(nullptr, property); + EXPECT_EQ(ret, 128); + } while (0); + DeleteAppSpawningCtx(property); + AppSpawnClientDestroy(clientHandle); +} + +HWTEST_F(AppSpawnCommonTest, App_Spawn_SpawnGetMaxPids_002, TestSize.Level0) +{ + AppSpawnClientHandle clientHandle = nullptr; + AppSpawnReqMsgHandle reqHandle = 0; + AppSpawningCtx *property = nullptr; + int ret = 0; + do { + ret = AppSpawnClientInit(NWEBSPAWN_SERVER_NAME, &clientHandle); + APPSPAWN_CHECK(ret == 0, break, "Failed to create reqMgr %{public}s", APPSPAWN_SERVER_NAME); + reqHandle = g_testHelper.CreateMsg(clientHandle, MSG_APP_SPAWN, 1); + APPSPAWN_CHECK(reqHandle != INVALID_REQ_HANDLE, break, + "Failed to create req %{public}s", NWEBSPAWN_SERVER_NAME); + const char *max = "128a"; + ret = AppSpawnReqMsgAddStringInfo(reqHandle, MSG_EXT_NAME_MAX_CHILD_PROCCESS_MAX, max); + APPSPAWN_CHECK(ret == 0, break, "Failed to create max %{public}s", APPSPAWN_SERVER_NAME); + property = g_testHelper.GetAppProperty(clientHandle, reqHandle); + APPSPAWN_CHECK_ONLY_EXPER(property != nullptr, break); + ret = SpawnGetMaxPids(nullptr, property); + EXPECT_EQ(ret, 0); + } while (0); + DeleteAppSpawningCtx(property); + AppSpawnClientDestroy(clientHandle); +} + +HWTEST_F(AppSpawnCommonTest, App_Spawn_SpawnGetMaxPids_003, TestSize.Level0) +{ + AppSpawnClientHandle clientHandle = nullptr; + AppSpawnReqMsgHandle reqHandle = 0; + AppSpawningCtx *property = nullptr; + int ret = 0; + do { + ret = AppSpawnClientInit(NWEBSPAWN_SERVER_NAME, &clientHandle); + APPSPAWN_CHECK(ret == 0, break, "Failed to create reqMgr %{public}s", APPSPAWN_SERVER_NAME); + reqHandle = g_testHelper.CreateMsg(clientHandle, MSG_APP_SPAWN, 1); + APPSPAWN_CHECK(reqHandle != INVALID_REQ_HANDLE, break, + "Failed to create req %{public}s", NWEBSPAWN_SERVER_NAME); + const char *max = "abcd"; + ret = AppSpawnReqMsgAddStringInfo(reqHandle, MSG_EXT_NAME_MAX_CHILD_PROCCESS_MAX, max); + APPSPAWN_CHECK(ret == 0, break, "Failed to create max %{public}s", APPSPAWN_SERVER_NAME); + property = g_testHelper.GetAppProperty(clientHandle, reqHandle); + APPSPAWN_CHECK_ONLY_EXPER(property != nullptr, break); + ret = SpawnGetMaxPids(nullptr, property); + EXPECT_EQ(ret, 0); + } while (0); + DeleteAppSpawningCtx(property); + AppSpawnClientDestroy(clientHandle); +} + +HWTEST_F(AppSpawnCommonTest, App_Spawn_SpawnSetMaxPids_001, TestSize.Level0) +{ + AppSpawnClientHandle clientHandle = nullptr; + AppSpawnReqMsgHandle reqHandle = 0; + AppSpawningCtx *property = nullptr; + int ret = 0; + do { + ret = AppSpawnClientInit(NWEBSPAWN_SERVER_NAME, &clientHandle); + APPSPAWN_CHECK(ret == 0, break, "Failed to create reqMgr %{public}s", APPSPAWN_SERVER_NAME); + reqHandle = g_testHelper.CreateMsg(clientHandle, MSG_APP_SPAWN, 1); + APPSPAWN_CHECK(reqHandle != INVALID_REQ_HANDLE, break, + "Failed to create req %{public}s", NWEBSPAWN_SERVER_NAME); + const char *max = "abcd"; + ret = AppSpawnReqMsgAddStringInfo(reqHandle, MSG_EXT_NAME_MAX_CHILD_PROCCESS_MAX, max); + APPSPAWN_CHECK(ret == 0, break, "Failed to create max %{public}s", APPSPAWN_SERVER_NAME); + property = g_testHelper.GetAppProperty(clientHandle, reqHandle); + APPSPAWN_CHECK_ONLY_EXPER(property != nullptr, break); + ret = SpawnSetMaxPids(nullptr, property, nullptr); + EXPECT_EQ(ret, 0); + } while (0); + DeleteAppSpawningCtx(property); + AppSpawnClientDestroy(clientHandle); +} + +HWTEST_F(AppSpawnCommonTest, App_Spawn_SpawnSetMaxPids_002, TestSize.Level0) +{ + AppSpawnClientHandle clientHandle = nullptr; + AppSpawnReqMsgHandle reqHandle = 0; + AppSpawningCtx *property = nullptr; + int ret = 0; + do { + ret = AppSpawnClientInit(NWEBSPAWN_SERVER_NAME, &clientHandle); + APPSPAWN_CHECK(ret == 0, break, "Failed to create reqMgr %{public}s", APPSPAWN_SERVER_NAME); + reqHandle = g_testHelper.CreateMsg(clientHandle, MSG_APP_SPAWN, 1); + APPSPAWN_CHECK(reqHandle != INVALID_REQ_HANDLE, break, + "Failed to create req %{public}s", NWEBSPAWN_SERVER_NAME); + const char *max = "abcd"; + ret = AppSpawnReqMsgAddStringInfo(reqHandle, MSG_EXT_NAME_MAX_CHILD_PROCCESS_MAX, max); + APPSPAWN_CHECK(ret == 0, break, "Failed to create max %{public}s", APPSPAWN_SERVER_NAME); + property = g_testHelper.GetAppProperty(clientHandle, reqHandle); + APPSPAWN_CHECK_ONLY_EXPER(property != nullptr, break); + ret = SpawnSetMaxPids(nullptr, property, nullptr); + EXPECT_EQ(ret, 0); + } while (0); + DeleteAppSpawningCtx(property); + AppSpawnClientDestroy(clientHandle); +} + } // namespace OHOS -- Gitee