diff --git a/init/init_test.cpp b/init/init_test.cpp index 8362390cc..5c1e9efb0 100644 --- a/init/init_test.cpp +++ b/init/init_test.cpp @@ -246,6 +246,27 @@ void InitApexService(const std::string_view& init_template) { &ServiceList::GetInstance()); } +void CleanupApexServices() { + std::vector names; + for (const auto& s : ServiceList::GetInstance()) { + names.push_back(s->name()); + } + + for (const auto& name : names) { + auto s = ServiceList::GetInstance().FindService(name); + auto pid = s->pid(); + ServiceList::GetInstance().RemoveService(*s); + if (pid > 0) { + kill(pid, SIGTERM); + kill(pid, SIGKILL); + } + } + + ActionManager::GetInstance().RemoveActionIf([&](const std::unique_ptr& s) -> bool { + return true; + }); +} + void TestApexServicesInit(const std::vector& apex_services, const std::vector& other_apex_services, const std::vector non_apex_services) { @@ -270,13 +291,7 @@ void TestApexServicesInit(const std::vector& apex_services, TestRemoveApexService(other_apex_services, /*exist*/ true); TestRemoveApexService(non_apex_services, /*exist*/ true); - ServiceList::GetInstance().RemoveServiceIf([&](const std::unique_ptr& s) -> bool { - return true; - }); - - ActionManager::GetInstance().RemoveActionIf([&](const std::unique_ptr& s) -> bool { - return true; - }); + CleanupApexServices(); } TEST(init, StopServiceByApexName) {