2.6 KiB
2.6 KiB
Inbox wait-reply Test Plan
Scope
This document covers blocking reply wait behavior within one thread via inbox wait-reply.
Shared conventions live in ../_shared/README.md.
case: wait-reply-wakes-on-answer-after-message
用例意义
验证 wait-reply 可以从某条已知消息之后开始等待,并在答复到达后唤醒。
前置条件
worker-c已拥有一个blocked线程THREAD_ID- 阻塞消息的
message_id为BLOCKED_MESSAGE_ID
输入
inbox --db TMPDIR/coord.db --agent worker-c --json wait-reply --thread THREAD_ID --after-message BLOCKED_MESSAGE_ID --timeout-seconds 2
inbox --db TMPDIR/coord.db --json reply --from leader --to worker-c --thread THREAD_ID --summary "Redirect to login" --body "Redirect guests to login for the MVP."
预期输出
wait-reply退出码为0wait-reply.data.woke == true- 返回的
message.kind == "answer"
断言结论
wait-reply可以可靠地从既知消息边界之后等待后续答复
case: wait-reply-can-start-from-after-event
用例意义
验证 wait-reply --after-event 支持从既知事件游标之后恢复等待。
前置条件
- 已通过先前的
watch或wait-reply结果拿到某个NEXT_EVENT_ID - 线程
THREAD_ID后续还会收到新的回复类消息
输入
inbox --db TMPDIR/coord.db --agent worker-c --json wait-reply --thread THREAD_ID --after-event NEXT_EVENT_ID --timeout-seconds 2
inbox --db TMPDIR/coord.db --json reply --from leader --to worker-c --thread THREAD_ID --summary "Redirect to login" --body "Redirect guests to login for the MVP."
预期输出
wait-reply在事件游标之后的新回复出现时被唤醒- 返回新的
next_event_id
断言结论
after-event允许等待逻辑在断点之后继续,而不会重复消费旧回复
case: wait-reply-times-out-when-no-reply
用例意义
验证在超时时间内没有匹配回复出现时,wait-reply 返回稳定超时契约。
前置条件
- 存在一个线程
THREAD_ID - 不会有新的
answer/control/result消息到达
输入
inbox --db TMPDIR/coord.db --agent worker-c --json wait-reply --thread THREAD_ID --timeout-seconds 1
预期输出
- 退出码为
10 - JSON 错误码为
no_matching_work
断言结论
wait-reply超时被视为“没有等到匹配回复”
Notes
- 默认唤醒 kinds 为
answer,control,result - 当返回消息是发给等待 agent 的外来消息时,
wait-reply会顺带推进该 agent 的 read cursor