# Длительный soak-тест Exchanger ## Автоматическая модель 24 часов Обычный NUnit-набор содержит ускоренный сценарий `OperationalSoakTests`: он моделирует 1440 минут, 480 подтверждённых выдач и 10 000 циклов создания/освобождения `SessionFlow`. Тест проверяет детерминированное состояние Home, отсутствие повторной выдачи и отсутствие накопления подписок. Это проверка логики, а не замена длительному процессному прогону. ## Процессный прогон `tools/soak/run-runtime-soak.ps1` запускает указанный exe, проверяет его живучесть и рабочий набор памяти, пишет CSV-сэмплы и итог в `artifacts/soak`. По умолчанию длительность равна 24 часам. Пример для экспортированной debug/mock-сборки: ```powershell .\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 не создаёт повторной выдачи; - после штатного завершения отсутствуют незакрытые операции, кроме явно смоделированных аварий.