Files
go-omni/performance/connectorAcceptance.md

3.2 KiB
Raw Blame History

v0.9.1-preview Connector 与 HTTP 配置验收

范围

新增标准 driver.Connector 注入和 HTTP 服务器读写配置;没有修改 eTax/ePay 业务代码。数据库驱动/TLS/Logger/时区/版本校验仍归项目。网络测试只监听本地回环地址,MySQL 使用独立本地容器(1 CPU / 768 MiB / 128 PID),没有使用业务服务器压测。

全量回归

  • GO_OMNI_SCAFFOLD_INTEGRATION=1 go test -race -p=1 -count=1 -timeout=300s ./...:40 个有测试的包全部通过,包含真实脚手架/契约生成的集成消费者。
  • go vet ./...、go build ./...、gofmt、git diff --check 通过。

专项验收

  • go test -race -count=3 ./database ./app ./config 通过。
  • 两个 Connector 并发读写保持独立;启动 Connect/Ping 与查询 context 保留,后台补连接遵循 database/sql 行为;最大连接数、禁用 idle、连接生命周期、健康检查等待上限及恢复验证通过。
  • nil/带类型的 nil、无效参数、启动前取消不取得 Connector 所有权;Connect/Ping 失败与超时关闭池,清理错误和原错误可同时检查;成功关闭幂等,事务提交/错误/panic 回滚通过。
  • 标准库服务器字段、ErrorLog 透传、无效配置启动前返回并清理资源、JSON/YAML/环境变量覆盖通过;不支持的独立 http2 选项明确拒绝。
  • nethttp/native 的实际 TCP 慢请求头、慢 body、Keep-Alive 空闲关闭、Flush 后客户端停止读取触发写超时、超限头 431 通过。测试不假定两种网络层有完全相同的超时响应格式。
  • scripts/verifyConnector.py --local 的独立消费者通过:真实 MySQL 8.4 TLS、错误 CA/主机名拒绝、不同 session time_zone、每个 Connector 的驱动 Logger、两池独立关闭、事务提交/回滚。所有专项测试无跳过,详情见 本地记录。
  • MySQL 镜像固定记录为 sha256:1afd25fe334a1be64a3866495dd43a6bdba3c55dd1d6190ea12933163fe2843c。临时容器、卷、证书、凭据及消费者目录已清理。

环境:go version go1.27.1 darwin/arm64。记录时间:2026-09-23T18:17:16.897323+00:00。

独立 TransportHTTP2 的逐请求读写时限未实现,本次没有进行 Linux soak、代理长测或完整业务迁移验收。

远程验收

发布后两条独立远程验收均通过;各自使用全新 module cache,消费者依赖固定版本,无本地 replace。

  • 发布标签:v0.9.1-preview;源码:20e84e5ff86d872f42301cd3c256030fc41c8ce2。
  • module 校验和:h1:yCqjVGv4rH8UN2M3WzjraNEfdEI6WJD2A64F4HFP0FI=。
  • Connector/HTTP 远程消费者执行全部专项 race 测试及真实 MySQL TLS 用例,无跳过;耗时 16.49 秒,详见 Connector 远程记录。
  • 从远程安装 CLI,生成消费者,验证标量、动态 JSON、上传/原文签名、下载、请求体上限和重生成保护;耗时 13.27 秒,详见 CLI 远程记录。
  • 两条验收脚本确认相同框架校验和;临时消费者、缓存、数据库容器与测试证书/凭据已清理。fixture 哈希与当前文件核对一致。

结果在 main 单独追加,已发布标签保持不可变。