Files
lislgosms/docs/release-20260916-test-completion.md
2026-09-16 19:22:16 +08:00

10 KiB
Raw Permalink Blame History

2026-09-16 五项整改测试环境交付与验收

版本、范围与证据边界

截至2026-09-16 19:20 CST,测试环境100.93.204.60:12026运行010ba3216889032a6160cdb14d8536b616ae7102,线上标记、归档源码、Gateway产物和服务由标准release verify核验。此前依次发布五项实现a350aca883369b1cfa67ea630a93cf592a9ed6f7,更名提交a0209f93bc8eee6cb08a9d7cace4163b26749ae6随同发布。远端main已回读010ba32,分叉0/0;收尾文档后续独立提交,不表示再次重启应用。预生产未连接或部署。

已实现:第4阶段方案第10节的耐久收尾工作/原子认领/revision与fence/事务和Outbox/失败接续;通道测试免签名与引流检测(普通客户链路保留规则);HTTP参数化真实发送及应用层HTTP报文;告警恢复留存与人工清除;监控失败保留最后真实快照并标明采样时间。短信链路细节见权威方案第10节。

保护原61项修改与草稿,不提交原metrics、版本3.0.0、发布工具或部署脚本草稿。原包版本修改未进入应用提交;产品命名与工程版本提交是独立事项。共享文档仅精确暂存本轮新增段落;原文件快照及摘要保留于.local-data/five-fixes-20260916/beforeprotected-hashes.json。发布工具仍为受保护的未提交工具,应用SHA不代表工具版本,其摘要由每份plan.json绑定。

验收结果

范围 实际结果
精确应用候选a350aca 前端35套163项、API77套834项;类型/格式/lint/样式/CSS门禁及远端生产构建通过。工作区API835项含一项受保护metrics测试,不混为候选成绩
PostgreSQL 隔离真实PG全量106迁移重放;11组并发/原子回滚/多进程/过期租约/fence/通知账务/人工处理告警测试通过。路由/限速隔离测试不冒充真实Gateway
Gateway补充010ba32 两种协议即时TCP应答各500次×5轮通过;全量go test ./...、go vet ./...通过,标准工具对精确提交重新validate
真实短信链路 专用隔离应用20条业务短信,另1条无租户通道测试;模拟供应商只监听测试机loopback,不转真实运营商。涵盖2/3/4段、逆序和每段3次重复DELIVER、补发成功及最终失败
最终账务 20份账单,19条成功、1条失败;初始隔离资金1000000,扣费20150、退款650、余额980500(均数据库内部整数单位);冻结-20150与释放20150抵消,账户与流水一致
耐久工作/Outbox 24个业务发送尝试工作全部idle且revision=processedRevision;所有对应Outbox为published;每个源Submit最多一个后继,无额外账单或业务通知
HTTP通知 20个稳定业务事件全部delivered;5个早期TLS失败自动恢复,独立503和超时样本各第二次200;重试复用原投递记录,不补发短信。接收端未单独验HMAC,不宣称该项完成
CMPP下行 客户断线后重连,实际收到并ACK 9份客户原始分段回执;Registered_Delivery=false样本无CMPP通知,HTTP按both配置单独生成;无多余目标
通道测试 UI敏感操作由用户重新验证身份;195字、无签名且含未报备example.invalid链接,3段全部真实提交并deliveredtenant/batch均空,不创建客户HTTP或CMPP通知
HTTP调试页面 实际点击发送返回202,展示请求/返回HTTP报文;对应3段短信终态delivered,未将仅202当最终送达
监控页面 1600×1000、1366×768、390×844检查,刷新、路由切换、页面重载通过;真实API成功后注入请求中断,仍保留真实快照及时间,解除中断恢复刷新;无页面JS异常
告警人工清除 实际发布产生的cmpp-api恢复告警持续留存;UI手动清除后刷新不再出现,PG clearedAt=11:09:32.356Z,一条monitoring.alert_cleared审计;未清除原有磁盘/演示告警
最终队列 gateway.submit.commands/results/protocol.logs三个消费组pending=0、lag=0;没有凭SubmitResp推算容量

验收发现的附加缺陷及处理

a350aca初次真实验收中,CMPP样本923和页面样本931首尝试分别只写出2/4、1/3段,出现60秒SUBMIT_TIMEOUT并自动补发。只读代码确认Gateway发送后才登记等待者,快速应答可能被readLoop提前丢弃;未修代码真实TCP回归在2.0第206次、3.0第7次复现。010ba32将写包和登记等待者置于与heartbeat相同mu→sendMu临界区,已按标准流程第二次发布。

010ba32新增6条样本9709752/3/4段各两条),6个Submit、18个wire分段全部一次成功,无补发。全轮合计74个wire分段包含通道测试3段,以及修复前异常首尝试3段;20条业务消息24个Submit中的4个后继,分别为2个预设失败场景和2个修复前竞态场景。原异常保留,不算成修复后的无重复样本。短信账务仍按业务消息一份。

首轮模拟CMPP客户端MsgSrc误填account,入口结果9,确认无业务创建后修正测试客户端才运行正式样本;最初503/超时控制读取错误JSON层级,952/953仅作为普通200样本,修正为data.phoneNumber后962/963才计故障验收。保留原失败记录,不用后续成功覆盖。Webhook临时域名在测试机解析到198.18.1.79造成TLS失败;仅对该QA域名临时hosts映射到经TLS验证的地址,未关闭证书校验,验收后精确移除。

发布及最终工具状态

两轮均使用npm run release的plan→validate→preflight→prepare→deploy→verify,使用已授权测试凭据的安全本机入口。第一轮106迁移,第二轮无新增迁移。标准工具不接收业务验收录入,报告中businessAcceptance仍是“未执行”;业务证据由本文件独立维护。

最终verify状态为deployed-needs-review,唯一提示“Business counts changed during online release”。已核对:第二轮基线messages/submits为119597/130835,验收后119603/130841,恰为新增6条/6次,无额外记录。应用文件日志新增errorMarkers=0,所涉服务journal warningLines=0;精确版本、资源及服务检查通过。保留工具原始提示,不改状态文件冒充全绿。

发布计划 远端准备 备份 停止 迁移 启动恢复 工具验证
20260916T104026-a350aca88336-7f5f9fd9 58.1s 34.6s 3.7s 1.2s 5.4s 5.0s
20260916T110901-010ba3216889-257390d0 17.0s 34.7s <0.1s <0.1s 2.2s 0.9s

数字取自state.steps,不将开发、浏览器诊断、验证码/重新认证等待、Webhook网络排障或附加竞态修复计为服务停机。本地候选验证日志独立保留;API全量候选179.627s,前端工作区115.33s不冒称候选耗时。

恢复资产分别位于:

  • /var/backups/cmpp-platform/20260916T104026-a350aca88336-7f5f9fd9-attempt-1789555402719951496(原cbc4a03)。
  • /var/backups/cmpp-platform/20260916T110901-010ba3216889-257390d0-attempt-1789557105165052776(原a350aca)。

两份备份经工具摘要/可读性检查,未进行整机或数据库恢复演练。旧版本不理解新工作表,禁止直接回退并宣称接续已验证。

容量与测试资源收尾

测试机程序、发布目录和备份均落同一/dev/sda2根盘,没有独立数据盘。发布前后已用84166586368→86242967552字节,增加2076381184字节;最终可用13457821696字节,df使用率87%。

路径 发布前字节 发布后字节 保留原因
/opt/cmpp-platform 1030688768 1032572928 当前010ba32
/opt/cmpp-releases 13599055872 14703378432 候选、原产物/依赖、源包、阶段证据
/var/backups/cmpp-platform 8042622976 9034113024 两份独立恢复点及既有备份
/var/log 1025540096 1026125824 服务诊断日志
/root/.npm 698204160 722685952 依赖缓存

上一有效应用a350aca的previous-dist43720704字节)及previous-source1654784字节)位于第二轮发布目录;首轮previous-api-node_modules587194368字节)、previous-api-dist4771840字节)、previous-dist42360832字节)对应cbc4a03恢复组件。首轮candidate-1789555279750741134为397352960字节;第二轮candidate-1789557047597611732为15458304字节。精确路径清单/占用见本地final-assets.log。当前/上一有效版本之外历史资产仍保留,容量治理未完成;未擅自删除备份、旧依赖或迁移目录。

本轮隔离应用cmu3z59t200031ple266tmprq及HTTP接口已停用,凭据revoked、Webhook端点disabled;两个模拟通道通过真实管理API停用并断链。模拟器7910、临时隧道、Webhook监听器、本轮启动的两个本地隔离PG集群均停止;临时hosts精确映射及清理timer已撤销。测试短信、账务、协议日志与审计保留,不改回余额,不删除业务证据。其他客户/通道配置未更改。

仍未验证的范围

TC-RC-01~12为综合矩阵,不能逐行笼统全部通过:两独立进程和旧租约fence、事务回滚/接续等已在真实隔离PG验证;目标环境已完成前述真实端到端,但未在所有生产消费者位置逐断点kill/restart,未等待真实72小时,未演练旧版恢复及全部历史脏数据组合。未执行修复前后同负载性能对照或持续容量压测,不能宣称CPU下降幅度/TPS。TC-RC-13即时应答竞态本地及目标补测通过。预生产验收完全未执行。

测试证据:.local-data/five-fixes-20260916/{completion-final.log,immediate-before.log,immediate-after.log,go-all.log,go-vet.log,reconcile-final.log,count-diagnosis.log,cleanup-fixture.log,final-verification-detail.json,capacity-before.log,capacity-after.log,final-assets.log};标准计划/验证/报告在.local-data/releases/对应上述两计划目录。浏览器截图及受控脚本位于本机临时目录cmpp-five-fixes-20260916,不包含密码、Cookie或认证状态。测试脚本PASS文字已将“audited recovery”纠正为“isolated database recovery”,该恢复测试不代表人工恢复审计功能。