Clean up services created after running test
Services created during new tests weren't properly cleaned up after tests. It caused slowdown of subsequent tests as described in b/244486404. This change kills/terminates services after test with apex services. To provide some context, original change is at https://android-review.googlesource.com/q/topic:vapex_stop_service. The issue was discovered by android test monitor and filed as a P0 bug. Bug: 244486404 Change-Id: Ie64e0eb1686e94ef543a457ea49d1d7aeab38c97
This commit is contained in:
parent
344f71605c
commit
909bc47536
1 changed files with 22 additions and 7 deletions
|
|
@ -246,6 +246,27 @@ void InitApexService(const std::string_view& init_template) {
|
|||
&ServiceList::GetInstance());
|
||||
}
|
||||
|
||||
void CleanupApexServices() {
|
||||
std::vector<std::string> 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<Action>& s) -> bool {
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
void TestApexServicesInit(const std::vector<std::string>& apex_services,
|
||||
const std::vector<std::string>& other_apex_services,
|
||||
const std::vector<std::string> non_apex_services) {
|
||||
|
|
@ -270,13 +291,7 @@ void TestApexServicesInit(const std::vector<std::string>& apex_services,
|
|||
TestRemoveApexService(other_apex_services, /*exist*/ true);
|
||||
TestRemoveApexService(non_apex_services, /*exist*/ true);
|
||||
|
||||
ServiceList::GetInstance().RemoveServiceIf([&](const std::unique_ptr<Service>& s) -> bool {
|
||||
return true;
|
||||
});
|
||||
|
||||
ActionManager::GetInstance().RemoveActionIf([&](const std::unique_ptr<Action>& s) -> bool {
|
||||
return true;
|
||||
});
|
||||
CleanupApexServices();
|
||||
}
|
||||
|
||||
TEST(init, StopServiceByApexName) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue