Skip to content

Latest commit

 

History

History
63 lines (51 loc) · 3.29 KB

File metadata and controls

63 lines (51 loc) · 3.29 KB

СПИСОК ФАЙЛОВ

  • services/q_core_agent/state/tests/test_types.py

Вход и цель

Краткий разбор модуля тестов test_types.py; цель — обзор и выявление рисков.

Сбор контекста

  • [Факт] Модуль содержит unit‑тесты для DTO и enum'ов FSM.
  • [Факт] Используются pytest, uuid, time, FrozenInstanceError.
  • [Гипотеза] Файл покрывает критический функционал StateStore, предполагается запуск в CI.

Локализация артефакта

  • Путь: services/q_core_agent/state/tests/test_types.py
  • Окружение: Python, pytest.

Фактический разбор

  • [Факт] Классы тестов: TestFsmState, TestTransitionDTO, TestFsmSnapshotDTO, TestInitialSnapshot, TestNextSnapshot, TestEdgeCases.
  • [Факт] Проверяются значения enum, неизменяемость DTO, генерация UUID, обработка истории, переходы и edge‑кейсы (Unicode, overflow).
  • [Факт] Тесты используют create_transition, initial_snapshot, next_snapshot.

Роль в системе и связи

  • [Факт] Гарантирует корректность ключевых типов состояния FSM.
  • [Гипотеза] Служит опорой для разработки StateStore; может использоваться при рефакторинге.

Несоответствия и риски

  • [Гипотеза][Med] Отсутствует cleanup после больших историй.
  • [Гипотеза][Low] Некоторые тесты полагаются на системное время без таймаутов.

Мини-патчи (safe-fix)

  • [Патч] Добавить явное ожидание для проверок времени.
  • [Патч] Ограничить размер large_history для ускорения CI.

Рефактор-скетч

class TestTransitionDTO:
    def make_transition(self):
        return create_transition(FsmState.IDLE, FsmState.ACTIVE, "X")

Примеры использования

# 1
transition = create_transition(FsmState.BOOTING, FsmState.IDLE, "BOOT")
# 2
snapshot = initial_snapshot()
# 3
next_snap = next_snapshot(current=snapshot, new_state=FsmState.IDLE, reason="BOOT_COMPLETE")
# 4
pytest.main(["-k", "TestFsmState"])
# 5
uuid.UUID(snapshot.snapshot_id)

Тест-хуки/чек-лист

  • Запуск pytest services/q_core_agent/state/tests/test_types.py.
  • Проверка генерации UUID.
  • Гарантия неизменяемости DTO через FrozenInstanceError.

Вывод

Модуль покрывает основные сценарии FSM DTO. В ближайшее время стоит оптимизировать тесты времени и большие истории. В долгосрочной перспективе добавить негативные проверки для StateStore. Общий статус — тесты стабильны, но возможна оптимизация.

СПИСОК ФАЙЛОВ

  • services/q_core_agent/state/tests/test_types.py