Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a03397-4d51-7fd1-8ff2-946eb22ea2bc
This commit is contained in:
parent
408d32df88
commit
74b2f27997
20 changed files with 608 additions and 182 deletions
|
|
@ -94,34 +94,59 @@ def test_isolated_installed_tool_session_smoke(tmp_path):
|
|||
started = json.loads(
|
||||
run(
|
||||
str(tamq),
|
||||
"start",
|
||||
"--detach",
|
||||
"--command",
|
||||
"alpha-agent",
|
||||
"railiance-platform",
|
||||
"activity-core",
|
||||
"--detach",
|
||||
).stdout
|
||||
)
|
||||
assert started["repos"] == ["railiance-platform", "activity-core"]
|
||||
assert started["delivery_mode"] == "manual"
|
||||
rows = run(
|
||||
*tmux,
|
||||
"list-windows",
|
||||
"-t",
|
||||
"tamq",
|
||||
"-F",
|
||||
"#{window_name}|#{pane_current_path}|#{pane_pid}",
|
||||
"#{window_name}|#{pane_current_path}|#{pane_pid}|#{pane_current_command}",
|
||||
).stdout.splitlines()
|
||||
parsed = {name: (path, pid) for name, path, pid in (row.split("|", 2) for row in rows)}
|
||||
parsed = {
|
||||
name: (path, pid, command)
|
||||
for name, path, pid, command in (row.split("|", 3) for row in rows)
|
||||
}
|
||||
assert parsed["railiance-platform"][0] == str(repo_a)
|
||||
assert parsed["activity-core"][0] == str(repo_b)
|
||||
assert all(command != "alpha-agent" for _, _, command in parsed.values())
|
||||
assert all(
|
||||
"installed-alpha-ready"
|
||||
not in run(*tmux, "capture-pane", "-p", "-t", f"tamq:{repo}").stdout
|
||||
for repo in ("railiance-platform", "activity-core")
|
||||
)
|
||||
|
||||
for repo in ("railiance-platform", "activity-core"):
|
||||
run(
|
||||
*tmux,
|
||||
"send-keys",
|
||||
"-t",
|
||||
f"tamq:{repo}",
|
||||
"printf 'TAMQ_REPO=%s\\n' \"$TAMQ_REPO\"",
|
||||
"C-m",
|
||||
)
|
||||
deadline = time.monotonic() + 5
|
||||
while time.monotonic() < deadline:
|
||||
identity_captures = {
|
||||
repo: run(*tmux, "capture-pane", "-p", "-t", f"tamq:{repo}").stdout
|
||||
for repo in ("railiance-platform", "activity-core")
|
||||
}
|
||||
if all(f"TAMQ_REPO={repo}" in output for repo, output in identity_captures.items()):
|
||||
break
|
||||
time.sleep(0.05)
|
||||
assert all(f"TAMQ_REPO={repo}" in output for repo, output in identity_captures.items())
|
||||
|
||||
repeated = json.loads(
|
||||
run(
|
||||
str(tamq),
|
||||
"start",
|
||||
"--detach",
|
||||
"--command",
|
||||
"alpha-agent",
|
||||
"railiance-platform",
|
||||
"activity-core",
|
||||
).stdout
|
||||
|
|
@ -133,7 +158,7 @@ def test_isolated_installed_tool_session_smoke(tmp_path):
|
|||
"-t",
|
||||
"tamq",
|
||||
"-F",
|
||||
"#{window_name}|#{pane_current_path}|#{pane_pid}",
|
||||
"#{window_name}|#{pane_current_path}|#{pane_pid}|#{pane_current_command}",
|
||||
).stdout.splitlines()
|
||||
assert repeated_rows == rows
|
||||
pre_delivery_status = json.loads(run(str(tamq), "status").stdout)
|
||||
|
|
@ -141,22 +166,49 @@ def test_isolated_installed_tool_session_smoke(tmp_path):
|
|||
assert [item["endpoint_id"] for item in pre_delivery_status["endpoints"]] == [
|
||||
started["instance_id"]
|
||||
]
|
||||
assert pre_delivery_status["endpoints"][0]["delivery_mode"] == "manual"
|
||||
|
||||
message_id = run(
|
||||
str(tamq), "send", "@activity-core:", "installed-message"
|
||||
).stdout.strip()
|
||||
target_before = run(
|
||||
*tmux, "capture-pane", "-p", "-t", "tamq:activity-core"
|
||||
).stdout
|
||||
run(
|
||||
*tmux,
|
||||
"send-keys",
|
||||
"-t",
|
||||
"tamq:railiance-platform",
|
||||
f"{tamq} send '@activity-core: installed-message'",
|
||||
"C-m",
|
||||
)
|
||||
deadline = time.monotonic() + 5
|
||||
history = []
|
||||
inbox = []
|
||||
while time.monotonic() < deadline:
|
||||
history = [
|
||||
inbox = [
|
||||
json.loads(line)
|
||||
for line in run(str(tamq), "history", "--repo", "activity-core").stdout.splitlines()
|
||||
for line in run(
|
||||
str(tamq), "inbox", "--repo", "activity-core", "--json"
|
||||
).stdout.splitlines()
|
||||
]
|
||||
if history and history[-1]["state"] == "injected":
|
||||
if inbox:
|
||||
break
|
||||
time.sleep(0.05)
|
||||
assert history[-1]["message_id"] == message_id
|
||||
assert history[-1]["state"] == "injected"
|
||||
assert inbox[-1]["sender_repo"] == "railiance-platform"
|
||||
assert inbox[-1]["body"] == "installed-message"
|
||||
assert inbox[-1]["state"] == "pending"
|
||||
message_id = inbox[-1]["message_id"]
|
||||
target_after = run(
|
||||
*tmux, "capture-pane", "-p", "-t", "tamq:activity-core"
|
||||
).stdout
|
||||
assert target_after == target_before
|
||||
|
||||
assert run(str(tamq), "ack", message_id).stdout.strip() == message_id
|
||||
assert run(str(tamq), "inbox", "--repo", "activity-core").stdout == ""
|
||||
all_messages = [
|
||||
json.loads(line)
|
||||
for line in run(
|
||||
str(tamq), "inbox", "--repo", "activity-core", "--all", "--json"
|
||||
).stdout.splitlines()
|
||||
]
|
||||
assert all_messages[-1]["state"] == "acknowledged"
|
||||
status = json.loads(run(str(tamq), "status").stdout)
|
||||
assert status["service"] is True
|
||||
assert [item["endpoint_id"] for item in status["endpoints"]] == [started["instance_id"]]
|
||||
|
|
@ -168,8 +220,6 @@ def test_isolated_installed_tool_session_smoke(tmp_path):
|
|||
str(tamq),
|
||||
"start",
|
||||
"--detach",
|
||||
"--command",
|
||||
"alpha-agent",
|
||||
"railiance-platform",
|
||||
"activity-core",
|
||||
).stdout
|
||||
|
|
@ -181,7 +231,7 @@ def test_isolated_installed_tool_session_smoke(tmp_path):
|
|||
"-t",
|
||||
"tamq",
|
||||
"-F",
|
||||
"#{window_name}|#{pane_current_path}|#{pane_pid}",
|
||||
"#{window_name}|#{pane_current_path}|#{pane_pid}|#{pane_current_command}",
|
||||
).stdout.splitlines() == rows
|
||||
|
||||
run(*tmux, "kill-session", "-t", "tamq")
|
||||
|
|
@ -205,6 +255,7 @@ def test_isolated_installed_tool_session_smoke(tmp_path):
|
|||
).stdout
|
||||
)
|
||||
assert recovered["instance_id"] != started["instance_id"]
|
||||
assert recovered["delivery_mode"] == "manual"
|
||||
recovered_rows = run(
|
||||
*tmux,
|
||||
"list-windows",
|
||||
|
|
@ -217,6 +268,16 @@ def test_isolated_installed_tool_session_smoke(tmp_path):
|
|||
f"railiance-platform|{repo_a}",
|
||||
f"activity-core|{repo_b}",
|
||||
]
|
||||
deadline = time.monotonic() + 5
|
||||
while time.monotonic() < deadline:
|
||||
captures = [
|
||||
run(*tmux, "capture-pane", "-p", "-t", f"tamq:{repo}").stdout
|
||||
for repo in ("railiance-platform", "activity-core")
|
||||
]
|
||||
if all("installed-alpha-ready" in output for output in captures):
|
||||
break
|
||||
time.sleep(0.05)
|
||||
assert all("installed-alpha-ready" in output for output in captures)
|
||||
assert run(str(tamq), "stop").returncode == 0
|
||||
finally:
|
||||
subprocess.run(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue