generated from coulomb/repo-seed
45 lines
1.9 KiB
Python
45 lines
1.9 KiB
Python
from phase_memory.deployment import (
|
|
MANAGED_DEPLOYMENT_SCHEMA,
|
|
managed_deployment_manifest,
|
|
validate_managed_deployment_manifest,
|
|
)
|
|
from phase_memory.service_app import ServiceAppConfig
|
|
|
|
|
|
def test_managed_deployment_manifest_declares_entrypoint_probes_and_store() -> None:
|
|
manifest = managed_deployment_manifest(
|
|
ServiceAppConfig(host="0.0.0.0", port=8090, local_store_path="/var/lib/phase-memory"),
|
|
image="registry.example/phase-memory:test",
|
|
namespace="agents",
|
|
replicas=2,
|
|
)
|
|
validation = validate_managed_deployment_manifest(manifest)
|
|
|
|
assert manifest["schema_version"] == MANAGED_DEPLOYMENT_SCHEMA
|
|
assert manifest["service"]["command"][0] == "phase-memory-service"
|
|
assert manifest["service"]["ports"][0]["container_port"] == 8090
|
|
assert manifest["probes"]["liveness"]["path"] == "/health"
|
|
assert manifest["probes"]["readiness"]["path"] == "/ready"
|
|
assert manifest["storage"]["volumes"][0]["mount_path"] == "/var/lib/phase-memory"
|
|
assert manifest["rollback"]["requires_store_snapshot"] is True
|
|
assert validation["valid"] is True
|
|
assert validation["diagnostics"] == []
|
|
|
|
|
|
def test_managed_deployment_validation_reports_missing_contracts() -> None:
|
|
manifest = {
|
|
"schema_version": MANAGED_DEPLOYMENT_SCHEMA,
|
|
"service": {"command": ["python"], "replicas": 0},
|
|
"probes": {"liveness": {"path": "/wrong"}},
|
|
"storage": {"volumes": []},
|
|
}
|
|
|
|
validation = validate_managed_deployment_manifest(manifest)
|
|
codes = {diagnostic["code"] for diagnostic in validation["diagnostics"]}
|
|
|
|
assert validation["valid"] is False
|
|
assert "managed_deployment_missing_service_entrypoint" in codes
|
|
assert "managed_deployment_probe_missing" in codes
|
|
assert "managed_deployment_store_mount_missing" in codes
|
|
assert "managed_deployment_replica_count_invalid" in codes
|