已合并
修复多次信号注册BUG #1338
jinyingqi创建于 3月31日
修复多次信号注册BUG #1338
已合并
共 2 个文件变更+14-0
| @@ -286,6 +286,7 @@ static void newSigHandler(int signum) { | |||
| 286 | } | 286 | } |
| 287 | 287 | ||
| 288 | static void RegisterSiganlHandler(ProfAclMgr* ptr) { | 288 | static 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 | + | ||
| 368 | TEST_F(MSPROF_ACL_CORE_UTEST, acl_api) { | 381 | TEST_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) |