mod console;
mod noop;
mod recording;
pub use console::ConsoleSink;
pub use noop::NoOpSink;
pub use recording::{RecordedCounter, RecordedEvent, RecordedGauge, RecordingSink};
pub trait TelemetrySink: Send + Sync {
fn record_counter(&self, name: &str, labels: &[(&str, &str)], delta: u64);
fn record_gauge(&self, name: &str, labels: &[(&str, &str)], value: f64);
fn log_event(&self, schema: &str, fields: &[(&str, &str)]);
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn noop_sink_accepts_metrics() {
let sink = NoOpSink;
sink.record_counter("chronon_scheduler_ticks", &[("component", "scheduler")], 1);
sink.record_gauge("chronon_active_runs", &[], 0.0);
sink.log_event("chronon.run.started", &[("run_id", "abc")]);
}
#[test]
fn console_sink_accepts_metrics() {
let sink = ConsoleSink;
sink.record_counter("chronon_runs_started", &[], 1);
}
}