Files
drhider/History/tests/2026-08-24-tests-upload-and-obfuscation.md
T

53 lines
3.5 KiB
Markdown
Raw 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.
# 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`.