feat: add ops center and node onboarding flow
This commit is contained in:
93
domain-api/tests/test_ops_release_service_contracts.py
Normal file
93
domain-api/tests/test_ops_release_service_contracts.py
Normal file
@@ -0,0 +1,93 @@
|
||||
import json
|
||||
import unittest
|
||||
from datetime import datetime
|
||||
|
||||
from app.services.ops_release_service import _serialize_release_row, _serialize_rollout_row
|
||||
|
||||
|
||||
class OpsReleaseServiceContractTests(unittest.TestCase):
|
||||
def test_serialize_release_row_adds_contract_aliases(self) -> None:
|
||||
row = (
|
||||
9,
|
||||
"2026.04.18+bd6bcb2",
|
||||
"stable",
|
||||
"bd6bcb2",
|
||||
"ready",
|
||||
"https://example.com/domaincheck.tar.gz",
|
||||
"sha256:test",
|
||||
"release notes",
|
||||
json.dumps(
|
||||
{
|
||||
"source": "package",
|
||||
"manifest": {
|
||||
"artifact_kind": "tarball",
|
||||
"package_name": "domaincheck-2026.04.18+bd6bcb2.tgz",
|
||||
"included_services": ["domaincheck-api", "domaincheck-worker"],
|
||||
"rollback_hint": "切回上一个 current",
|
||||
},
|
||||
}
|
||||
),
|
||||
"www",
|
||||
datetime(2026, 4, 18, 9, 0, 0),
|
||||
datetime(2026, 4, 18, 9, 5, 0),
|
||||
datetime(2026, 4, 18, 9, 6, 0),
|
||||
)
|
||||
|
||||
payload = _serialize_release_row(row)
|
||||
|
||||
self.assertEqual("已就绪", payload["status_label"])
|
||||
self.assertIn("已就绪", payload["summary_text"])
|
||||
self.assertEqual("release_hub", payload["focus_ref"]["kind"])
|
||||
self.assertEqual(9, payload["focus_ref"]["release_id"])
|
||||
self.assertEqual("release_detail", payload["focus_ref"]["section"])
|
||||
self.assertEqual("tarball", payload["manifest"]["artifact_kind"])
|
||||
self.assertEqual("domaincheck-2026.04.18+bd6bcb2.tgz", payload["manifest"]["package_name"])
|
||||
self.assertEqual(["domaincheck-api", "domaincheck-worker"], payload["manifest"]["included_services"])
|
||||
|
||||
def test_serialize_rollout_row_adds_contract_aliases(self) -> None:
|
||||
row = (
|
||||
11,
|
||||
9,
|
||||
"rollout-20260418090000-a1b2",
|
||||
json.dumps({"region": "mainland", "role": "worker"}),
|
||||
json.dumps(
|
||||
{
|
||||
"items": [
|
||||
{"node_code": "mainland-worker-01", "region": "mainland", "role": "worker"},
|
||||
{"node_code": "mainland-worker-02", "region": "mainland", "role": "worker"},
|
||||
]
|
||||
}
|
||||
),
|
||||
json.dumps({"execution_mode": "ssh", "batch_size": 1}),
|
||||
"running",
|
||||
1,
|
||||
2,
|
||||
2,
|
||||
1,
|
||||
json.dumps(
|
||||
{
|
||||
"status": "running",
|
||||
"launched_targets": 1,
|
||||
"remaining_targets": 1,
|
||||
"active_jobs": 1,
|
||||
"current_batch_index": 1,
|
||||
"batches_total": 2,
|
||||
}
|
||||
),
|
||||
"web-ui",
|
||||
datetime(2026, 4, 18, 9, 10, 0),
|
||||
datetime(2026, 4, 18, 9, 11, 0),
|
||||
)
|
||||
|
||||
payload = _serialize_rollout_row(row)
|
||||
|
||||
self.assertEqual("执行中", payload["status_label"])
|
||||
self.assertEqual(["mainland-worker-01", "mainland-worker-02"], payload["target_node_codes"])
|
||||
self.assertIn("当前已覆盖 1/2 台节点", payload["summary_text"])
|
||||
self.assertEqual("release_rollout", payload["focus_ref"]["kind"])
|
||||
self.assertEqual(11, payload["focus_ref"]["rollout_id"])
|
||||
self.assertEqual("rollout_jobs", payload["focus_ref"]["section"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user