2.8 KiB
Длительный 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 не создаёт повторной выдачи;
- после штатного завершения отсутствуют незакрытые операции, кроме явно смоделированных аварий.