use std::time::Duration;
use crate::domain::fault::Fault;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum CheckKind {
Predicate,
Invariant,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum FaultClass {
Pause,
Kill,
Deprive,
}
impl From<Fault> for FaultClass {
fn from(fault: Fault) -> Self {
match fault {
Fault::Pause => FaultClass::Pause,
Fault::Kill => FaultClass::Kill,
Fault::Deprive(_) => FaultClass::Deprive,
}
}
}
#[derive(Clone, Debug)]
pub enum ExperimentEvent {
ConfigRegistered,
ScenarioStarted,
ScenarioCompleted,
SubjectHosted,
SubjectTornDown,
StateEnumerated { unique: bool },
InterleavingEnumerated { unique: bool },
FaultApplied { fault: Fault },
FaultCleared,
Recovery { took: Duration, ok: bool },
BlastAffected {
class: &'static str,
affected: u64,
total: u64,
},
CheckRun {
kind: CheckKind,
name: String,
passed: bool,
error: Option<String>,
fault: Option<String>,
subject: Option<String>,
round: Option<usize>,
},
LogOverflow,
}