agent-exec transport d746852ae50f236002975c61a064caa9/397c60bd1367

This commit is contained in:
agent-exec-transport
2026-10-21 10:27:21 +00:00
parent 88aa4b6b7d
commit 70c810a030
4 changed files with 64 additions and 14 deletions
+14 -7
View File
@@ -21,6 +21,7 @@ import shutil
import socket
import sqlite3
import subprocess
import sys
import tempfile
import time
import unittest
@@ -28,6 +29,9 @@ import urllib.error
import urllib.request
from pathlib import Path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from _port_alloc import free_test_port # noqa: E402
SOURCE = Path(__file__).resolve().parents[1]
REAL = os.environ.get("SVC_TEST_REAL") == "1"
@@ -165,7 +169,8 @@ class RealComboTests(tsr.SvcAutoRecoverTests):
def test_U3_real_agent_identity_lifecycle_sqlite(self):
"""真实组合二进制:领养 ensure → verify → 两次裸重启身份/锚点稳定;
capabilities v1 探测契约。"""
self.seed_real("rc1", 9471, self.real_bin)
port = free_test_port()
self.seed_real("rc1", port, self.real_bin)
result = self.svc("rc1", "start")
self.assertIn("已启动", result.stdout)
m = self.manifest("rc1")
@@ -178,7 +183,7 @@ class RealComboTests(tsr.SvcAutoRecoverTests):
self.assertTrue(con.execute(
"SELECT count(*) FROM schema_migrations").fetchone()[0] >= 1)
con.close()
self.assertTrue(self.http_ok(9471))
self.assertTrue(self.http_ok(port))
# capabilities v1 契约(探测无副作用形态)
cap = subprocess.run([str(self.runtime("rc1") / "bin" / "agent-system"),
@@ -203,7 +208,7 @@ class RealComboTests(tsr.SvcAutoRecoverTests):
self.assertEqual(self.identity_row("rc1"), [(iid, "sqlite")],
"裸重启不得换身份")
self.assertEqual(self.manifest("rc1")["instance_id"], iid)
self.assertTrue(self.http_ok(9471))
self.assertTrue(self.http_ok(port))
self.svc("rc1", "stop")
@unittest.skipUnless(REAL_RDM_BIN, "真实 RDM 专项 NOT_RUN:需 SVC_REAL_RDM_BIN")
@@ -211,13 +216,14 @@ class RealComboTests(tsr.SvcAutoRecoverTests):
"""真实 RDM 组合二进制:identity 接线(Backend 公共 CLI)→ serve 门禁 →
领域层可初始化。"""
rdm_bin = Path(REAL_RDM_BIN).resolve()
self.seed_real("rcr", 9473, rdm_bin)
port = free_test_port()
self.seed_real("rcr", port, rdm_bin)
result = self.svc("rcr", "start")
self.assertIn("已启动", result.stdout)
m = self.manifest("rcr")
iid = m["instance_id"]
self.assertEqual(self.identity_row("rcr"), [(iid, "sqlite")])
self.assertTrue(self.http_ok(9473))
self.assertTrue(self.http_ok(port))
# RDM 未知子命令明确退出(不落服务路径)
bogus = subprocess.run([str(self.runtime("rcr") / "bin" / "agent-system"),
"totally-bogus"],
@@ -236,7 +242,8 @@ class RealComboTests(tsr.SvcAutoRecoverTests):
env.update(ci_git_env())
env.update({"SVC_RDM_SRC_DIR": str(self.root / "rdmcache"),
"SVC_RDM_ORIGIN": RDM_ORIGIN})
result = self.svc("rcf", "deploy", "--from", "rdm", "--port", "9474",
agent_port = free_test_port()
result = self.svc("rcf", "deploy", "--from", "rdm", "--port", str(agent_port),
env=env, check=False)
if result.returncode != 0:
log = self.runtime("rcf") / "svc.log"
@@ -259,7 +266,7 @@ class RealComboTests(tsr.SvcAutoRecoverTests):
else "rdm", "工作台内容")
self.svc("rcf", "restart")
self.assertEqual(self.identity_row("rcf"), [(iid, "sqlite")])
self.assertTrue(self.http_ok(9474))
self.assertTrue(self.http_ok(agent_port))
self.svc("rcf", "stop")
self.svc("rcfweb", "stop")