use std::sync::Arc;
pub trait HealthCheckRegistry: Send + Sync {
fn force_unhealthy_for_route(&self, route_id: &str, name: &str, reason: &str);
}
#[derive(Debug, Default, Clone)]
pub struct NoOpHealthCheckRegistry;
impl HealthCheckRegistry for NoOpHealthCheckRegistry {
fn force_unhealthy_for_route(&self, _route_id: &str, _name: &str, _reason: &str) {
}
}
pub fn noop_health_check_registry() -> Arc<dyn HealthCheckRegistry> {
Arc::new(NoOpHealthCheckRegistry)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn noop_force_unhealthy_does_not_panic() {
let reg = NoOpHealthCheckRegistry;
reg.force_unhealthy_for_route("any-route", "any-name", "any reason");
}
#[test]
fn noop_is_send_sync() {
fn assert_send_sync<T: Send + Sync>() {}
assert_send_sync::<NoOpHealthCheckRegistry>();
}
#[test]
fn noop_health_check_registry_returns_arc() {
let reg: Arc<dyn HealthCheckRegistry> = noop_health_check_registry();
reg.force_unhealthy_for_route("route-1", "init", "test reason");
}
}