exchanger/docs/operations/SOAK_TEST.md

2.8 KiB
Raw Permalink Blame History

Длительный soak-тест Exchanger

Автоматическая модель 24 часов

Обычный NUnit-набор содержит ускоренный сценарий OperationalSoakTests: он моделирует 1440 минут, 480 подтверждённых выдач и 10 000 циклов создания/освобождения SessionFlow. Тест проверяет детерминированное состояние Home, отсутствие повторной выдачи и отсутствие накопления подписок. Это проверка логики, а не замена длительному процессному прогону.

Процессный прогон

tools/soak/run-runtime-soak.ps1 запускает указанный exe, проверяет его живучесть и рабочий набор памяти, пишет CSV-сэмплы и итог в artifacts/soak. По умолчанию длительность равна 24 часам.

Пример для экспортированной debug/mock-сборки:

.\tools\soak\run-runtime-soak.ps1 `
  -ExecutablePath 'C:\ExchangerSoak\Exchanger.exe' `
  -ApplicationArguments @('--mock-hardware=true', '--no-theme-dlc') `
  -DurationHours 24 `
  -SampleIntervalSeconds 60 `
  -MaximumWorkingSetMb 2048

Для короткой проверки самого runner допускается -DurationHours 0.0167 (около минуты), но такой результат не является 24-часовой приёмкой. Перед production прогон выполняется на целевом ПК с подключённым дисплеем; физическую выдачу и реальную оплату в soak-профиль не включают.

Контрольный прогон runner 2026-08-24 прошёл 12/12 пятисекундных сэмплов с пиком working set 217.73 МБ. CSV использует invariant-формат десятичных чисел и проверен через Import-Csv под русской локалью. Отчёты создаются в локальном игнорируемом каталоге artifacts/soak/.

Критерии:

  • процесс не завершился и не завис;
  • working set не превысил согласованный предел;
  • журналы не вышли за лимит конфигурации;
  • интерфейс остался на Home и принимает касания;
  • COM-reconnect не создаёт повторной выдачи;
  • после штатного завершения отсутствуют незакрытые операции, кроме явно смоделированных аварий.