OxL Справочник OxL
РусскийEnglish

18.4 Симуляция

oxl
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