SuperAPI AI 工具集

tigerbeetle-deterministic-simulation

测试与质量

查看项目

更新于 10-15 20:28

技能介绍

用途:该资料是一份确定性模拟测试(deterministic simulation testing)风格指南,参照 TigerBeetle 与 Joran Dirk Greef 的做法,用于测试分布式系统。核心思路是控制所有非确定性来源(时间、网络、磁盘 I/O、随机数),从而在数分钟内模拟数年运行,精确重放任意失败场景。

主要能力与原则:控制全部非确定性;模拟而非仿真;时间压缩;单一种子即可完美复现;大规模故障注入。资料给出 VOPR(Viewstamped Operation Replication Tester)模拟循环示意,包含种子驱动的确定性 PRNG、模拟环境、每次操作后检查不变量、输出通过/失败与可复现种子。

代码模式:提供 Zig 代码,包括 Time 抽象(Real 与 Simulated,模拟中 sleep 直接推进时钟)、确定性 PRNG(Xorshift64*,含 boolean、range、chance)、SimulatedNetwork(消息丢失、重复、乱序、延迟、分区注入与恢复)、SimulatedStorage(读/写错误、位翻转损坏、崩溃丢失待写、撕裂写)、Simulator 主循环(按 tick 处理事件、随机故障注入、不变量检查)。

使用方式:资料强调始终通过接口注入非确定性、使用种子化 PRNG、把时间作为可控参数而非 clock_gettime()、记录足够状态以复现、每次状态转换后检查不变量、运行数百万次模拟、让模拟快于实时。禁止在模拟模式调用真实系统时间、使用真实网络或磁盘 I/O、依赖线程调度排序、假设“跑了一千次就对”、跳过故障注入、相信罕见事件不会发生。

适用场景:分布式数据库、共识协议、存储系统等需要金融级可靠性的系统测试。

限制:资料未提供安装命令、运行入口、依赖版本或完整可运行示例;代码片段为示意,部分辅助函数(如 allocateStorages、InvariantChecker)未给出实现,末尾内容被截断。