1
0
forked from BRT/arc
arc/tests/mock_server/WINDOWS.md

5.2 KiB
Raw Blame History

Запуск тестов на Windows


1. Установка зависимостей

# Python 3.9+ (если нет — скачать с python.org, при установке включить «Add to PATH»)
python --version

# Flask
pip install flask

2. Подготовка config.ini

В config.ini (рядом с ARC.exe) переключить apiBase:

[net]
apiBase=http://127.0.0.1:8888

Совет: держите отдельную копию config.ini.mock, а перед тестом copy config.ini.mock config.ini.


3. Запуск mock-сервера

cd tests\mock_server
python mock_server.py --port 8888

Должны увидеть:

[mock] state cleared — starting fresh
[mock] loaded default_profile.json: 3 bank_profiles, 3 materials
[mock] loaded pool: 19 FETCH_TRANSACTIONS across 3 materials
 * Running on http://127.0.0.1:8888

Флаги:

  • --ft-per-material 3 — сколько FETCH_TRANSACTIONS на материал (default 3)
  • --seed 42 — фиксированный RNG для воспроизводимости

4. Запуск ARC

В отдельном терминале (cmd/PowerShell):

cd build\Release
ARC.exe

Или через CLion: Run → ARC.

При логине мок автоматически поставит задачи (1 FETCH_PROFILE + 3 FETCH_TRANSACTIONS на каждый материал). Задачи раздаются по 1 на material за поллинг — следующая только после результата предыдущей.


5. Мониторинг и отчёт

# Открыть отчёт в браузере (авто-обновление каждые 2 сек)
start http://127.0.0.1:8888/_admin/report/html

# Счётчики
curl -s http://127.0.0.1:8888/_admin/state

# Полный JSON-отчёт
curl -s http://127.0.0.1:8888/_admin/report

Если curl нет, используйте PowerShell:

# Счётчики
(Invoke-WebRequest http://127.0.0.1:8888/_admin/state).Content | ConvertFrom-Json

# Полный отчёт в файл
Invoke-WebRequest http://127.0.0.1:8888/_admin/report -OutFile report.json

6. Ручной инжект задач

# Одна задача
curl -X POST http://127.0.0.1:8888/_admin/inject ^
  -H "Content-Type: application/json" ^
  --data-binary @scenarios\tecno_ozon_fetch_profile.json

# 5 случайных из пула
python inject_random.py --count 5

# Повторный бутстрап
curl -X POST http://127.0.0.1:8888/_admin/bootstrap

# Сброс (очистка очереди + результатов)
curl -X POST http://127.0.0.1:8888/_admin/reset

7. ADB на Windows

ARC использует ADB из tools\adb\windows\. Убедитесь, что:

tools\adb\windows\adb.exe devices

показывает устройства в статусе device.

Если ADB занят другим процессом (Android Studio, scrcpy), закройте его:

tools\adb\windows\adb.exe kill-server
tools\adb\windows\adb.exe start-server
tools\adb\windows\adb.exe devices

8. Типовые проблемы (Windows-специфичные)

  • python не найден → использовать py или python3. Или добавить Python в PATH.
  • Порт 8888 занятnetstat -ano | findstr :8888, затем taskkill /PID <pid> /F. Или запустить мок на другом порту: python mock_server.py --port 9999 и поменять apiBase в config.ini.
  • curl нет → использовать Invoke-WebRequest (PowerShell) или установить curl через winget install curl.
  • Firewall блокирует → разрешить python.exe в Windows Firewall (или отключить на время теста). Мок слушает только 127.0.0.1 — внешний доступ не нужен.
  • ARC не видит устройства → проверить USB-драйверы, включить «USB debugging» на телефоне, подтвердить RSA-ключ.
  • Кодировка в консолиchcp 65001 перед запуском мока (UTF-8), иначе русские символы в логах могут быть кракозябрами.
  • SSL ошибки при сборке ARC → убедиться, что OpenSSL DLL скопированы в директорию сборки (cmake --build делает это автоматически через post-build commands в CMakeLists.txt).

9. Быстрый чеклист

[ ] Python 3.9+ установлен, pip install flask
[ ] config.ini: apiBase=http://127.0.0.1:8888
[ ] Устройства в adb devices → device
[ ] Терминал 1: python mock_server.py --port 8888
[ ] Терминал 2: ARC.exe
[ ] Браузер: http://127.0.0.1:8888/_admin/report/html
[ ] Дождаться completed = 12 в отчёте
[ ] Вернуть config.ini: apiBase=http://93.183.75.134:8005