test_golden.py::test_two_runs_are_identical — флаки: два прогона с одним seed периодически дают разные журналы #5
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Симптом
Тест
services/game-core/tests/test_golden.py::TestGoldenFullSession::test_two_runs_are_identical(DoD TASK-31, D-51: два прогона с одним seed дают идентичные журналы)
периодически падает в полном прогоне
uv run pytest -q. Изолированно(
pytest services/game-core/tests/test_golden.py) и при повторном запуске —стабильно зелёный.
Зафиксированные проявления:
в полном прогоне; следующие 3 полных прогона и изолированные запуски — зелёные.
Почему это важно
Детерминизм по seed — основа тестовой стратегии game-core (OPEN-7) и
воспроизводимости сессий (reliability.md §Тестирование). Если журналы двух
прогонов расходятся, где-то есть источник недетерминизма — тест по замыслу
ловит именно его, и «флаки» может быть симптомом реального дефекта, а не
проблемой теста.
Что проверить (гипотезы источников недетерминизма)
ts(ветвления по времени);проверить утечки состояния между тестами.
Как воспроизводить
Прогонять полный набор в цикле до падения, например:
for i in $(seq 1 20); do uv run pytest -q || break; done(тестовая БД:
docker compose up -d postgres,DATABASE_URLна 127.0.0.1).При падении — сохранить diff двух нормализованных журналов (сейчас тест
сравнивает строки целиком и diff не показывает; стоит добавить вывод
первого расходящегося события в assertion message — это упростит диагностику).
Критерий закрытия
тесте/харнессе — тогда исправлен харнес).
uv run pytest -qзелёные.