131e2e63d2
Record offline 161 passed, green test-vsphere probes, and full pulumi-tests 7/7 with REST matrix 1987/1987 (critical=0); note the Terraform cookbook binary mismatch separately.
78 lines
3.6 KiB
Markdown
78 lines
3.6 KiB
Markdown
# Гибридный lab-набор pulumi для vmware-api-simulator
|
||
|
||
**Language / Язык:** [English](README.md) | [Русский](README.ru.md)
|
||
|
||
Гибрид под `pulumi-tests/`:
|
||
|
||
1. **Layer A (обязателен для «100%»)** — HTTP contract matrix: все `IMPLEMENTED`
|
||
REST `verb+path` × majors **6–9**, плюс синтетический **HEAD** на каждый GET
|
||
2. **Layer B (smoke / lifecycle)** — официальный
|
||
[`pulumi-vsphere`](https://www.pulumi.com/registry/packages/vsphere/)
|
||
3. Deep REST CRUD (session / folder / tag / content library / VM)
|
||
4. SOAP-операции из `/sdk/vimService.wsdl` (без нового SOAP universe)
|
||
|
||
Одним `pulumi-vsphere` закрыть ~1092 REST `verb×path` нельзя — **100% = HTTP-матрица**
|
||
(`coverage probed/declared`, `critical=0`), а не число provider-ресурсов.
|
||
|
||
## Последний lab-прогон (2026-07-18)
|
||
|
||
Полный гибрид (`make pulumi-tests`, seed-профиль `small`):
|
||
|
||
| Проверка | Результат |
|
||
|----------|-----------|
|
||
| Кейсы | **7 / 7 passed** (`PU-INV`, `PU-FOLDER`, `PU-VM`, `PU-TAG`, `PU-REST`, `PU-CRUD`, `PU-SOAP`) |
|
||
| Layer A REST matrix | **1987 / 1987** (`critical=0`) по majors 6–9 |
|
||
| Verb histogram | GET 682 · HEAD 682 · POST 301 · PUT 96 · PATCH 91 · DELETE 135 |
|
||
|
||
Артефакты (локальная копия с тома `lab-reports`; каталог в `.gitignore`):
|
||
`pulumi-tests/reports/pulumi-report.html`,
|
||
`pulumi-tests/reports/pulumi-summary.json`.
|
||
|
||
Связанные прогоны того же дня:
|
||
|
||
| Набор | Результат |
|
||
|-------|-----------|
|
||
| `make test` (offline unit + contract) | **161 passed** |
|
||
| `make test-vsphere` pytest + surface/matrix/dump/nonempty | **73** pytest passed; matrix/surface/nonempty **0 failures** |
|
||
| Client cookbooks (часть `test-vsphere`) | Python / Ansible URI / Pulumi-style OK; **Terraform cookbook** упал (`Exec format error` на `.tools/terraform` — несовпадение host/arch, не регрессия API) |
|
||
|
||
## Критерии pass (Layer A)
|
||
|
||
| Проверка | Правило |
|
||
|----------|---------|
|
||
| Declared | `methods_for_major(M)` минус session DELETE, плюс `HEAD` на каждый GET |
|
||
| Probed | Ровно один auth’d probe на каждый declared (`probed == declared`) |
|
||
| Critical | `0` — нет 5xx/501; нет `"stub": true` / пустого тела на inventory-critical GET (major 9) |
|
||
| Coverage | `{probed - critical}/{declared}` (aggregate + per major) |
|
||
| Verb histogram | Включая `HEAD` |
|
||
|
||
## Что запускается
|
||
|
||
| Кейс | Слой | Заметки |
|
||
|------|------|---------|
|
||
| `PU-INV` … `PU-TAG` | B · pulumi-vsphere | Lifecycle / inventory smoke |
|
||
| `PU-REST` | **A · HTTP matrix** | `IMPLEMENTED` × 6–9 + HEAD (smoke: major 9) |
|
||
| `PU-CRUD` / `PU-SOAP` | extras | Deep CRUD + существующий SOAP |
|
||
|
||
## Быстрый старт
|
||
|
||
```bash
|
||
make pulumi-tests # полный гибрид
|
||
make pulumi-tests-smoke # PU-INV + Layer A major-9
|
||
```
|
||
|
||
После прогона HTML-отчёт:
|
||
|
||
```bash
|
||
mkdir -p pulumi-tests/reports
|
||
cd pulumi-tests && docker compose --profile test run --rm --no-deps \
|
||
-v "$(pwd)/reports:/out" pulumi-runner \
|
||
cp /reports/pulumi-report.html /reports/pulumi-summary.json /out/
|
||
open reports/pulumi-report.html
|
||
```
|
||
|
||
Шлюз (в compose): `https://api-gateway`. Хост-алиас: `127.0.0.1:28443`
|
||
(не занимает `https://localhost` / `:18443` основного lab — после тестов
|
||
`make down`).
|
||
Seed: `small`. Артефакты: `rest.coverage_line`, `rest.critical`, `rest.by_verb`.
|