147f04c9a2
Persist aggregates and server security groups in domain tables, add Cinder quota show from DB-backed defaults, align unit tests with OpenStack series, auto-pick Keystone :5000/:15000 for smoke, and document test locations plus 6514/6514 results.
78 lines
3.6 KiB
Markdown
78 lines
3.6 KiB
Markdown
**Language / Язык:** [English](README.md) | [Русский](README.ru.md)
|
||
|
||
# Тесты Pulumi OpenStack (`pulumi-tests`)
|
||
|
||
**100% покрытия = HTTP contract matrix** (каждая операция series-pack +
|
||
синтетический `HEAD` на каждый GET path), а не число ресурсов `pulumi_openstack`.
|
||
|
||
Layer A (гейт): pack ops × yoga→dalmatian на **реальных портах сервисов**
|
||
([docs/ports.md](../docs/ports.md) / [docs/ru/ports.md](../docs/ru/ports.md)),
|
||
microversions где pack их задаёт, nonempty тела успешных ответов,
|
||
`probed == declared + HEAD`, `critical=0`.
|
||
|
||
Layer B (smoke): lifecycle `pulumi_openstack` — расширяет provider surface; **не**
|
||
определяет 100%.
|
||
|
||
## Быстрый старт
|
||
|
||
```bash
|
||
# из корня репозитория
|
||
make pulumi-tests
|
||
|
||
# или
|
||
cd pulumi-tests
|
||
make up && make build
|
||
make test-pulumi-smoke # быстро: collection GET + HEAD
|
||
make test-pulumi # полная Layer A matrix × все серии
|
||
open reports/pulumi-report.html
|
||
```
|
||
|
||
## Smoke vs полный suite
|
||
|
||
| Цель | Режим | Что проверяется |
|
||
|---|---|---|
|
||
| `make test-pulumi-smoke` | Smoke (`TEST_SMOKE=1`) | Layer B + **collection GET + HEAD** с nonempty (быстро) |
|
||
| `make pulumi-tests` / `make test-pulumi` | Полная matrix | Layer B + **все ops пака × GET/POST/PUT/PATCH/DELETE** + **синтетический HEAD на каждый GET**, полнота (`total == declared + HEAD`), nonempty тел (DELETE/204/HEAD могут быть пустыми) |
|
||
|
||
Размеры паков (ops без HEAD): yoga ~1060 → antelope ~1108 → caracal ~1196 → **dalmatian ~1357**.
|
||
|
||
## Что выполняется (на каждую серию yoga → dalmatian)
|
||
|
||
1. Активация pack серии OpenStack
|
||
2. **`pulumi up`** `programs/os_coverage` (Layer B — provider smoke)
|
||
3. Проверка непустых export стека (Layer B)
|
||
4. HTTP contract matrix на **портах каталога** (токен Keystone → Nova `:8774`, Neutron `:9696`, …)
|
||
5. Assert `probed == declared + HEAD`, `critical=0`, nonempty JSON
|
||
6. `pulumi destroy`
|
||
7. Отчёты HTML/JUnit + histogram глаголов (включая HEAD)
|
||
|
||
## Отчёты
|
||
|
||
| Файл | Содержимое |
|
||
|---|---|
|
||
| `reports/pulumi-report.html` | HTML-сводка (expected vs actual + breakdown методов вкл. HEAD) |
|
||
| `reports/pulumi-junit.xml` | JUnit |
|
||
| `reports/series-<name>.json` | Детали pulumi + HTTP по серии |
|
||
| `reports/summary.json` | Агрегаты (`http_total` / `http_expected`, `http_critical`) |
|
||
|
||
## Последние результаты (2026-07-18)
|
||
|
||
Полная matrix (`make test-pulumi` / `make pulumi-tests`):
|
||
|
||
| Метрика | Значение |
|
||
|---|---|
|
||
| Серии | yoga → dalmatian (4) |
|
||
| `pulumi_ok` | 4 / 4 |
|
||
| HTTP probed | **6514 / 6514** (`declared` 4721 + синтетический `HEAD` 1793) |
|
||
| `http_critical` | **0** |
|
||
| По сериям | yoga 1464 · antelope 1530 · caracal 1649 · dalmatian 1871 |
|
||
|
||
После прогона: `reports/pulumi-report.html`. Где лежат остальные тесты репозитория:
|
||
[docs/ru/operations.md — Тестирование](../docs/ru/operations.md#тестирование).
|
||
|
||
## Approximate (не блокеры)
|
||
|
||
Nova create может пропускать длинное окно `BUILD`; многие Nova actions только
|
||
меняют status; Placement mutations и Octavia listeners/pools в основном schema /
|
||
`os_api_objects`; Neutron `router:external` выводится из shared сети `public`.
|