class Crowbar::Campaign::Runner

Overview

Multi-target mutation fuzzing campaign orchestrator enforcing 60-second watchdog invariants, bounded execution timeouts, and automatic test case reduction.

Defined in:

crowbar/campaign/runner.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(name : String = "Nightly Mutation Fuzzing", targets : Array(Target) = [] of Target, iterations_per_target : Int32 = 200, max_duration : Time::Span | Nil = nil, seed : UInt64 = 42_u64, auto_shrink : Bool = true, watchdog_interval : Time::Span = 10.seconds) #

Instance Method Detail

def add_target(target : Target) : Nil #

def auto_shrink : Bool #

def auto_shrink=(auto_shrink : Bool) #

def iterations_per_target : Int32 #

def iterations_per_target=(iterations_per_target : Int32) #

def max_duration : Time::Span | Nil #

def max_duration=(max_duration : Time::Span | Nil) #

def name : String #

def name=(name : String) #

def on_crash : Proc(CrashRecord, Nil) | Nil #

def on_crash=(on_crash : Proc(CrashRecord, Nil) | Nil) #

def on_heartbeat : Proc(Int32, Float64, Nil) | Nil #

def on_heartbeat=(on_heartbeat : Proc(Int32, Float64, Nil) | Nil) #

def on_progress : Proc(String, Int32, Int32, IterationResult, Nil) | Nil #

Callback signatures


def on_progress=(on_progress : Proc(String, Int32, Int32, IterationResult, Nil) | Nil) #

Callback signatures


def run : CampaignReport #

Executes the full fuzzing campaign across all targets


def seed : UInt64 #

def seed=(seed : UInt64) #

def targets : Array(Target) #

def targets=(targets : Array(Target)) #

def watchdog_interval : Time::Span #

def watchdog_interval=(watchdog_interval : Time::Span) #