6033967e6a
Ship Keystone auth, multi-service handlers (Yoga→Dalmatian), Compose/Helm packaging, API contract packs, and pytest/Pulumi coverage labs.
58 lines
1.5 KiB
Python
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))
|