Files
Agent-System/.doc/test-reports/2026-09-25-t20-s2-config-pool-test-report.md
T

3.9 KiB
Raw Blame History

T20 S2 配置/池批(B1/B4/B7)测试报告

一、 测试背景 (Background)

T20 设计 S2 批:B1 伪造 XFF 可绕过登录限流、B4 池无语句超时分级、B7 Shutdown 5s 与 AGENT_TIMEOUT 30m 错配导致滚动重启砍长任务。按 planned-tasks-closeout-plan P3 批次实施。

二、 测试目标 (Test Objectives)

  • B1:伪造 XFF + 直连 RemoteAddr ∉ CIDR → key 用 RemoteAddr;∈ CIDR → 解析最右非可信跳。
  • B4:池 RuntimeParams 注入 statement_timeout=30000;migrate profile 不设超时。
  • B7:drain = min(AGENT_TIMEOUT,35m)+30s;环境变量覆盖与非法回落正确。
  • compose 三环境语法有效。

三、 测试方案与环境 (Test Plan & Environment)

  • OS:Linux 7.0.0-31-generic;Go;docker compose v2(仅 config 校验,不启动)。
  • 层级:工程工具批(单元测试 + 静态 compose 校验),按验证契约不触发产品 PI 全链路。
  • worktree .worktrees/t20-s2-config-pool-2026-09-25 @ dev 基线 c0e556b1。

四、 预期结果 (Expected Results)

  • 全部新增单测 PASS;既有登录/限流测试不回归。

五、 实际测试结果与判定 (Actual Results & Evaluation)

B1 XFF 可信代理

$ go test ./internal/server/ -run 'TestClientIP|TestParseTrusted' -v
--- PASS: TestClientIP_NoTrustedCIDR_IgnoresXFF (0.00s)
--- PASS: TestClientIP_TrustedProxy_ResolvesXFF (0.00s)
--- PASS: TestClientIP_UntrustedDirect_UsesRemoteAddr (0.00s)
--- PASS: TestClientIP_AllTrustedChain_FallsBackToFirst (0.00s)
--- PASS: TestParseTrustedProxyCIDRs_Formats (0.00s)
ok  	chat-agent-system/internal/server  0.007s

判定:PASS(伪造防护核心场景 UntrustedDirect_UsesRemoteAddr 覆盖)。

B4 池 profile

$ go test ./internal/db/ -v
--- PASS: TestDefaultProfile_StatementTimeout30s (0.00s)
--- PASS: TestMigrateProfile_NoStatementTimeout (0.00s)
--- PASS: TestOpenAppPool_SetsRuntimeParams (0.00s)
--- PASS: TestLongStatementTimeout_Default15m (0.00s)
(既有迁移测试不回归)

判定:PASS。

B7 drain 对齐

$ go test ./cmd/server/ -v
--- PASS: TestShutdownDrainTimeout_DefaultCapped35m (0.00s)
--- PASS: TestShutdownDrainTimeout_FollowsShortAgentTimeout (0.00s)
--- PASS: TestShutdownDrainTimeout_EnvOverride (0.00s)
--- PASS: TestShutdownDrainTimeout_InvalidEnvFallsBack (0.00s)
--- PASS: TestShutdownDrainTimeout_NilCfg (0.00s)

判定:PASS。

compose 语法

$ for f in dev test main; do docker compose -f docker-compose.$f.yml config --quiet; done
三文件 exit 0

判定:PASS(main.yml 首次插入点切在双依赖服务之间导致 YAML 错误,已修正到 depends_on 完整块后复验通过)。

登录/限流既有回归

$ go test ./internal/server/ -run 'Login|RateLimit'
--- PASS: TestLoginRateLimiter_BlocksAfterMaxAttempts
--- PASS: TestLoginRateLimiter_ResetClearsWindow
--- PASS: TestLoginRateLimiter_WindowExpiry
--- PASS: TestAuthHandlers_LoginAndMe
--- PASS: TestAuthHandlers_LoginReturnsCapabilitiesFallback
ok  	chat-agent-system/internal/server  0.285s

判定:PASS。

六、 自动化测试套件汇总 (Test Suite Execution)

套件 结果 通过率
`go test ./internal/server/ -run 'TestClientIP TestParseTrusted'` PASS
go test ./internal/db/ PASS 新增 4/4 + 既有不回归
go test ./cmd/server/ PASS 5/5
`go test ./internal/server/ -run 'Login RateLimit'` PASS
docker compose config --quiet ×3 PASS 3/3
go build ./... PASS —

七、 测试结论与后续优化建议 (Conclusion & Next Steps)

  • S2 三项全部落地:伪造 XFF 无法再分散限流桶;池有 30s 语句超时上限;drain 窗口与长任务量级对齐。
  • 部署生效需 compose 变更随发布流转(P5 授权窗口);TRUSTED_PROXY_CIDRS 生产默认留空(直连安全),接入反代后由运维填网段。
  • 建议 P4(B3 锁拆分)独立推进,带 -race 回归。