mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-09-28 20:44:50 +02:00
[eric] apps: runtime status carries ready + serving_url, so 'spawned' and 'actually serving' stop being the same claim
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
"""ENG-190: the status payload distinguishes 'spawned' from 'serving' and names the one address a
|
||||
client can open, instead of running=True with an unactionable port."""
|
||||
|
||||
from backend.apps.outputs.runtime import AppRuntime
|
||||
|
||||
|
||||
def p_rt(tmp_path, new_mode: bool) -> AppRuntime:
|
||||
ws = tmp_path / "ws"
|
||||
ws.mkdir(exist_ok=True)
|
||||
if new_mode:
|
||||
(ws / "run.sh").write_text("#!/bin/bash\n")
|
||||
rt = AppRuntime(workspace_id="ws-test", workspace_path=str(ws))
|
||||
return rt
|
||||
|
||||
|
||||
def test_ready_false_while_spawned_but_not_serving(tmp_path, monkeypatch):
|
||||
rt = p_rt(tmp_path, new_mode=True)
|
||||
monkeypatch.setattr(type(rt), "running", property(lambda self: True))
|
||||
rt.frontend_port = 5173
|
||||
rt.p_frontend_ready = False
|
||||
assert rt.ready is False
|
||||
assert rt.frontend_url is None
|
||||
|
||||
|
||||
def test_ready_true_once_port_answers_and_falls_with_process(tmp_path, monkeypatch):
|
||||
rt = p_rt(tmp_path, new_mode=True)
|
||||
monkeypatch.setattr(type(rt), "running", property(lambda self: True))
|
||||
rt.frontend_port = 5173
|
||||
rt.p_frontend_ready = True
|
||||
assert rt.ready is True
|
||||
assert rt.frontend_url == "http://127.0.0.1:5173/"
|
||||
monkeypatch.setattr(type(rt), "running", property(lambda self: False))
|
||||
assert rt.ready is False
|
||||
assert rt.frontend_url is None
|
||||
|
||||
|
||||
def test_frozen_runtime_is_not_ready(tmp_path, monkeypatch):
|
||||
rt = p_rt(tmp_path, new_mode=True)
|
||||
monkeypatch.setattr(type(rt), "running", property(lambda self: True))
|
||||
rt.frontend_port = 5173
|
||||
rt.p_frontend_ready = True
|
||||
rt.p_suspended = True
|
||||
assert rt.ready is False
|
||||
|
||||
|
||||
def test_status_payload_carries_ready_and_serving_url(tmp_path, monkeypatch):
|
||||
from backend.apps.outputs import outputs as outputs_mod
|
||||
from backend.apps.outputs.runtime import manager
|
||||
|
||||
rt = p_rt(tmp_path, new_mode=True)
|
||||
monkeypatch.setattr(type(rt), "running", property(lambda self: True))
|
||||
rt.frontend_port = 5173
|
||||
rt.p_frontend_ready = True
|
||||
monkeypatch.setitem(manager.runtimes, "ws-test", rt)
|
||||
payload = outputs_mod.runtime_status_payload("ws-test")
|
||||
assert payload["ready"] is True
|
||||
assert payload["serving_url"] == "http://127.0.0.1:5173/"
|
||||
rt.p_frontend_ready = False
|
||||
payload = outputs_mod.runtime_status_payload("ws-test")
|
||||
assert payload["running"] is True and payload["ready"] is False and payload["serving_url"] is None
|
||||
Reference in New Issue
Block a user