From e202842fb11cd2af3cd8060b34978c6c942f285c Mon Sep 17 00:00:00 2001 From: yucheng Date: Wed, 23 Sep 2026 13:54:26 +0000 Subject: [PATCH] test(integration): require a replacement worker after SIGKILL Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .../observability/test_guardrail_effects.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/tests/integration/observability/test_guardrail_effects.py b/tests/integration/observability/test_guardrail_effects.py index 67b98506418..f1b4e610e42 100644 --- a/tests/integration/observability/test_guardrail_effects.py +++ b/tests/integration/observability/test_guardrail_effects.py @@ -8,6 +8,7 @@ from pathlib import Path from typing import Final import httpx +import psutil import pytest import yaml from integration._support.client import Gateway, eventually @@ -965,19 +966,25 @@ def test_responses_pre_call_denial_stream_survives_worker_kill(gateway: Gateway, candidate: Final = owned.gateway with candidate.scenario() as scenario: model: Final = scenario.model(api_base=_dead_api_base()) - children: Final = tuple( - member.pid for member in group_members(owned.process.pid) if member.pid != owned.process.pid + members: Final = tuple( + member for member in group_members(owned.process.pid) if member.pid != owned.process.pid ) - assert len(children) >= 2, children - os.kill(children[0], signal.SIGKILL) + children: Final = tuple(member.pid for member in members) + workers: Final = tuple( + member.pid for member in members if any("spawn_main" in part for part in member.cmdline()) + ) + assert len(workers) >= 2, workers + os.kill(workers[0], signal.SIGKILL) expected: Final = len(children) eventually( lambda: tuple( member.pid for member in group_members(owned.process.pid) - if member.pid != owned.process.pid and member.is_running() + if member.pid != owned.process.pid + and member.is_running() + and member.status() != psutil.STATUS_ZOMBIE ), - lambda pids: len(pids) >= expected, + lambda pids: len(pids) >= expected and any(pid not in children for pid in pids), seconds=30, )