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

77 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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报文;告警恢复留存与人工清除;监控失败保留最后真实快照并标明采样时间。短信链路细节见[权威方案](phase-4-send-pipeline-redesign.md)第10节。
保护原61项修改与草稿,不提交原metrics、版本3.0.0、发布工具或部署脚本草稿。原包版本修改未进入应用提交;产品命名与工程版本提交是独立事项。共享文档仅精确暂存本轮新增段落;原文件快照及摘要保留于`.local-data/five-fixes-20260916/before``protected-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”,该恢复测试不代表人工恢复审计功能。