feat(railiance): adopt state-hub edge relay beachhead for WP-0015
Deploy actcore-statehub-edge-relay, point STATE_HUB_URL at it, retire the bespoke state-hub bridge, and accept edge-relay queued write receipts in report and ops evidence sinks.
This commit is contained in:
parent
1a0636845a
commit
cdbe4de2bf
13 changed files with 256 additions and 136 deletions
|
|
@ -11,6 +11,7 @@ from activity_core.state_hub_write import (
|
|||
apply_progress_scope_fields,
|
||||
idempotency_headers,
|
||||
idempotency_key,
|
||||
parse_state_hub_write_response,
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -81,6 +82,8 @@ def test_report_sink_post_sends_idempotency_header(monkeypatch) -> None:
|
|||
monkeypatch.setattr(report_sinks, "_progress_exists", lambda *a, **k: False)
|
||||
|
||||
class _Resp:
|
||||
status_code = 200
|
||||
|
||||
def raise_for_status(self) -> None: ...
|
||||
def json(self) -> dict[str, str]:
|
||||
return {"id": "pid-1"}
|
||||
|
|
@ -98,3 +101,47 @@ def test_report_sink_post_sends_idempotency_header(monkeypatch) -> None:
|
|||
result = report_sinks._post_state_hub_progress(payload, report_entry, sink)
|
||||
assert result["status"] == "posted"
|
||||
assert captured["headers"][IDEMPOTENCY_HEADER] == "run1:daily-triage-report:daily_triage"
|
||||
|
||||
|
||||
def test_parse_state_hub_write_response_accepts_edge_relay_queued_receipt() -> None:
|
||||
class _Resp:
|
||||
status_code = 202
|
||||
|
||||
def json(self) -> dict[str, object]:
|
||||
return {
|
||||
"queued": True,
|
||||
"outbox_id": "env-1",
|
||||
"idempotency_key": "run1:daily-triage-report:daily_triage",
|
||||
}
|
||||
|
||||
def raise_for_status(self) -> None:
|
||||
raise AssertionError("queued receipts should not raise")
|
||||
|
||||
assert parse_state_hub_write_response(_Resp())["outbox_id"] == "env-1"
|
||||
|
||||
|
||||
def test_report_sink_post_accepts_edge_relay_queued_receipt(monkeypatch) -> None:
|
||||
monkeypatch.setattr(report_sinks, "_progress_exists", lambda *a, **k: False)
|
||||
|
||||
class _Resp:
|
||||
status_code = 202
|
||||
|
||||
def json(self) -> dict[str, object]:
|
||||
return {
|
||||
"queued": True,
|
||||
"outbox_id": "env-1",
|
||||
"idempotency_key": "run1:daily-triage-report:daily_triage",
|
||||
}
|
||||
|
||||
def raise_for_status(self) -> None:
|
||||
raise AssertionError("queued receipts should not raise")
|
||||
|
||||
monkeypatch.setattr(report_sinks.httpx, "post", lambda *a, **k: _Resp())
|
||||
|
||||
payload = {"run_id": "run1", "activity_id": "act1", "scheduled_for": None}
|
||||
report_entry = {"instruction_id": "daily-triage-report", "report": {"summary": "s"}}
|
||||
sink = {"event_type": "daily_triage"}
|
||||
|
||||
result = report_sinks._post_state_hub_progress(payload, report_entry, sink)
|
||||
assert result["status"] == "queued"
|
||||
assert result["outbox_id"] == "env-1"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue