test: make process kill integration test resilient
Some checks failed
ci/woodpecker/pr/check Pipeline failed

This commit is contained in:
Tasnim Kabir Sadik
2026-05-16 17:02:25 +06:00
parent d9c028564e
commit 6112c71abc
4 changed files with 15 additions and 8 deletions

View File

@ -2,7 +2,7 @@ openapi: "3.1.0"
info:
title: Wrenn API
description: MicroVM-based code execution platform API.
version: "0.1.3"
version: "0.1.4"
servers:
- url: http://localhost:8080

View File

@ -1,6 +1,6 @@
# generated by datamodel-codegen:
# filename: openapi.yaml
# timestamp: 2026-04-22T20:21:34+00:00
# timestamp: 2026-05-04T20:57:00+00:00
from __future__ import annotations
from pydantic import AwareDatetime, BaseModel, EmailStr, Field

View File

@ -15,6 +15,17 @@ pytestmark = pytest.mark.integration
_env_loaded = False
def _wait_for_pid_dead(capsule: Capsule, pid: int, timeout: float = 5.0) -> bool:
deadline = time.monotonic() + timeout
while time.monotonic() < deadline:
result = capsule.commands.run(f"ps -p {pid} -o stat= 2>/dev/null || true")
state = result.stdout.strip()
if not state or state.startswith("Z"):
return True
time.sleep(0.2)
return False
def _ensure_env() -> None:
global _env_loaded
if _env_loaded:
@ -218,11 +229,7 @@ class TestCommands:
def test_kill_process(self):
handle = self.capsule.commands.run("sleep 30", background=True)
self.capsule.commands.kill(handle.pid)
time.sleep(0.5)
processes = self.capsule.commands.list()
pids = [p.pid for p in processes]
assert handle.pid not in pids
assert _wait_for_pid_dead(self.capsule, handle.pid)
def test_run_duration_ms(self):
result = self.capsule.commands.run("sleep 1")

2
uv.lock generated
View File

@ -1,5 +1,5 @@
version = 1
revision = 3
revision = 2
requires-python = ">=3.13"
resolution-markers = [
"python_full_version >= '3.14'",