18.4 Симуляция
test sim "checkout under faults" seeds 1..=500 {
net.partition(["api"], ["storage"], for: 2s)
net.latency(10ms..300ms)
node.kill("saga-0") after 1s
clock.advance(1h)
assert checkout(cart) is Order | PayError
}- В
simдетерминированы планировщик, сеть, часы, случайность и отказы диска; результат зависит только от seed. - Для каждого seed из диапазона тест выполняется заново. Падение печатает seed;
oxl test --seed Nвоспроизводит его. - Управление:
net.partition,net.latency,net.drop(p),node.kill/restart,disk.fail(node, p),clock.advance/set.
Определяется реализацией. Модель симулятора (D-8056; DIV-036; D-6213, D-6256..D-6258). Стандарт требует детерминизма по seed; степень детализации модели определяется реализацией. Эта реализация: узлы симуляции используют общее хранилище; членство точное (без SWIM); маршрутизация зависит от seed; не моделируются Raft и SWIM,
cluster.leader, стриминговые rpc между узлами;disk.failне доходит до хранилищ; флаги, KMS, телеметрия и cron — один набор на процесс.
См. также
Исходник: docs/spec/oxl-standard.md