Spaces:
Running
Running
| from __future__ import annotations | |
| import click | |
| import headroom.cli.wrap as wrap_cli | |
| class _Manifest: | |
| profile = "default" | |
| preset = "persistent-service" | |
| supervisor_kind = "service" | |
| health_url = "http://127.0.0.1:8787/readyz" | |
| def test_ensure_proxy_recovers_matching_persistent_deployment(monkeypatch) -> None: | |
| calls: list[str] = [] | |
| monkeypatch.setattr(wrap_cli, "_check_proxy", lambda port: False) | |
| monkeypatch.setattr(wrap_cli, "_find_persistent_manifest", lambda port: _Manifest()) | |
| monkeypatch.setattr("headroom.install.health.probe_ready", lambda url: False) | |
| monkeypatch.setattr( | |
| "headroom.install.supervisors.start_supervisor", | |
| lambda manifest: calls.append(f"start:{manifest.profile}"), | |
| ) | |
| monkeypatch.setattr( | |
| "headroom.install.runtime.wait_ready", lambda manifest, timeout_seconds=45: True | |
| ) | |
| monkeypatch.setattr( | |
| wrap_cli, | |
| "_start_proxy", | |
| lambda *args, **kwargs: (_ for _ in ()).throw( | |
| AssertionError("ephemeral proxy should not start") | |
| ), | |
| ) | |
| result = wrap_cli._ensure_proxy(8787, False) | |
| assert result is None | |
| assert calls == ["start:default"] | |
| def test_ensure_proxy_recovers_persistent_deployment_when_socket_is_bound(monkeypatch) -> None: | |
| calls: list[str] = [] | |
| monkeypatch.setattr(wrap_cli, "_check_proxy", lambda port: True) | |
| monkeypatch.setattr(wrap_cli, "_find_persistent_manifest", lambda port: _Manifest()) | |
| monkeypatch.setattr("headroom.install.health.probe_ready", lambda url: False) | |
| monkeypatch.setattr( | |
| "headroom.install.supervisors.start_supervisor", | |
| lambda manifest: calls.append(f"start:{manifest.profile}"), | |
| ) | |
| monkeypatch.setattr( | |
| "headroom.install.runtime.wait_ready", lambda manifest, timeout_seconds=45: True | |
| ) | |
| result = wrap_cli._ensure_proxy(8787, False) | |
| assert result is None | |
| assert calls == ["start:default"] | |
| def test_ensure_proxy_rejects_unhealthy_persistent_deployment(monkeypatch) -> None: | |
| monkeypatch.setattr(wrap_cli, "_check_proxy", lambda port: True) | |
| monkeypatch.setattr(wrap_cli, "_find_persistent_manifest", lambda port: _Manifest()) | |
| monkeypatch.setattr("headroom.install.health.probe_ready", lambda url: False) | |
| monkeypatch.setattr(wrap_cli, "_recover_persistent_proxy", lambda port: False) | |
| try: | |
| wrap_cli._ensure_proxy(8787, False) | |
| except click.ClickException as exc: | |
| assert "is not healthy" in str(exc) | |
| else: | |
| raise AssertionError("expected unhealthy persistent deployment to raise") | |
| def test_ensure_proxy_falls_back_when_persistent_manifest_is_stale(monkeypatch) -> None: | |
| calls: list[str] = [] | |
| monkeypatch.setattr(wrap_cli, "_check_proxy", lambda port: False) | |
| monkeypatch.setattr(wrap_cli, "_find_persistent_manifest", lambda port: _Manifest()) | |
| monkeypatch.setattr("headroom.install.health.probe_ready", lambda url: False) | |
| monkeypatch.setattr(wrap_cli, "_recover_persistent_proxy", lambda port: False) | |
| monkeypatch.setattr(wrap_cli, "_start_proxy", lambda *args, **kwargs: calls.append("start")) | |
| result = wrap_cli._ensure_proxy(8787, False) | |
| assert result is None | |
| assert calls == ["start"] | |
| def test_find_persistent_manifest_prefers_default_profile(monkeypatch) -> None: | |
| class DefaultManifest: | |
| profile = "default" | |
| port = 8787 | |
| class OtherManifest: | |
| profile = "custom" | |
| port = 8787 | |
| monkeypatch.setattr( | |
| "headroom.install.state.list_manifests", | |
| lambda: [OtherManifest(), DefaultManifest()], | |
| ) | |
| manifest = wrap_cli._find_persistent_manifest(8787) | |
| assert manifest.profile == "default" | |
| def test_recover_persistent_proxy_reuses_healthy_deployment(monkeypatch) -> None: | |
| monkeypatch.setattr(wrap_cli, "_find_persistent_manifest", lambda port: _Manifest()) | |
| monkeypatch.setattr("headroom.install.health.probe_ready", lambda url: True) | |
| assert wrap_cli._recover_persistent_proxy(8787) is True | |
| def test_recover_persistent_proxy_warns_for_task_deployment(monkeypatch) -> None: | |
| class TaskManifest(_Manifest): | |
| supervisor_kind = "task" | |
| monkeypatch.setattr(wrap_cli, "_find_persistent_manifest", lambda port: TaskManifest()) | |
| monkeypatch.setattr("headroom.install.health.probe_ready", lambda url: False) | |
| assert wrap_cli._recover_persistent_proxy(8787) is False | |