Files
ai-exchange/tests/unit/test_run_remote_ops_smoke.py
T
2026-05-12 09:18:12 +08:00

98 lines
3.6 KiB
Python

import json
import unittest
import urllib.error
from scripts.run_remote_ops_smoke import ENDPOINTS, run_remote_ops_smoke
class FakeResponse:
def __init__(self, status, payload):
self.status = status
self.payload = payload
def __enter__(self):
return self
def __exit__(self, exc_type, exc, traceback):
return False
def read(self):
return json.dumps(self.payload).encode("utf-8")
def close(self):
return None
class RemoteOpsSmokeTests(unittest.TestCase):
def test_passes_all_required_remote_ops_endpoints(self) -> None:
seen = []
def opener(request, timeout_seconds):
seen.append((request.get_method(), request.full_url))
if request.full_url.endswith("/trading/unattended-harness?instrument_id=1"):
return FakeResponse(200, {"status": "passed", "blockers": [], "checks": []})
return FakeResponse(200, {"status": "ok"})
payload = run_remote_ops_smoke(base_url="http://remote.test", opener=opener, sleeper=lambda _: None)
self.assertEqual(payload["status"], "passed")
self.assertEqual(len(payload["passed_checks"]), len(ENDPOINTS))
self.assertIn(("POST", "http://remote.test/trading/visual-watch/cleanup-captures"), seen)
self.assertFalse(payload["external_channels_used"])
self.assertFalse(payload["real_trade_required"])
def test_http_404_blocks_stale_remote(self) -> None:
def opener(request, timeout_seconds):
raise urllib.error.HTTPError(
request.full_url,
404,
"not found",
hdrs=None,
fp=FakeResponse(404, {"error": "not_found"}),
)
payload = run_remote_ops_smoke(base_url="http://remote.test", opener=opener, sleeper=lambda _: None)
self.assertEqual(payload["status"], "blocked")
self.assertEqual(payload["blockers"][0], "health")
self.assertEqual(payload["endpoints"][0]["reason"], "unexpected_http_status")
def test_unreachable_endpoint_is_environment_blocker(self) -> None:
def opener(request, timeout_seconds):
raise TimeoutError("timed out")
payload = run_remote_ops_smoke(base_url="http://remote.test", attempts=1, opener=opener, sleeper=lambda _: None)
self.assertEqual(payload["status"], "blocked")
self.assertEqual(payload["endpoints"][0]["blocker_type"], "environment")
self.assertEqual(payload["endpoints"][0]["reason"], "endpoint_unreachable")
def test_harness_environment_blocker_is_preserved(self) -> None:
def opener(request, timeout_seconds):
if request.full_url.endswith("/trading/unattended-harness?instrument_id=1"):
return FakeResponse(
200,
{
"status": "blocked",
"blockers": ["runtime_environment"],
"checks": [
{
"name": "runtime_environment",
"status": "blocked",
"blocker_type": "environment",
}
],
},
)
return FakeResponse(200, {"status": "ok"})
payload = run_remote_ops_smoke(base_url="http://remote.test", opener=opener, sleeper=lambda _: None)
self.assertEqual(payload["status"], "blocked")
self.assertEqual(payload["blockers"], ["unattended_harness"])
self.assertEqual(payload["endpoints"][-1]["blocker_type"], "environment")
if __name__ == "__main__":
unittest.main()