Cairn · module

Cairn.Fuzz.Main

lean/Cairn/Fuzz/Main.lean

lake exe fuzz

lake exe fuzz <App> [--seed S|random] [--iterations N] [--steps K] [--budget-ms M]
                    [--out DIR] [--shrink N] [-v]
lake exe fuzz --list [--deps]

Runs sequences with seeds S, S+1, …, S+N−1 (the SEED and ITERATIONS environment variables set the defaults), stops each at its first failure, shrinks the first failure of each kind, prints it as a flow, and writes <DIR>/<App>.json (docs/fuzz.md). Exit code 1 when anything failed. --list names the package's own targets, and its dependencies' too with --deps; any target can be run by name (cairn_atproto/Claims). Two targets with one name are refused (exit code 2), never one shadowing the other.

Imports Lean.Data.Json, Cairn.Fuzz.Shrink

Order

Structures 1

structure

Cairn.Fuzz.Opts

lean/Cairn/Fuzz/Main.lean:140
Opts : Type
Fields
app : String
seed : Nat
iterations : Nat
steps : Nat
budgetMs : Option Nat
out : Option String
shrinks : Nat
verbose : Bool
list : Bool
deps : Bool

Definitions 23

def

Cairn.Fuzz.opJson

lean/Cairn/Fuzz/Main.lean:25
opJson : TextOp → Lean.Json
def

Cairn.Fuzz.opJson.kind

lean/Cairn/Fuzz/Main.lean:47
kind (k : String) : Lean.Json
def

Cairn.Fuzz.opJson.ext

lean/Cairn/Fuzz/Main.lean:48
ext (k : String) (e : Bool) : Lean.Json
def

Cairn.Fuzz.actionJson

lean/Cairn/Fuzz/Main.lean:51
actionJson (a : Action) : Lean.Json

An action step, in the shape of a flow's witness in lake exe claims.

def

Cairn.Fuzz.keyName

lean/Cairn/Fuzz/Main.lean:59
keyName : Key → String
def

Cairn.Fuzz.faultName

lean/Cairn/Fuzz/Main.lean:65
faultName (f : Fault) : String
def

Cairn.Fuzz.hexOf

lean/Cairn/Fuzz/Main.lean:69
hexOf (b : ByteArray) : String
def

Cairn.Fuzz.replyJson

lean/Cairn/Fuzz/Main.lean:72
replyJson : Reply → Lean.Json
def

Cairn.Fuzz.hostJson

lean/Cairn/Fuzz/Main.lean:84
hostJson : HostOp → Lean.Json
def

Cairn.Fuzz.hostStatsJson

lean/Cairn/Fuzz/Main.lean:99
hostStatsJson (h : HostStats) : Lean.Json
def

Cairn.Fuzz.stepJson

lean/Cairn/Fuzz/Main.lean:111
stepJson (tr : Traced) : Lean.Json
def

Cairn.Fuzz.metricsJson

lean/Cairn/Fuzz/Main.lean:127
metricsJson : MetricsChoice → Lean.Json
def

Cairn.Fuzz.sequenceJson

lean/Cairn/Fuzz/Main.lean:131
sequenceJson (t : Target) (setup : Setup) (traced : Array Traced) : Lean.Json
def

Cairn.Fuzz.parseArgs

lean/Cairn/Fuzz/Main.lean:152
parseArgs (o : Opts) : List String → Except String Opts
def

Cairn.Fuzz.parseArgs.num

lean/Cairn/Fuzz/Main.lean:168
num (v : String) (k : Nat → Except String Opts) : Except String Opts
def

Cairn.Fuzz.usage

lean/Cairn/Fuzz/Main.lean:173
usage : String
def

Cairn.Fuzz.fmt2

lean/Cairn/Fuzz/Main.lean:179
fmt2 (hundredths : Nat) : String

Hundredths, as text: fmt2 1234 = "12.34".

def

Cairn.Fuzz.msText

lean/Cairn/Fuzz/Main.lean:184
msText (ns : Nat) : String

Nanoseconds as milliseconds, to hundredths.

def

Cairn.Fuzz.msJson

lean/Cairn/Fuzz/Main.lean:185
msJson (ns : Nat) : Lean.Json
def

Cairn.Fuzz.claimJson

lean/Cairn/Fuzz/Main.lean:188
claimJson (t : Target) (stats : Stats) (fails : Array (Failure × Setup))
  (c : ClaimInfo) : Lean.Json

Per-claim evidence: pass (true/false), or null with a note when it wasn't run.

def

Cairn.Fuzz.runTarget

lean/Cairn/Fuzz/Main.lean:225
runTarget (t : Target) (o : Opts) : IO UInt32
def

Cairn.Fuzz.duplicate?

lean/Cairn/Fuzz/Main.lean:323
duplicate? : List Target → Option String

A name two of targets share, if any (cairn#221).

def

Cairn.Fuzz.main

lean/Cairn/Fuzz/Main.lean:327
main (targets : List Target) (args : List String) : IO UInt32