Files
openstack-api-simulator/pulumi-tests/README.ru.md
T
inecs 147f04c9a2 Fix Nova/Cinder stateful CRUD so the full surface and Pulumi matrix pass clean.
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.
2026-07-18 09:38:45 +03:00

78 lines
3.6 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.
**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`.