From 0174cb6bd9818e60cc4dd0f6dcae6c26a94b5f57 Mon Sep 17 00:00:00 2001 From: Rogee Date: Wed, 30 Sep 2026 14:13:26 +0800 Subject: [PATCH] fix(test): require actual isolated MQ integration passes --- .../evidence/saas-dispatcher-implementation.md | 1 + scripts/check-current-mq-mock.sh | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/evidence/saas-dispatcher-implementation.md b/docs/evidence/saas-dispatcher-implementation.md index 34ae0f6..bdc8c9a 100644 --- a/docs/evidence/saas-dispatcher-implementation.md +++ b/docs/evidence/saas-dispatcher-implementation.md @@ -122,6 +122,7 @@ - Agent 旧 spool 准入边界:隔离测试先复现现行 Agent 对同一恢复根目录中旧 `.uploads`、`.upload-locks` 与逐执行 `state.json` 均会照常启动;现于创建会话和媒体状态前只读检查这些遗留标记,发现时明确拒绝启动并保留原文件。测试核实没有写新会话、没有修改标记;仅对配置的恢复根目录生效,不替代现存数据的人工核查或处置。 - Agent 旧 spool 代码:旧执行状态、实时事件、上传尝试、失败事实及上传锁只由旧模块彼此调用,没有现行命令或录音恢复调用;删除专属实现与测试。录音恢复仍复用的原子写、目录同步、文件名校验等小函数移至 `internal/agent/file_state.go`,通过现行录音重试/未知结果测试确认恢复能力保持。删除源码不删除任何磁盘 spool;旧文件在当前恢复根目录触发上述拒绝启动,不能视作已经补传或处置。 - Agent Proto 旧消息:先用描述符结构测试复现 `ConfigReference` 等废弃定义仍可被发现,再按当前八个服务方法及现行 Go 引用追踪字段依赖;删除无调用者的 26 个旧消息和 3 个旧枚举,不改现行请求/响应的字段号。使用本地 Buf 重新生成 Go 类型,核对七项来源/hash;现行录音客户端、获批执行、控制及会话测试保持通过。固定 `agent.v1` 仍是有效的内部协议值;这不构成真实 Agent/Asterisk 或外部 SaaS 验收。 +- 隔离 MQ 校验脚本:审计发现脚本因测试文件改名仍使用旧筛选式,`internal/mq` 和 `internal/dispatcher` 输出 `no tests to run` 但退出成功;先复现两个空匹配,再改为现行测试名并要求三项均明确 `PASS`,跳过或空匹配均失败。隔离 RabbitMQ 实跑 `TestBrokerSharedResultQueueAndNoConfigure`、`TestRuntimeIsolatedControlBacklogExecuteAndSharedResult` 与 `TestCurrentDispatcherCommandStartsWithIsolatedMQHTTPAndAgent` 全部通过;这只证明本机隔离链路,不代替真实 MQ/SaaS 应用收讫。 ## 验收台账 diff --git a/scripts/check-current-mq-mock.sh b/scripts/check-current-mq-mock.sh index f14d781..ce36f8f 100644 --- a/scripts/check-current-mq-mock.sh +++ b/scripts/check-current-mq-mock.sh @@ -51,6 +51,18 @@ if ! docker exec -u rabbitmq "$name" rabbitmqctl add_user saas_mock "$saas_pw" > fi export RABBITMQ_URL="amqp://dispatcher_mock:${d_pw}@127.0.0.1:${port}/" export RABBITMQ_PROVISIONER_URL="amqp://saas_mock:${saas_pw}@127.0.0.1:${port}/" -go test -tags=integration ./internal/mq -run '^TestCurrentBrokerSharedResultQueueAndNoConfigure$' -count=1 -v -go test -tags=integration ./internal/dispatcher -run '^TestCurrentRuntimeIsolated' -count=1 -v -go test -tags=integration ./cmd/sip-go-agent -run '^TestCurrentDispatcherCommandStartsWithIsolatedMQHTTPAndAgent$' -count=1 -v +run_required_test() { + local package=$1 test_name=$2 output + if ! output=$(go test -tags=integration "$package" -run "^${test_name}$" -count=1 -v 2>&1); then + printf '%s\n' "$output" + return 1 + fi + printf '%s\n' "$output" + if ! grep -Fq -- "--- PASS: ${test_name} (" <<<"$output"; then + echo "isolated RabbitMQ Mock blocked: required test ${test_name} did not pass" >&2 + return 1 + fi +} +run_required_test ./internal/mq TestBrokerSharedResultQueueAndNoConfigure +run_required_test ./internal/dispatcher TestRuntimeIsolatedControlBacklogExecuteAndSharedResult +run_required_test ./cmd/sip-go-agent TestCurrentDispatcherCommandStartsWithIsolatedMQHTTPAndAgent