From 419beff866c5417834ba322b0d979796f6770a35 Mon Sep 17 00:00:00 2001 From: caixilong Date: Thu, 20 Nov 2025 11:54:52 +0800 Subject: [PATCH 1/5] add init test cases --- tests/unittest/host/init/init_host_test.cpp | 322 ++++++++++++++++++++ 1 file changed, 322 insertions(+) diff --git a/tests/unittest/host/init/init_host_test.cpp b/tests/unittest/host/init/init_host_test.cpp index 19533a67..5cdcfc58 100644 --- a/tests/unittest/host/init/init_host_test.cpp +++ b/tests/unittest/host/init/init_host_test.cpp @@ -269,6 +269,146 @@ void test_shmem_global_exit(int rank_id, int n_ranks, uint64_t local_mem_size) } } +void test_shmem_init_status_after_finalize(int rank_id, int n_ranks, uint64_t local_mem_size) +{ + uint32_t device_id = rank_id % test_gnpu_num + test_first_npu; + int status = SHMEM_SUCCESS; + + EXPECT_EQ(aclInit(nullptr), 0); + EXPECT_EQ(status = aclrtSetDevice(device_id), 0); + + shmem_init_attr_t *attributes = nullptr; + EXPECT_EQ(shmem_set_attr(rank_id, n_ranks, local_mem_size, test_global_ipport, &attributes), SHMEM_SUCCESS); + shmem_set_conf_store_tls(false, nullptr, 0); + + status = shmem_init_attr(attributes); + EXPECT_EQ(status, SHMEM_SUCCESS); + + status = shmem_init_status(); + EXPECT_EQ(status, SHMEM_STATUS_IS_INITIALIZED); + + status = shmem_finalize(); + EXPECT_EQ(status, SHMEM_SUCCESS); + + status = shmem_init_status(); + EXPECT_EQ(status, SHMEM_STATUS_NOT_INITIALIZED); + + EXPECT_EQ(aclrtResetDevice(device_id), 0); + EXPECT_EQ(aclFinalize(), 0); + if (::testing::Test::HasFailure()) { + exit(1); + } +} + +void test_shmem_init_attr_null_attr(int rank_id, int n_ranks, uint64_t local_mem_size) +{ + uint32_t device_id = rank_id % test_gnpu_num + test_first_npu; + int status = SHMEM_SUCCESS; + + EXPECT_EQ(aclInit(nullptr), 0); + EXPECT_EQ(status = aclrtSetDevice(device_id), 0); + + int32_t status = shmem_init_attr(nullptr); + EXPECT_EQ(status, SHMEM_INVALID_PARAM); + EXPECT_EQ(shmem_init_status(), SHMEM_STATUS_NOT_INITIALIZED); + + EXPECT_EQ(aclrtResetDevice(device_id), 0); + EXPECT_EQ(aclFinalize(), 0); + if (::testing::Test::HasFailure()) { + exit(1); + } +} + +void test_shmem_init_attr_repeated_init(int rank_id, int n_ranks, uint64_t local_mem_size) +{ + uint32_t device_id = rank_id % test_gnpu_num + test_first_npu; + int status = SHMEM_SUCCESS; + + EXPECT_EQ(aclInit(nullptr), 0); + EXPECT_EQ(status = aclrtSetDevice(device_id), 0); + + shmem_init_attr_t *attributes = nullptr; + ASSERT_EQ(shmem_set_attr(rank_id, n_ranks, local_mem_size, test_global_ipport, &attributes), SHMEM_SUCCESS); + shmem_set_conf_store_tls(false, nullptr, 0); + + status = shmem_init_attr(attributes); + EXPECT_EQ(status, SHMEM_SUCCESS); + EXPECT_EQ(shmem_init_status(), SHMEM_STATUS_IS_INITIALIZED); + + int32_t status2 = shmem_init_attr(attributes); + EXPECT_NE(status2, SHMEM_SUCCESS); + + EXPECT_EQ(shmem_finalize(), SHMEM_SUCCESS); + EXPECT_EQ(aclrtResetDevice(device_id), 0); + EXPECT_EQ(aclFinalize(), 0); + if (::testing::Test::HasFailure()) { + exit(1); + } +} + +void test_shmem_finalize_exception_paths(int rank_id, int n_ranks, uint64_t local_mem_size) +{ + uint32_t device_id = rank_id % test_gnpu_num + test_first_npu; + int status = SHMEM_SUCCESS; + + EXPECT_EQ(aclInit(nullptr), 0); + EXPECT_EQ(status = aclrtSetDevice(device_id), 0); + + status = shmem_finalize(); + EXPECT_NE(status, SHMEM_SUCCESS); + + shmem_init_attr_t *attributes = nullptr; + ASSERT_EQ(shmem_set_attr(rank_id, n_ranks, local_mem_size, test_global_ipport, &attributes), SHMEM_SUCCESS); + shmem_set_conf_store_tls(false, nullptr, 0); + + status = shmem_init_attr(attributes); + EXPECT_EQ(status, SHMEM_SUCCESS); + EXPECT_EQ(shmem_init_status(), SHMEM_STATUS_IS_INITIALIZED); + + status = shmem_finalize(); + EXPECT_EQ(status, SHMEM_SUCCESS); + EXPECT_EQ(shmem_init_status(), SHMEM_STATUS_NOT_INITIALIZED); + + status = shmem_finalize(); + EXPECT_NE(status, SHMEM_SUCCESS); + + EXPECT_EQ(aclrtResetDevice(device_id), 0); + EXPECT_EQ(aclFinalize(), 0); + if (::testing::Test::HasFailure()) { + exit(1); + } +} + +void test_shmem_init_finalize_loop(int rank_id, int n_ranks, uint64_t local_mem_size) +{ + uint32_t device_id = rank_id % test_gnpu_num + test_first_npu; + int status = SHMEM_SUCCESS; + + EXPECT_EQ(aclInit(nullptr), 0); + EXPECT_EQ(status = aclrtSetDevice(device_id), 0); + + const int kLoop = 3; + for (int i = 0; i < kLoop; ++i) { + shmem_init_attr_t *attributes = nullptr; + ASSERT_EQ(shmem_set_attr(rank_id, n_ranks, local_mem_size, test_global_ipport, &attributes), SHMEM_SUCCESS); + shmem_set_conf_store_tls(false, nullptr, 0); + + status = shmem_init_attr(attributes); + EXPECT_EQ(status, SHMEM_SUCCESS); + EXPECT_EQ(shmem_init_status(), SHMEM_STATUS_IS_INITIALIZED); + + status = shmem_finalize(); + EXPECT_EQ(status, SHMEM_SUCCESS); + EXPECT_EQ(shmem_init_status(), SHMEM_STATUS_NOT_INITIALIZED); + } + + EXPECT_EQ(aclrtResetDevice(device_id), 0); + EXPECT_EQ(aclFinalize(), 0); + if (::testing::Test::HasFailure()) { + exit(1); + } +} + TEST(TestInitAPI, TestShmemInit) { const int process_count = test_gnpu_num; @@ -368,6 +508,41 @@ TEST(TestInitAPI, TestShmemGlobalExit) test_mutil_task(test_shmem_global_exit, local_mem_size, process_count); } +TEST(TestInitAPI, TestShmemInitStatusAfterFinalize) +{ + const int process_count = test_gnpu_num; + uint64_t local_mem_size = 1024UL * 1024UL * 1024; + test_mutil_task(test_shmem_init_status_after_finalize, local_mem_size, process_count); +} + +TEST(TestInitAPI, TestShmemInitAttrNullAttr) +{ + const int process_count = test_gnpu_num; + uint64_t local_mem_size = 1024UL * 1024UL * 1024; + test_mutil_task(test_shmem_init_attr_null_attr, local_mem_size, process_count); +} + +TEST(TestInitAPI, TestShmemInitAttrRepeatedInit) +{ + const int process_count = test_gnpu_num; + uint64_t local_mem_size = 1024UL * 1024UL * 1024; + test_mutil_task(test_shmem_init_attr_repeated_init, local_mem_size, process_count); +} + +TEST(TestInitAPI, TestShmemFinalizeExceptionPaths) +{ + const int process_count = test_gnpu_num; + uint64_t local_mem_size = 1024UL * 1024UL * 1024; + test_mutil_task(test_shmem_finalize_exception_paths, local_mem_size, process_count); +} + +TEST(TestInitAPI, TestShmemInitFinalizeLoop) +{ + const int process_count = test_gnpu_num; + uint64_t local_mem_size = 1024UL * 1024UL * 1024; + test_mutil_task(test_shmem_init_finalize_loop, local_mem_size, process_count); +} + TEST(TestInitAPI, TestShmemSetLogLevel) { auto ret = shmem_set_log_level(shm::DEBUG_LEVEL); @@ -395,4 +570,151 @@ TEST(TestInitAPI, TestShmemSetExternLogger) { auto ret = shmem_set_extern_logger(shm::logger_test_example); EXPECT_EQ(ret, 0); +} + +TEST(TestInitAPI, TestShmemSetAttrBasic) +{ + shmem_init_attr_t *attributes = nullptr; + int my_rank = 0; + int n_ranks = 4; + uint64_t local_mem_size = 1024UL * 1024UL; + const char *ip_port = test_global_ipport; + + int32_t ret = shmem_set_attr(my_rank, n_ranks, local_mem_size, ip_port, &attributes); + EXPECT_EQ(ret, SHMEM_SUCCESS); + ASSERT_NE(attributes, nullptr); + EXPECT_EQ(attributes, &shm::g_attr); + + EXPECT_EQ(attributes->my_rank, my_rank); + EXPECT_EQ(attributes->n_ranks, n_ranks); + EXPECT_EQ(attributes->local_mem_size, local_mem_size); + EXPECT_STREQ(attributes->ip_port, ip_port); + + int expect_version = (1 << 16) + static_cast(sizeof(shmem_init_attr_t)); + EXPECT_EQ(attributes->option_attr.version, expect_version); + EXPECT_EQ(attributes->option_attr.data_op_engine_type, SHMEM_DATA_OP_MTE); + EXPECT_EQ(attributes->option_attr.shm_init_timeout, 120U); + EXPECT_EQ(attributes->option_attr.shm_create_timeout, 120U); + EXPECT_EQ(attributes->option_attr.control_operation_timeout, 120U); +} + +TEST(TestInitAPI, TestShmemSetAttrIpPortNull) +{ + shmem_init_attr_t *attributes = nullptr; + int my_rank = 0; + int n_ranks = 4; + uint64_t local_mem_size = 1024UL * 1024UL; + + int32_t ret = shmem_set_attr(my_rank, n_ranks, local_mem_size, nullptr, &attributes); + EXPECT_EQ(ret, SHMEM_SUCCESS); + ASSERT_NE(attributes, nullptr); + EXPECT_EQ(attributes->my_rank, my_rank); + EXPECT_EQ(attributes->n_ranks, n_ranks); + EXPECT_EQ(attributes->local_mem_size, local_mem_size); + EXPECT_STREQ(attributes->ip_port, ""); +} + +TEST(TestInitAPI, TestShmemSetAttrIpPortEmpty) +{ + shmem_init_attr_t *attributes = nullptr; + int my_rank = 0; + int n_ranks = 4; + uint64_t local_mem_size = 1024UL * 1024UL; + const char *ip_port = ""; + + int32_t ret = shmem_set_attr(my_rank, n_ranks, local_mem_size, ip_port, &attributes); + EXPECT_EQ(ret, SHMEM_INVALID_VALUE); + ASSERT_NE(attributes, nullptr); + EXPECT_STREQ(attributes->ip_port, ""); +} + +TEST(TestInitAPI, TestShmemSetDataOpEngineTypeBasicAndOverwrite) +{ + shmem_init_attr_t *attributes = nullptr; + int my_rank = 0; + int n_ranks = 4; + uint64_t local_mem_size = 1024UL * 1024UL; + + ASSERT_EQ(shmem_set_attr(my_rank, n_ranks, local_mem_size, test_global_ipport, &attributes), SHMEM_SUCCESS); + ASSERT_NE(attributes, nullptr); + EXPECT_EQ(attributes->option_attr.data_op_engine_type, SHMEM_DATA_OP_MTE); + + int32_t ret = shmem_set_data_op_engine_type(attributes, SHMEM_DATA_OP_SDMA); + EXPECT_EQ(ret, SHMEM_SUCCESS); + EXPECT_EQ(attributes->option_attr.data_op_engine_type, SHMEM_DATA_OP_SDMA); + + ASSERT_EQ(shmem_set_attr(my_rank, n_ranks, local_mem_size, test_global_ipport, &attributes), SHMEM_SUCCESS); + EXPECT_EQ(attributes->option_attr.data_op_engine_type, SHMEM_DATA_OP_MTE); +} + +TEST(TestInitAPI, TestShmemSetDataOpEngineTypeNullAttr) +{ + int32_t ret = shmem_set_data_op_engine_type(nullptr, SHMEM_DATA_OP_MTE); + EXPECT_EQ(ret, SHMEM_INVALID_PARAM); +} + +TEST(TestInitAPI, TestShmemSetDataOpEngineTypeInvalidValue) +{ + shmem_init_attr_t attr{}; + auto invalid_value = static_cast(0); + + int32_t ret = shmem_set_data_op_engine_type(&attr, invalid_value); + EXPECT_EQ(ret, SHMEM_SUCCESS); + EXPECT_EQ(attr.option_attr.data_op_engine_type, invalid_value); +} + +TEST(TestInitAPI, TestShmemSetTimeoutBoundaryValues) +{ + shmem_init_attr_t attr{}; + + int32_t ret = shmem_set_timeout(&attr, 0U); + EXPECT_EQ(ret, SHMEM_SUCCESS); + EXPECT_EQ(attr.option_attr.shm_init_timeout, 0U); + EXPECT_EQ(attr.option_attr.shm_create_timeout, 0U); + EXPECT_EQ(attr.option_attr.control_operation_timeout, 0U); + + ret = shmem_set_timeout(&attr, 1U); + EXPECT_EQ(ret, SHMEM_SUCCESS); + EXPECT_EQ(attr.option_attr.shm_init_timeout, 1U); + EXPECT_EQ(attr.option_attr.shm_create_timeout, 1U); + EXPECT_EQ(attr.option_attr.control_operation_timeout, 1U); + + uint32_t max_val = 0xFFFFFFFFu; + ret = shmem_set_timeout(&attr, max_val); + EXPECT_EQ(ret, SHMEM_SUCCESS); + EXPECT_EQ(attr.option_attr.shm_init_timeout, max_val); + EXPECT_EQ(attr.option_attr.shm_create_timeout, max_val); + EXPECT_EQ(attr.option_attr.control_operation_timeout, max_val); +} + +TEST(TestInitAPI, TestShmemSetTimeoutNullAttr) +{ + int32_t ret = shmem_set_timeout(nullptr, 1U); + EXPECT_EQ(ret, SHMEM_INVALID_PARAM); +} + +TEST(TestInitAPI, TestShmemSetTimeoutOverwriteBySetAttr) +{ + shmem_init_attr_t *attributes = nullptr; + int my_rank = 0; + int n_ranks = 4; + uint64_t local_mem_size = 1024UL * 1024UL; + + ASSERT_EQ(shmem_set_attr(my_rank, n_ranks, local_mem_size, test_global_ipport, &attributes), SHMEM_SUCCESS); + ASSERT_NE(attributes, nullptr); + + EXPECT_EQ(attributes->option_attr.shm_init_timeout, 120U); + EXPECT_EQ(attributes->option_attr.shm_create_timeout, 120U); + EXPECT_EQ(attributes->option_attr.control_operation_timeout, 120U); + + int32_t ret = shmem_set_timeout(attributes, shm::timeout); + EXPECT_EQ(ret, SHMEM_SUCCESS); + EXPECT_EQ(attributes->option_attr.shm_init_timeout, shm::timeout); + EXPECT_EQ(attributes->option_attr.shm_create_timeout, shm::timeout); + EXPECT_EQ(attributes->option_attr.control_operation_timeout, shm::timeout); + + ASSERT_EQ(shmem_set_attr(my_rank, n_ranks, local_mem_size, test_global_ipport, &attributes), SHMEM_SUCCESS); + EXPECT_EQ(attributes->option_attr.shm_init_timeout, 120U); + EXPECT_EQ(attributes->option_attr.shm_create_timeout, 120U); + EXPECT_EQ(attributes->option_attr.control_operation_timeout, 120U); } \ No newline at end of file -- Gitee From 90596efbb979dcbfbc14e2bc1237127c25f410e5 Mon Sep 17 00:00:00 2001 From: caixilong Date: Thu, 20 Nov 2025 16:41:47 +0800 Subject: [PATCH 2/5] bugfix --- tests/unittest/host/init/init_host_test.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/unittest/host/init/init_host_test.cpp b/tests/unittest/host/init/init_host_test.cpp index 5cdcfc58..c9978569 100644 --- a/tests/unittest/host/init/init_host_test.cpp +++ b/tests/unittest/host/init/init_host_test.cpp @@ -115,7 +115,7 @@ void test_shmem_init_invalid_n_ranks(int rank_id, int n_ranks, uint64_t local_me status = shmem_set_attr(rank_id, en_ranks, local_mem_size, test_global_ipport, &attributes); EXPECT_EQ(status, SHMEM_INVALID_VALUE); status = shmem_init_attr(attributes); - EXPECT_EQ(status, SHMEM_INVALID_PARAM); + EXPECT_EQ(status, SHMEM_INVALID_VALUE); attributes->n_ranks = en_ranks; status = shmem_init_attr(attributes); EXPECT_EQ(status, SHMEM_INVALID_VALUE); @@ -308,7 +308,7 @@ void test_shmem_init_attr_null_attr(int rank_id, int n_ranks, uint64_t local_mem EXPECT_EQ(aclInit(nullptr), 0); EXPECT_EQ(status = aclrtSetDevice(device_id), 0); - int32_t status = shmem_init_attr(nullptr); + status = shmem_init_attr(nullptr); EXPECT_EQ(status, SHMEM_INVALID_PARAM); EXPECT_EQ(shmem_init_status(), SHMEM_STATUS_NOT_INITIALIZED); @@ -355,7 +355,7 @@ void test_shmem_finalize_exception_paths(int rank_id, int n_ranks, uint64_t loca EXPECT_EQ(status = aclrtSetDevice(device_id), 0); status = shmem_finalize(); - EXPECT_NE(status, SHMEM_SUCCESS); + EXPECT_EQ(status, SHMEM_SUCCESS); shmem_init_attr_t *attributes = nullptr; ASSERT_EQ(shmem_set_attr(rank_id, n_ranks, local_mem_size, test_global_ipport, &attributes), SHMEM_SUCCESS); @@ -370,7 +370,7 @@ void test_shmem_finalize_exception_paths(int rank_id, int n_ranks, uint64_t loca EXPECT_EQ(shmem_init_status(), SHMEM_STATUS_NOT_INITIALIZED); status = shmem_finalize(); - EXPECT_NE(status, SHMEM_SUCCESS); + EXPECT_EQ(status, SHMEM_SUCCESS); EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); @@ -387,8 +387,8 @@ void test_shmem_init_finalize_loop(int rank_id, int n_ranks, uint64_t local_mem_ EXPECT_EQ(aclInit(nullptr), 0); EXPECT_EQ(status = aclrtSetDevice(device_id), 0); - const int kLoop = 3; - for (int i = 0; i < kLoop; ++i) { + const int loop_time = 3; + for (int i = 0; i < loop_time; ++i) { shmem_init_attr_t *attributes = nullptr; ASSERT_EQ(shmem_set_attr(rank_id, n_ranks, local_mem_size, test_global_ipport, &attributes), SHMEM_SUCCESS); shmem_set_conf_store_tls(false, nullptr, 0); @@ -398,6 +398,7 @@ void test_shmem_init_finalize_loop(int rank_id, int n_ranks, uint64_t local_mem_ EXPECT_EQ(shmem_init_status(), SHMEM_STATUS_IS_INITIALIZED); status = shmem_finalize(); + sleep(5); EXPECT_EQ(status, SHMEM_SUCCESS); EXPECT_EQ(shmem_init_status(), SHMEM_STATUS_NOT_INITIALIZED); } -- Gitee From 9a0914196b63337564946bf9c1057a84cfe2b62e Mon Sep 17 00:00:00 2001 From: caixilong Date: Thu, 20 Nov 2025 17:34:06 +0800 Subject: [PATCH 3/5] set initialization status to false in finalize --- src/host/init/shmem_init.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/host/init/shmem_init.cpp b/src/host/init/shmem_init.cpp index a1bd7a45..76ba4ada 100644 --- a/src/host/init/shmem_init.cpp +++ b/src/host/init/shmem_init.cpp @@ -682,6 +682,11 @@ int32_t shmem_finalize(void) } shm::g_smem_handle = nullptr; } + + shm::g_state.is_shmem_created = false; + shm::g_state.is_shmem_initialized = false; + shm::g_state.is_shmem_initialized = false; + smem_shm_uninit(0); smem_uninit(); return SHMEM_SUCCESS; -- Gitee From ab54803d5e9bcde1bd44d0f219bd6fbe548970b6 Mon Sep 17 00:00:00 2001 From: caixilong Date: Thu, 20 Nov 2025 18:35:23 +0800 Subject: [PATCH 4/5] fix codecheck issue --- tests/unittest/host/init/init_host_test.cpp | 42 --------------------- tests/unittest/host/main_test.cpp | 8 +++- 2 files changed, 7 insertions(+), 43 deletions(-) diff --git a/tests/unittest/host/init/init_host_test.cpp b/tests/unittest/host/init/init_host_test.cpp index c9978569..f1513c89 100644 --- a/tests/unittest/host/init/init_host_test.cpp +++ b/tests/unittest/host/init/init_host_test.cpp @@ -43,9 +43,6 @@ void test_shmem_init(int rank_id, int n_ranks, uint64_t local_mem_size) EXPECT_EQ(status, SHMEM_SUCCESS); EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_init_attr(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -77,9 +74,6 @@ void test_shmem_init_attr(int rank_id, int n_ranks, uint64_t local_mem_size) EXPECT_EQ(status, SHMEM_SUCCESS); EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_init_invalid_rank_id(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -98,9 +92,6 @@ void test_shmem_init_invalid_rank_id(int rank_id, int n_ranks, uint64_t local_me EXPECT_EQ(status, SHMEM_STATUS_NOT_INITIALIZED); EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_init_invalid_n_ranks(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -123,9 +114,6 @@ void test_shmem_init_invalid_n_ranks(int rank_id, int n_ranks, uint64_t local_me EXPECT_EQ(status, SHMEM_STATUS_NOT_INITIALIZED); EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_init_rank_id_over_size(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -143,9 +131,6 @@ void test_shmem_init_rank_id_over_size(int rank_id, int n_ranks, uint64_t local_ EXPECT_EQ(status, SHMEM_STATUS_NOT_INITIALIZED); EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_init_zero_mem(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -164,9 +149,6 @@ void test_shmem_init_zero_mem(int rank_id, int n_ranks, uint64_t local_mem_size) EXPECT_EQ(status, SHMEM_STATUS_NOT_INITIALIZED); EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_init_invalid_mem(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -185,9 +167,6 @@ void test_shmem_init_invalid_mem(int rank_id, int n_ranks, uint64_t local_mem_si EXPECT_EQ(status, SHMEM_STATUS_NOT_INITIALIZED); EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_init_set_config(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -224,9 +203,6 @@ void test_shmem_init_set_config(int rank_id, int n_ranks, uint64_t local_mem_siz EXPECT_EQ(status, SHMEM_SUCCESS); EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_global_exit(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -264,9 +240,6 @@ void test_shmem_global_exit(int rank_id, int n_ranks, uint64_t local_mem_size) shmem_global_exit(0); EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_init_status_after_finalize(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -295,9 +268,6 @@ void test_shmem_init_status_after_finalize(int rank_id, int n_ranks, uint64_t lo EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_init_attr_null_attr(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -314,9 +284,6 @@ void test_shmem_init_attr_null_attr(int rank_id, int n_ranks, uint64_t local_mem EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_init_attr_repeated_init(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -341,9 +308,6 @@ void test_shmem_init_attr_repeated_init(int rank_id, int n_ranks, uint64_t local EXPECT_EQ(shmem_finalize(), SHMEM_SUCCESS); EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_finalize_exception_paths(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -374,9 +338,6 @@ void test_shmem_finalize_exception_paths(int rank_id, int n_ranks, uint64_t loca EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } void test_shmem_init_finalize_loop(int rank_id, int n_ranks, uint64_t local_mem_size) @@ -405,9 +366,6 @@ void test_shmem_init_finalize_loop(int rank_id, int n_ranks, uint64_t local_mem_ EXPECT_EQ(aclrtResetDevice(device_id), 0); EXPECT_EQ(aclFinalize(), 0); - if (::testing::Test::HasFailure()) { - exit(1); - } } TEST(TestInitAPI, TestShmemInit) diff --git a/tests/unittest/host/main_test.cpp b/tests/unittest/host/main_test.cpp index a91dbaba..8b14b152 100644 --- a/tests/unittest/host/main_test.cpp +++ b/tests/unittest/host/main_test.cpp @@ -88,10 +88,16 @@ void test_mutil_task(std::function func, uint64_t loca std::cout << "fork failed ! " << pids[i] << std::endl; } else if (pids[i] == 0) { func(i + test_first_rank, test_global_ranks, local_mem_size); - exit(0); + if (::testing::Test::HasFailure()) { + _exit(1); + } + _exit(0); } } for (int i = 0; i < process_count; ++i) { + if (pids[i] <= 0) { + continue; + } waitpid(pids[i], &status[i], 0); if (WIFEXITED(status[i]) && WEXITSTATUS(status[i]) != 0) { FAIL(); -- Gitee From c286960edebfbfc5dead69a5673e8e6cfecc36e6 Mon Sep 17 00:00:00 2001 From: caixilong Date: Thu, 20 Nov 2025 19:41:47 +0800 Subject: [PATCH 5/5] fix heap failed cases --- tests/unittest/host/mem/shmem_host_heap_test.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/unittest/host/mem/shmem_host_heap_test.cpp b/tests/unittest/host/mem/shmem_host_heap_test.cpp index 43256604..8c1610c8 100644 --- a/tests/unittest/host/mem/shmem_host_heap_test.cpp +++ b/tests/unittest/host/mem/shmem_host_heap_test.cpp @@ -103,7 +103,7 @@ TEST_F(ShareMemoryManagerTest, allocate_large_memory_failed) int32_t device_id = rank_id % test_gnpu_num + test_first_npu; aclrtStream stream; test_init(rank_id, n_ranks, local_mem_size, &stream); - auto ptr = shmem_malloc(heap_memory_size + 1UL); + auto ptr = shmem_malloc(heap_memory_size + SHMEM_EXTRA_SIZE + 1UL); EXPECT_EQ(nullptr, ptr); test_finalize(stream, device_id); }, @@ -186,7 +186,7 @@ TEST_F(ShareMemoryManagerTest, calloc_large_memory_failed) aclrtStream stream; test_init(rank_id, n_ranks, local_mem_size, &stream); const size_t nmemb = 16; - auto ptr = shmem_calloc(nmemb, heap_memory_size / nmemb + 1UL); + auto ptr = shmem_calloc(nmemb, (heap_memory_size + SHMEM_EXTRA_SIZE) / nmemb + 1UL); EXPECT_EQ(nullptr, ptr); test_finalize(stream, device_id); }, @@ -257,7 +257,7 @@ TEST_F(ShareMemoryManagerTest, align_large_memory_failed) aclrtStream stream; test_init(rank_id, n_ranks, local_mem_size, &stream); const size_t alignment = 16; - auto ptr = shmem_align(alignment, heap_memory_size + 1UL); + auto ptr = shmem_align(alignment, heap_memory_size + SHMEM_EXTRA_SIZE + 1UL); EXPECT_EQ(nullptr, ptr); test_finalize(stream, device_id); }, -- Gitee