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

10 KiB
Raw Permalink Blame History

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

Оглавление

  1. Быстрый старт
  2. Вспомогательные скрипты
  3. Генерация FETCH_TRANSACTIONS задач
  4. Ручной запуск (пошагово)
  5. Мониторинг и отчёт
  6. Ручной инжект задач
  7. ADB на Windows
  8. Типовые проблемы
  9. Быстрый чеклист

1. Быстрый старт

cd tests\mock_server
powershell -ExecutionPolicy Bypass -File setup.ps1

Скрипт setup.ps1 автоматически:

  1. Проверяет / устанавливает Python 3.12+ (через winget)
  2. Устанавливает Flask
  3. Создаёт вспомогательные скрипты gen_transactions.ps1 и run_server.ps1
  4. Находит config.ini и проверяет базу данных
  5. Удаляет старые сгенерированные данные (профиль + scenarios, пул не трогает)
  6. Генерирует default_profile.json и FETCH_PROFILE scenarios из БД
  7. Очищает таблицу events в БД
  8. Если порт занят — убивает старый процесс
  9. Переключает config.ini на mock (apiBase=http://127.0.0.1:8888)
  10. Показывает сводку: устройства, профили, материалы, пул транзакций
  11. Запускает mock-сервер и открывает HTML-отчёт в браузере

Параметры

Параметр По умолчанию Описание
-Port 8888 Порт mock-сервера
-FtPerMaterial 3 FETCH_TRANSACTIONS на материал при бутстрапе (из пула)
-Banks все Банки через запятую: ozon, dushanbe_city_bank, black
-Types все Типы задач: FETCH_PROFILE, FETCH_TRANSACTIONS
-SkipInstall Пропустить установку Python/Flask
-GenerateOnly Только сгенерировать данные, не запускать сервер
-Clean Также очистить пул транзакций (scenarios/pool/)
-Debug Flask debug режим (auto-reload при изменении кода)

Примеры

# Всё автоматически
.\setup.ps1

# Только Ozon, только FETCH_TRANSACTIONS
.\setup.ps1 -Banks ozon -Types FETCH_TRANSACTIONS

# Debug режим с 5 транзакциями на материал
.\setup.ps1 -Banks ozon -FtPerMaterial 5 -Debug

# Полная очистка (включая пул транзакций)
.\setup.ps1 -Clean

2. Вспомогательные скрипты

После первого запуска setup.ps1 в папке tests\mock_server\ появляются скрипты с зашитым путём до Python:

Скрипт Назначение Запуск
gen_transactions.ps1 Генерация FETCH_TRANSACTIONS с устройства powershell -ExecutionPolicy Bypass -File gen_transactions.ps1
run_server.ps1 Запуск mock-сервера powershell -ExecutionPolicy Bypass -File run_server.ps1
setup.ps1 Полная установка + генерация + запуск powershell -ExecutionPolicy Bypass -File setup.ps1

Скрипты принимают дополнительные аргументы:

# Запуск сервера только для Ozon, только FETCH_TRANSACTIONS
powershell -ExecutionPolicy Bypass -File run_server.ps1 --banks ozon --types FETCH_TRANSACTIONS

# Генерация с явным серийником
powershell -ExecutionPolicy Bypass -File gen_transactions.ps1 --serial 28291FDH300712

3. Генерация FETCH_TRANSACTIONS задач

FETCH_TRANSACTIONS задачи генерируются только вручную с живого устройства.

Подготовка

  1. Подключите устройство по USB
  2. Убедитесь что ADB видит устройство:
    tools\adb\windows\adb.exe devices
    
  3. Откройте на устройстве банковское приложение на экране списка транзакций

Запуск

cd tests\mock_server
powershell -ExecutionPolicy Bypass -File gen_transactions.ps1

Скрипт:

  1. Покажет меню с активными материалами
  2. Выберите нужный или all
  3. Подтвердите что список транзакций открыт → Enter
  4. Автоматически пройдёт по транзакциям (не трогайте телефон!)
  5. Для Ozon: парсит заголовки дат, определяет дату каждой транзакции по позиции на экране, из деталей берёт только время
  6. Для Dushanbe: время конвертируется из Asia/Dushanbe (UTC+5)
  7. Сохраняет в scenarios/pool/ с номером карты в имени файла:
    pixel_7_ozon_7919_01_minus_108_ft_01.json
    pixel_7_ozon_9865_01_minus_108_ft_01.json
    pixel_7_dushanbe_city_bank_3258_01_plus_5_ft_01.json
    

Важно

  • Если у банка два материала (две карты), генерируются отдельные файлы для каждого
  • При смене устройств/аккаунтов нужно перегенерировать pool — material_id в файлах должны совпадать с default_profile.json

4. Ручной запуск (пошагово)

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

python --version    # Python 3.9+
pip install flask

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

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

4.3. Генерация данных + запуск

# Генерация профиля
python tests\mock_server\gen_mock_data.py

# Запуск сервера
cd tests\mock_server
python mock_server.py --port 8888 --banks ozon --types FETCH_TRANSACTIONS

# Debug режим (auto-reload)
python mock_server.py --port 8888 --banks ozon --debug

4.4. Запуск ARC

cd C:\ARC\Ver.18    # или build\Release
ARC.exe

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

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

Отчёт показывает:

  • Сводку: всего / выполнено / ошибки / в очереди
  • Группировку: устройство → банк → задачи
  • Для каждой задачи:
    • Статус (completed / error / pending)
    • Task JSON + Result JSON (успешные свёрнуты, ошибки развёрнуты)
    • Скриншот (если есть) — клик для полноэкранного просмотра
    • Кнопка "Копировать" на каждом JSON блоке
  • Авто-обновление без сброса состояния развёрнутых блоков
# Счётчики
(Invoke-WebRequest http://127.0.0.1:8888/_admin/state).Content | ConvertFrom-Json

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

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

# Повторный бутстрап
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

Если ADB занят:

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

8. Типовые проблемы

Проблема Решение
python не найден Запустите setup.ps1 — установит автоматически
Порт 8888 занят setup.ps1 убивает автоматически. Вручную: netstat -ano | findstr :8888taskkill /PID <pid> /F
App restarted ошибки Мок-сервер чистит events в БД при старте. Запускайте сервер до ARC
Pool material_id не совпадает gen_mock_data.py обновил material_id. Перегенерируйте pool
Transaction not found Баг поиска — анализировать логи (device= в ошибке)
Page load error Ozon WebView не загрузился — проблема интернета/устройства
Скриншот не привязался Нет internal_task_id — обновить ARC
Кракозябры в консоли chcp 65001 (UTF-8). Скрипты .ps1 делают автоматически
No active materials Нет профилей с проверенным PIN. Запустить ARC с боевым сервером
Firewall Разрешить python.exe. Мок слушает только 127.0.0.1

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

[ ] powershell -ExecutionPolicy Bypass -File setup.ps1 -Banks ozon
[ ] Устройства в adb devices → device
[ ] (опционально) gen_transactions.ps1 для пула транзакций
[ ] ARC.exe запущен (отдельный терминал)
[ ] Браузер: http://127.0.0.1:8888/_admin/report/html
[ ] Дождаться completed = всего в отчёте
[ ] Вернуть config.ini: apiBase=http://93.183.75.134:8005