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

256 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Запуск тестов на Windows
## Оглавление
1. [Быстрый старт](#1-быстрый-старт)
2. [Вспомогательные скрипты](#2-вспомогательные-скрипты)
3. [Генерация FETCH_TRANSACTIONS задач](#3-генерация-fetch_transactions-задач)
4. [Ручной запуск (пошагово)](#4-ручной-запуск-пошагово)
5. [Мониторинг и отчёт](#5-мониторинг-и-отчёт)
6. [Ручной инжект задач](#6-ручной-инжект-задач)
7. [ADB на Windows](#7-adb-на-windows)
8. [Типовые проблемы](#8-типовые-проблемы)
9. [Быстрый чеклист](#9-быстрый-чеклист)
---
## 1. Быстрый старт
```powershell
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 при изменении кода) |
### Примеры
```powershell
# Всё автоматически
.\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` |
Скрипты принимают дополнительные аргументы:
```powershell
# Запуск сервера только для 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 видит устройство:
```powershell
tools\adb\windows\adb.exe devices
```
3. Откройте на устройстве банковское приложение на экране **списка транзакций**
### Запуск
```powershell
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. Установка зависимостей
```powershell
python --version # Python 3.9+
pip install flask
```
### 4.2. Подготовка config.ini
```ini
[net]
apiBase=http://127.0.0.1:8888
```
### 4.3. Генерация данных + запуск
```powershell
# Генерация профиля
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
```powershell
cd C:\ARC\Ver.18 # или build\Release
ARC.exe
```
---
## 5. Мониторинг и отчёт
```powershell
# Открыть отчёт в браузере (авто-обновление каждые 2 сек)
start http://127.0.0.1:8888/_admin/report/html
```
Отчёт показывает:
- **Сводку**: всего / выполнено / ошибки / в очереди
- **Группировку**: устройство → банк → задачи
- **Для каждой задачи**:
- Статус (completed / error / pending)
- Task JSON + Result JSON (успешные свёрнуты, ошибки развёрнуты)
- Скриншот (если есть) — клик для полноэкранного просмотра
- Кнопка "Копировать" на каждом JSON блоке
- Авто-обновление без сброса состояния развёрнутых блоков
```powershell
# Счётчики
(Invoke-WebRequest http://127.0.0.1:8888/_admin/state).Content | ConvertFrom-Json
```
---
## 6. Ручной инжект задач
```powershell
# Одна задача
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\`:
```powershell
tools\adb\windows\adb.exe devices
```
Если ADB занят:
```powershell
tools\adb\windows\adb.exe kill-server
tools\adb\windows\adb.exe start-server
```
---
## 8. Типовые проблемы
| Проблема | Решение |
|---|---|
| `python` не найден | Запустите `setup.ps1` — установит автоматически |
| Порт 8888 занят | `setup.ps1` убивает автоматически. Вручную: `netstat -ano \| findstr :8888``taskkill /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
```