use crate::metrics::MetricsManager;
use super::config::BatchProcessingConfig;
pub fn register(manager: &MetricsManager, config: &BatchProcessingConfig) {
let _ = manager.counter(
"batch_engine_messages_received_total",
"Messages received from transport",
);
let _ = manager.counter(
"batch_engine_messages_parsed_total",
"Messages successfully SIMD-parsed",
);
let _ = manager.counter(
"batch_engine_messages_filtered_total",
"Messages filtered at pre-route",
);
let _ = manager.counter("batch_engine_messages_dlq_total", "Messages routed to DLQ");
let _ = manager.counter("batch_engine_parse_errors_total", "Parse failures");
let _ = manager.counter(
"batch_engine_memory_pressure_pauses_total",
"MemoryGuard pause events between chunks",
);
let _ = manager.histogram(
"batch_engine_parse_duration_seconds",
"SIMD parse time per chunk",
);
let _ = manager.histogram(
"batch_engine_transform_duration_seconds",
"App transform time per chunk",
);
let _ = manager.histogram("batch_engine_chunk_size", "Actual items per chunk");
let _ = manager.histogram(
"batch_engine_pre_route_duration_seconds",
"Pre-route extraction time per chunk",
);
let _ = manager.gauge(
"batch_engine_intern_table_size",
"Interned field name count",
);
emit_thresholds(config);
}
pub fn emit_thresholds(config: &BatchProcessingConfig) {
metrics::gauge!("batch_engine_max_chunk_size").set(config.max_chunk_size as f64);
metrics::gauge!("batch_engine_memory_pressure_pause_ms")
.set(config.memory_pressure_pause_ms as f64);
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn register_does_not_panic() {
let manager = MetricsManager::new_for_test("test_engine_metrics");
let config = BatchProcessingConfig::default();
register(&manager, &config);
}
#[test]
fn emit_thresholds_does_not_panic() {
let config = BatchProcessingConfig::default();
emit_thresholds(&config);
}
#[test]
fn register_returns_handles() {
let manager = MetricsManager::new_for_test("test_engine_metrics_handles");
let config = BatchProcessingConfig::default();
register(&manager, &config);
register(&manager, &config);
}
}