已合并
修复多次信号注册BUG #1338
jinyingqi创建于 3月31日
修复多次信号注册BUG #1338
已合并
jinyingqi创建于 3月31日
2 个文件变更+14-0
@@ -286,6 +286,7 @@ static void newSigHandler(int signum) {
286}286}
287 287 
288static void RegisterSiganlHandler(ProfAclMgr* ptr) {288static void RegisterSiganlHandler(ProfAclMgr* ptr) {
289+ if (oldSigHandler != NULL) return;
289 oldSigHandler = signal(SIGINT, newSigHandler);290 oldSigHandler = signal(SIGINT, newSigHandler);
290 profAclMgrObjPtr = ptr;291 profAclMgrObjPtr = ptr;
291 MSPROF_LOGI("RegisterSiganlHandler done");292 MSPROF_LOGI("RegisterSiganlHandler done");
@@ -365,6 +365,19 @@ TEST_F(MSPROF_ACL_CORE_UTEST, ProfAclInit_failed) {
365 analysis::dvvp::common::utils::Utils::RemoveDir(result);365 analysis::dvvp::common::utils::Utils::RemoveDir(result);
366}366}
367 367 
368+static void CustomerSigHandler(int signum) {
369+ MSPROF_LOGI("CustomerSigHandler");
370+}
371+
372+TEST_F(MSPROF_ACL_CORE_UTEST, RegisterSignalHandlerTwice) {
373+ signal(SIGINT, CustomerSigHandler);
374+ EXPECT_EQ(Msprofiler::Api::ProfAclMgr::oldSigHandler, NULL);
375+ RegisterSiganlHandler();
376+ EXPECT_EQ(Msprofiler::Api::ProfAclMgr::oldSigHandler, CustomerSigHandler);
377+ RegisterSiganlHandler();
378+ EXPECT_EQ(Msprofiler::Api::ProfAclMgr::oldSigHandler, CustomerSigHandler);
379+}
380+ 
368TEST_F(MSPROF_ACL_CORE_UTEST, acl_api) {381TEST_F(MSPROF_ACL_CORE_UTEST, acl_api) {
369 GlobalMockObject::verify();382 GlobalMockObject::verify();
370 MOCKER_CPP(&Analysis::Dvvp::Common::Config::ConfigManager::GetPlatformType)383 MOCKER_CPP(&Analysis::Dvvp::Common::Config::ConfigManager::GetPlatformType)