#![cfg(feature = "metrics")]
#![allow(clippy::unwrap_used, clippy::expect_used)]
use telemetry_init::{effective_max_level, LogFormat, Telemetry, TelemetryConfig, TelemetryError};
use tracing::level_filters::LevelFilter;
#[test]
fn full_lifecycle_in_one_deterministic_test() {
let telemetry = Telemetry::init(
TelemetryConfig::new("it-svc")
.version("0.1.0")
.log_format(LogFormat::Json)
.log_level("info")
.metrics_budget(4),
)
.expect("first init must succeed");
let err = Telemetry::init(TelemetryConfig::new("second-svc")).unwrap_err();
assert!(
matches!(err, TelemetryError::AlreadyInitialized),
"expected AlreadyInitialized, got {err:?}"
);
let registry = telemetry.metrics();
let requests = registry
.counter("it_requests_total", "Total integration requests.", &[])
.expect("register counter");
requests.inc();
let text = registry.render();
assert!(text.contains("it_requests_total 1"), "got: {text}");
for i in 0..8 {
let name = format!("it_budget_{i}_total");
let _ = registry.counter(&name, "Budget filler.", &[]);
}
assert_eq!(registry.series_count(), 4);
tracing::info!("telemetry-init integration event");
telemetry.shutdown().expect("first shutdown");
telemetry.shutdown().expect("second shutdown");
drop(telemetry);
}
#[test]
fn public_builder_chain_is_fully_chainable() {
let cfg = TelemetryConfig::new("cfg-svc")
.version("9.9.9")
.log_format(LogFormat::Pretty)
.log_level("debug")
.metrics_budget(64)
.sample_rate(0.5);
let _ = cfg;
}
#[test]
fn debug_impl_on_subscriber_result_does_not_panic() {
let config = TelemetryConfig::new("dbg-svc");
let sub = telemetry_init::build_subscriber(&config).expect("build");
let debug = format!("{sub:?}");
assert!(debug.contains("Subscriber"), "got: {debug}");
}
#[test]
fn effective_max_level_respects_rust_log_override() {
let config = TelemetryConfig::new("lvl-svc").log_level("warn");
assert_eq!(effective_max_level(&config), Some(LevelFilter::WARN));
}