kin: auto-commit after pipeline
This commit is contained in:
parent
9bd5c22cb5
commit
c3314b9125
1 changed files with 47 additions and 0 deletions
|
|
@ -399,3 +399,50 @@ def test_check_parent_alive_process_lookup_error_aborts(conn):
|
||||||
task = models.get_task(conn, "VDOL-001")
|
task = models.get_task(conn, "VDOL-001")
|
||||||
assert task["status"] == "blocked"
|
assert task["status"] == "blocked"
|
||||||
assert str(dead_ppid) in (task.get("blocked_reason") or "")
|
assert str(dead_ppid) in (task.get("blocked_reason") or "")
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# KIN-OBS-019: регрессионные тесты через inspect.getsource() — decision #367
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def test_watchdog_source_has_no_sqlite3_connect():
|
||||||
|
"""Регрессия: watchdog не должен содержать прямой вызов sqlite3.connect() (decision #367)."""
|
||||||
|
import core.watchdog as wd
|
||||||
|
source = inspect.getsource(wd)
|
||||||
|
assert "sqlite3.connect" not in source, (
|
||||||
|
"REGRESSION: core/watchdog.py содержит sqlite3.connect() — "
|
||||||
|
"должен использовать get_connection() из core.db"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_watchdog_source_has_no_explicit_process_lookup_error():
|
||||||
|
"""Регрессия: watchdog не должен явно упоминать ProcessLookupError (decision #357).
|
||||||
|
|
||||||
|
Обработка мёртвых процессов унифицирована через OSError + errno.ESRCH.
|
||||||
|
"""
|
||||||
|
import core.watchdog as wd
|
||||||
|
source = inspect.getsource(wd)
|
||||||
|
assert "ProcessLookupError" not in source, (
|
||||||
|
"REGRESSION: core/watchdog.py явно использует ProcessLookupError — "
|
||||||
|
"должен использовать OSError + errno.ESRCH"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_check_dead_pipelines_kill_succeeds_no_change(tmp_path):
|
||||||
|
"""os.kill успешно (нет исключения) → процесс жив, статус задачи не меняется."""
|
||||||
|
fake_pid = 54323
|
||||||
|
db_path, task_id, pipeline_id = _db_with_running_pipeline(tmp_path, fake_pid)
|
||||||
|
|
||||||
|
# os.kill returns None (no exception) — process is alive
|
||||||
|
with patch("core.watchdog.os.kill", return_value=None):
|
||||||
|
_check_dead_pipelines(db_path)
|
||||||
|
|
||||||
|
conn = init_db(db_path=str(db_path))
|
||||||
|
task = models.get_task(conn, task_id)
|
||||||
|
pipeline_row = conn.execute(
|
||||||
|
"SELECT status FROM pipelines WHERE id=?", (pipeline_id,)
|
||||||
|
).fetchone()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
assert task["status"] != "blocked"
|
||||||
|
assert pipeline_row["status"] == "running"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue