Files
Agent-System/.doc/test-reports/2026-09-25-t20-s4-image-batch-test-report.md
T

2.7 KiB
Raw Blame History

T20 S4 镜像批(代码层)测试报告

一、 测试背景

T20 加固设计中的 I1(容器以非 root 运行 + 资源限制)与 I4(数据库容器初始化脚本统一)长期未实施,属 planned-tasks-closeout-plan P5 批次。本批完成代码/compose 层合入;共享环境部署需另授权。

二、 测试目标

  1. Dockerfile 以 appuser(uid/gid 10001)运行应用,不再以 root。
  2. 三环境 compose 为 app/events 服务声明内存/CPU 限制。
  3. dev/main 数据库容器 init 挂载统一为 extensions_init.sql,表结构改由 app 侧 goose 迁移负责。

三、 测试方案与环境

  • OS:Linux;Docker docker build --check + docker compose config(静态校验,不启动容器)。
  • 层级:工程工具改动 → 按验证契约适用 L1(构建/静态校验)+ L2(compose 渲染)。
  • 用户目标:P5 批次推进;授权范围:代码与 compose 变更合入 dev,不含共享环境部署。

四、 预期结果

用例 预期
T1 docker build --check 无 error/warning,USER appuser 前有 chown
T2 docker compose config(dev/test/main) 渲染出 mem_limit/mem_reservation/cpus;I4 后仅挂 01-extensions.sql
T3 grep 复核 无残留 context_init.sql / 00001_baseline.sql 挂载

五、 实际测试结果与判定

T1 Dockerfile 静态校验

  • 输入:docker build --check deploy/app
  • 实际输出:[+] Building 0.4s (0/0) FINISHED,无警告输出
  • 判定:PASS

T2 compose 渲染(三环境)

  • 输入:docker compose -f docker-compose.dev.yml config(test/main 同)
  • 实际输出(节选,dev):
    app:
      mem_limit: 1500m
      mem_reservation: 1g
      cpus: 2.0
    system-db:
      volumes:
        - ./deploy/postgres/extensions_init.sql:/docker-entrypoint-initdb.d/01-extensions.sql:ro
    
  • 判定:PASS(test/main 同样渲染出限制与统一 init 挂载)

T3 残留检查

  • 输入:rg -n 'context_init\.sql|00001_baseline\.sql' docker-compose.*.yml
  • 实际输出:无匹配
  • 判定:PASS

六、 自动化测试套件汇总

检查 结果
docker build --check deploy/app PASS
docker compose config -q(dev/test/main) 3/3 PASS
gofmt -l deploy(若 Go 代码涉及) NOT REQUIRED(本批无 Go 代码变更)
go test ./...(涉及 Go 变更时) NOT REQUIRED(同上)

七、 测试结论与后续优化建议

  • 结论:P5 代码层达成;integration_state: pending → 本报告入库后执行 agentctl validate + integrate。
  • 部署窗口待办:I1 卷权限冒烟(新卷/已有卷对 uid 10001 可写)、/health + 一次写 data。
  • 后续建议:I6 systemd 备份单元、cap_drop ALL 评估。