Files
openstack-api-simulator/tests/openstack/conformance/test_live_surface.py
T
inecs 6033967e6a Initial commit: stateful OpenStack API laboratory simulator.
Ship Keystone auth, multi-service handlers (Yoga→Dalmatian), Compose/Helm
packaging, API contract packs, and pytest/Pulumi coverage labs.
2026-07-18 04:26:48 +03:00

58 lines
1.5 KiB
Python

"""Live gateway probe: every pack operation must be handled (no 5xx / 501)."""
from __future__ import annotations
import os
import urllib.request
import pytest
from app.openstack.surface_probe import format_report, probe_series
pytestmark = pytest.mark.integration
def _pick_host() -> str:
candidates = [
os.environ.get("OS_PROBE_HOST"),
os.environ.get("OS_HOST"),
"http://127.0.0.1:5000",
"http://api-gateway:5000",
"http://localhost:5000",
]
for host in candidates:
if not host:
continue
try:
with urllib.request.urlopen(f"{host.rstrip('/')}/health/live", timeout=3) as res:
if res.status == 200:
return host.rstrip("/")
except Exception:
continue
return ""
HOST = _pick_host()
@pytest.fixture(scope="module", autouse=True)
def _require_gateway():
if not HOST:
pytest.skip("OpenStack gateway unreachable")
@pytest.mark.parametrize("series", ["yoga", "antelope", "caracal", "dalmatian"])
def test_all_get_collections_live(series: str) -> None:
report = probe_series(series, host=HOST, collections_only=True)
assert report.results, series
if report.failures:
pytest.fail(format_report(report))
@pytest.mark.parametrize("series", ["yoga", "antelope", "caracal", "dalmatian"])
def test_all_operations_live(series: str) -> None:
report = probe_series(series, host=HOST)
assert len(report.results) >= 900
if report.failures:
pytest.fail(format_report(report))