#[cfg(feature = "test-harness")]
mod harness;
#[cfg(feature = "test-harness")]
pub use harness::TestHarness;
#[cfg(feature = "test-harness")]
pub trait TestScenario: Send + Sync {
fn name(&self) -> &str;
fn setup(&mut self) -> anyhow::Result<()>;
fn execute(&mut self) -> anyhow::Result<TestResult>;
fn teardown(&mut self) -> anyhow::Result<()>;
}
#[cfg(feature = "test-harness")]
#[derive(Debug, Clone)]
pub struct TestResult {
pub passed: bool,
pub duration_ms: u64,
pub error: Option<String>,
pub metrics: TestMetrics,
}
#[cfg(feature = "test-harness")]
#[derive(Debug, Clone, Default)]
pub struct TestMetrics {
pub messages_sent: u64,
pub messages_delivered: u64,
pub avg_latency_ms: f64,
pub packet_loss_rate: f64,
}