test: add reproducible schedule backlog rehearsal

This commit is contained in:
2026-09-20 14:34:58 +08:00
parent 0d1026819c
commit e4225fd2ad
3 changed files with 144 additions and 2 deletions

View File

@@ -20,7 +20,7 @@ go run ./cmd/orbit-schedule-load \
可以把 `-schedules` 调到 32、`-requests` 设为 4,观察同一秒集中触发及现有队列速率限制下的排队。队列默认并发和每秒授权量仍由部署配置决定,工具只记录预检快照,不提高配额。另可使用 `-schedules 2 -requests 12 -start-delay 1s -run-timeout 5s` 验证截止不足的失败报告;它必须非零退出,未观察到的触发点不能算成功。
要观察持久化积压,可在一次性数据库使用 `-schedules 32 -requests 8 -workers 1 -capacity 1 -start-delay 5s -run-timeout 180s`。该配置会让256个触发点集中进入队列,报告预期非零并保留未核验分母;独立连接应每2秒读取 `pulse_tasks` 的 `WAITING/LEASED/RUNNING/SUCCEEDED` 计数,示例结果见[长期积压报告](../reports/phase-6-backlog.md)。
要观察持久化积压,可在一次性数据库使用 `-schedules 32 -requests 8 -workers 1 -capacity 1 -start-delay 5s -run-timeout 180s`。该配置会让256个触发点集中进入队列,报告预期非零并保留未核验分母;独立连接应每2秒读取 `pulse_tasks` 的 `WAITING/LEASED/RUNNING/SUCCEEDED` 计数,示例结果见[长期积压报告](../reports/phase-6-backlog.md)。仓库还提供[`scripts/test-schedule-backlog.sh`](../../scripts/test-schedule-backlog.sh)自动创建/清理一次性 MySQL、采样状态和执行最终外键核验。
## 参数边界

View File

@@ -52,6 +52,6 @@ ORBIT_CREDENTIALS_FILE=/tmp/schedule-backlog.credentials.json \
-start-delay 5s -run-timeout 180s -poll-interval 100ms
```
准备阶段必须使用一次性 MySQL、`orbit-migrate up`、隔离队列和 `worker-access`/`schedule-access` 权限;不要把这条命令指向生产队列。命令预期在本样本的速率和容量下以非零退出,并在报告中保留未核验分母。收尾后使用 `orbit-admin verify`,再从独立数据库连接检查任务状态和外键数量。完整启动/清理方式按[定时工具手册](../api/schedule-load.md)和仓库一次性 MySQL 脚本约定执行。
准备阶段必须使用一次性 MySQL、`orbit-migrate up`、隔离队列和 `worker-access`/`schedule-access` 权限;不要把这条命令指向生产队列。命令预期在本样本的速率和容量下以非零退出,并在报告中保留未核验分母。收尾后使用 `orbit-admin verify`,再从独立数据库连接检查任务状态和外键数量。完整启动/清理方式按[定时工具手册](../api/schedule-load.md)执行;仓库提供[`scripts/test-schedule-backlog.sh`](../../scripts/test-schedule-backlog.sh),设置 `ORBIT_TEST_KEEP_ARTIFACTS=1` 可保留报告、曲线和数据库快照。脚本只使用一次性 MySQL,退出0表示预期的工具非零截止结果已核对。
本批没有验证长期运行数小时的存储增长、历史归档、跨节点公平、Worker 重连风暴、MySQL 故障切换、备份恢复或 RPO/RTO;这些仍属于 P6/P7 未完成门槛。