tester(ET): auto-commit from tester run_id=200
This commit is contained in:
74
docs/work-items/ORCH-053/13-test-report.md
Normal file
74
docs/work-items/ORCH-053/13-test-report.md
Normal file
@@ -0,0 +1,74 @@
|
||||
---
|
||||
type: test-report
|
||||
work_item_id: ORCH-053
|
||||
result: PASS
|
||||
---
|
||||
|
||||
# Test Report — ORCH-053 (Sweeper потерянных webhook / reconciler)
|
||||
|
||||
## Окружение
|
||||
- Python: 3.12.13
|
||||
- pytest: 8.3.3 (plugins: anyio-4.13.0, asyncio-0.23.8; asyncio mode=AUTO)
|
||||
- Ветка: `feature/ORCH-053-sweeper-webhook-stuck-task`
|
||||
- Дата: 2026-06-06
|
||||
- Review verdict: APPROVED (`12-review.md`)
|
||||
|
||||
## Команда прогона
|
||||
`python -m pytest tests/ -v --tb=short` → **563 passed, 1 warning, 12.09s**
|
||||
(warning — известный PydanticDeprecatedSince20 в `src/config.py`, не связан с ORCH-053).
|
||||
|
||||
## Результаты по тест-плану (`04-test-plan.yaml`)
|
||||
|
||||
| TC ID | Описание | Тест | Результат |
|
||||
|-------|----------|------|-----------|
|
||||
| TC-01 | F-1: продвижение застрявшей development-задачи | test_reconciler::test_tc01_advances_stuck_development_task | PASS |
|
||||
| TC-02 | Источник истины — гейт, advance только через advance_stage(finished_agent=None) | test_reconciler::test_tc02_advances_via_advance_stage_finished_agent_none | PASS |
|
||||
| TC-03 | Активный job → задача пропускается | test_reconciler::test_tc03_active_job_skipped | PASS |
|
||||
| TC-04 | Per-stage grace, граница age>=grace | test_reconciler::test_tc04_grace_boundary | PASS |
|
||||
| TC-05 | grace_for_stage: overrides + невалидный JSON → дефолт | test_reconciler::test_tc05_grace_for_stage_overrides / _invalid_json_falls_back | PASS |
|
||||
| TC-06 | Нет спама нотификаций на красном гейте | test_reconciler::test_tc06_red_gate_no_spam | PASS |
|
||||
| TC-07 | Тишина при синхронности | test_reconciler::test_tc07_silence_when_in_sync | PASS |
|
||||
| TC-08 | AC-16: F-1 не продвигает analysis | test_reconciler::test_tc08_analysis_not_advanced_by_f1 | PASS |
|
||||
| TC-09 | Never-raise изолирует сбой одной задачи | test_reconciler::test_tc09_never_raise_isolates_failure | PASS |
|
||||
| TC-10 | Kill-switch (reconcile_enabled / reconcile_plane_enabled) | test_reconciler::test_tc10_kill_switch_disables_gate / _plane_switch_mutes_only_f2 | PASS |
|
||||
| TC-11 | F-2: In Progress без задачи → handle_status_start | test_reconciler_plane::test_tc11_in_progress_without_task_starts_pipeline | PASS |
|
||||
| TC-12 | F-2: Approved → handle_verdict(approved=True) | test_reconciler_plane::test_tc12_approved_replays_verdict | PASS |
|
||||
| TC-13 | F-2: Rejected → handle_verdict(approved=False) | test_reconciler_plane::test_tc13_rejected_replays_verdict | PASS |
|
||||
| TC-14 | Идемпотентность F-2: активный job / в пределах grace | test_reconciler_plane::test_tc14_active_job_skips / test_tc14b_within_grace_skipped | PASS |
|
||||
| TC-15 | AC-4 анти-дубль на создании (create_task_atomic) | test_reconciler_plane::test_tc15_create_task_atomic_no_duplicate | PASS |
|
||||
| TC-16 | list_issues_by_state never-raise + пагинация/фильтр | test_reconciler_plane::test_tc16_list_issues_never_raises_on_error / _paginates_and_filters | PASS |
|
||||
| TC-17 | F-2 опрашивает все проекты, резолвит state per-project | test_reconciler_plane::test_tc17_polls_all_projects_resolves_states_per_project | PASS |
|
||||
| TC-18 | F-3: sha→branch БД-fallback однозначный матч | test_gitea_sha_resolve::test_tc18_db_fallback_unique_match_advances | PASS |
|
||||
| TC-19 | F-3: неоднозначность → нет ложного матча | test_gitea_sha_resolve::test_tc19_db_fallback_ambiguous_no_match | PASS |
|
||||
| TC-20 | F-4: лог-строка разблокировки + Telegram (вкл/выкл) | test_reconciler::test_tc20_unblock_logs_and_notifies / _no_telegram_when_disabled | PASS |
|
||||
| TC-21 | Restart-safe daemon-поток: start/stop/идемпотентный start | test_reconciler::test_tc21_daemon_thread_lifecycle | PASS |
|
||||
| TC-22 | Конфиг reconcile_* дефолты + env ORCH_ | test_config::test_reconcile_settings_defaults / _env_override | PASS |
|
||||
| TC-23 | Регресс реестров STAGE_TRANSITIONS / QG_CHECKS не изменены | test_qg_registry_snapshot::test_tc20_qg_registry_unchanged / _qg_callables_unchanged / _stage_transitions_unchanged | PASS |
|
||||
|
||||
Все 23 TC покрыты тестами и зелёные (целевые файлы: 36 passed).
|
||||
|
||||
## Smoke test API (прод-контейнер 8500, только read-only GET, без касания состояния)
|
||||
- `GET /health` → 200 `{"status":"ok","service":"orchestrator"}`
|
||||
- `GET /status` → 200 (active_tasks отдаётся; видна задача id=44 ORCH-053 на стадии testing)
|
||||
- `GET /queue` → 200 (counts/max_concurrency/resilience отдаются)
|
||||
- Блок `reconcile` в `/queue` на проде ОТСУТСТВУЕТ — ожидаемо: прод работает на старом коде,
|
||||
ORCH-053 ещё не задеплоен. В коде ветки блок реализован (`src/main.py:131` —
|
||||
`"reconcile": reconciler.status()`). Появится после deploy-staging/deploy.
|
||||
|
||||
## Покрытие Acceptance Criteria (`03-acceptance-criteria.md`)
|
||||
AC-1…AC-16 — покрыты соответствующими TC (см. таблицу) и зелёные.
|
||||
AC-17 (документация — golden source) — подтверждён на стадии review (APPROVED, секция
|
||||
«Документация»): README.md архитектуры, ADR-001, adr-0007, CHANGELOG.md, INFRA.md обновлены.
|
||||
|
||||
## Вывод pytest (хвост)
|
||||
```
|
||||
======================= 563 passed, 1 warning in 12.09s ========================
|
||||
```
|
||||
Целевые файлы ORCH-053:
|
||||
```
|
||||
======================== 36 passed, 1 warning in 1.20s =========================
|
||||
```
|
||||
|
||||
## Итог
|
||||
**PASS** — полный регресс зелёный (563 passed), все 23 TC из тест-плана выполнены,
|
||||
acceptance-criteria покрыты, smoke прод-API здоров. Задача готова к стадии `deploy-staging`.
|
||||
Reference in New Issue
Block a user