53 lines
3.5 KiB
Markdown
53 lines
3.5 KiB
Markdown
# drhider — тесты загрузки и обфускации (2026-08-24, v0.0.62)
|
||
|
||
_Кластер `naeel-test-3`, v0.0.62 (лимиты 50МБ/файл, 500МБ/сессия), под 1 CPU / 2 GiB
|
||
(requests=limits, подтверждено kubectl). ВМ-буфер: `https://contracts.kube5s.ru/drhider-upload/`._
|
||
|
||
## Тест 1 — загрузка (upload-only), много + больших файлов
|
||
|
||
Корпус: 118 бинарных файлов, 480 МБ (8×45МБ + 10×10МБ + 100×200КБ). Файлы >40МБ — 8 шт.
|
||
|
||
| Этап | Результат |
|
||
|---|---|
|
||
| PUT на ВМ (P=8, `--resolve` обход DNS) | **119/119 HTTP 201**, 43.4с |
|
||
| `POST /api/upload_refs` | HTTP 200, 50.8с, `{count:119, session}` |
|
||
| `GET /api/session_files` | 119 файлов, **480.5 МБ**, 8 больших (>40МБ) |
|
||
|
||
**Вывод:** загрузка через ВМ стабильна на объёме 480МБ/119 файлов под лимитом 500МБ, 0 ошибок.
|
||
|
||
## Тест 2 — обфускация, много мелких файлов
|
||
|
||
Корпус: 100 сгенерированных `.txt`-договоров с фейковыми PII (ФИО, телефоны, ИНН, ОГРН, БИК,
|
||
р/с, к/с, паспорта, адреса, email). Сессия `bba1a7272aed`.
|
||
|
||
| Показатель | Значение |
|
||
|---|---|
|
||
| start / done | **101 / 101** (0 ошибок) |
|
||
| complete | `{total: 101, tokens: 1 569 716, llm_sec: 1924.6}` |
|
||
| SSE-время | 1995.6с (~33.3 мин) |
|
||
| ZIP | **404 — НЕ скачался** |
|
||
| CSV | **404 — НЕ скачался** |
|
||
|
||
Обфускация отработала полностью (101 done, complete пришёл, `zip_len=147861` в логе worker),
|
||
но **результат потерян при скачивании** — см. баг ниже.
|
||
|
||
## ⚠️ Найденный баг: TTL сессии (30 мин) короче долгой обфускации
|
||
|
||
- `site/session.py`: `TTL_SECONDS = 30*60`, таймер запускается при создании сессии и
|
||
**не продлевается** во время обработки (`threading.Timer`, `_clean` просто `pop(sid)`).
|
||
- Обфускация заняла 1995с (> 1800с TTL) → таймер удалил сессию посреди обработки.
|
||
- `store_result(sid, zip)` при отсутствующей сессии молча возвращает `False` → результат не сохранён.
|
||
- `GET /api/download/<sid>` и `/api/csv/<sid>` → `get_result`=None → **404**.
|
||
- Подтверждено: `session_files/bba1a7272aed` → 404; лог: `worker: done ... in 1995.0s ... zip_len=147861`.
|
||
|
||
**Почему раньше не всплыло:** в тесте 23.08 каждая сессия завершалась за 19/16 мин < TTL.
|
||
|
||
**Предлагаемый фикс:** продлевать TTL при активности обработки (cancel+restart таймера на
|
||
каждое событие прогресса, либо отдельный длинный TTL для «в обработке», либо сохранять
|
||
результат даже при истёкшей сессии). **Не делалось — ждёт «делай».**
|
||
|
||
## Прочее
|
||
- Первый прогон теста 1 упал из-за бага тест-скрипта (отправил список вместо `{files:[...]}` в
|
||
`upload_refs`) — сервис тут ни при чём.
|
||
- DNS на Krupski медленный (~5с/резолв) — в тестах обходился `curl --resolve`.
|