91 lines
4.2 KiB
Rust
91 lines
4.2 KiB
Rust
// file: crates/ksp-logging-lib/unit_tests/runtime.rs
|
|
// version: 4
|
|
|
|
#[test]
|
|
fn level_mapping_covers_all_ksp_levels() {
|
|
assert_eq!(super::map_filter_level(crate::LogFilterLevel::Off), tracing_subscriber::filter::LevelFilter::OFF);
|
|
assert_eq!(super::map_filter_level(crate::LogFilterLevel::Error), tracing_subscriber::filter::LevelFilter::ERROR);
|
|
assert_eq!(super::map_filter_level(crate::LogFilterLevel::Warn), tracing_subscriber::filter::LevelFilter::WARN);
|
|
assert_eq!(super::map_filter_level(crate::LogFilterLevel::Info), tracing_subscriber::filter::LevelFilter::INFO);
|
|
assert_eq!(super::map_filter_level(crate::LogFilterLevel::Debug), tracing_subscriber::filter::LevelFilter::DEBUG);
|
|
assert_eq!(super::map_filter_level(crate::LogFilterLevel::Trace), tracing_subscriber::filter::LevelFilter::TRACE);
|
|
}
|
|
|
|
#[test]
|
|
fn takeover_filter_silences_external_targets_and_applies_ksp_overrides() {
|
|
let settings = crate::LoggingSettings::new(
|
|
crate::LogFilterLevel::Info,
|
|
crate::SpanEvents::Off,
|
|
std::option::Option::Some(crate::ConsoleSettings::stdout()),
|
|
std::option::Option::None,
|
|
)
|
|
.with_target_filter(crate::TargetFilter::new("ksp-logging-lib", crate::LogFilterLevel::Trace));
|
|
let filter = super::build_target_filter(&settings);
|
|
assert!(filter.would_enable("ksp-store-lib", &tracing::Level::INFO));
|
|
assert!(!filter.would_enable("ksp-store-lib", &tracing::Level::DEBUG));
|
|
assert!(filter.would_enable("ksp-logging-lib", &tracing::Level::TRACE));
|
|
assert!(!filter.would_enable("sqlx", &tracing::Level::ERROR));
|
|
assert!(!filter.would_enable("hyper", &tracing::Level::ERROR));
|
|
}
|
|
|
|
#[test]
|
|
fn span_event_mapping_supports_disabled_timing_and_full_lifecycle() {
|
|
assert_eq!(super::map_span_events(crate::SpanEvents::Off), tracing_subscriber::fmt::format::FmtSpan::NONE);
|
|
assert_eq!(
|
|
super::map_span_events(crate::SpanEvents::NewAndClose),
|
|
tracing_subscriber::fmt::format::FmtSpan::NEW | tracing_subscriber::fmt::format::FmtSpan::CLOSE,
|
|
);
|
|
assert_eq!(super::map_span_events(crate::SpanEvents::Full), tracing_subscriber::fmt::format::FmtSpan::FULL);
|
|
}
|
|
|
|
#[test]
|
|
fn file_rotation_mapping_covers_supported_cadences() {
|
|
assert_eq!(super::map_file_rotation(crate::FileRotation::Never), tracing_appender::rolling::Rotation::NEVER);
|
|
assert_eq!(super::map_file_rotation(crate::FileRotation::Hourly), tracing_appender::rolling::Rotation::HOURLY);
|
|
assert_eq!(super::map_file_rotation(crate::FileRotation::Daily), tracing_appender::rolling::Rotation::DAILY);
|
|
}
|
|
|
|
#[test]
|
|
fn disabled_runtime_has_no_layers_or_outputs() {
|
|
let settings = crate::LoggingSettings::new(crate::LogFilterLevel::Info, crate::SpanEvents::Off, std::option::Option::None, std::option::Option::None);
|
|
let result = super::prepare_runtime(&settings);
|
|
assert!(result.is_ok());
|
|
let prepared = match result {
|
|
std::result::Result::Ok(prepared) => prepared,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
assert!(prepared.layers.is_empty());
|
|
assert!(prepared.outputs.console.is_none());
|
|
assert!(prepared.outputs.file.is_none());
|
|
}
|
|
|
|
#[test]
|
|
fn console_runtime_composes_takeover_filter_before_formatter_and_owns_guard() {
|
|
let settings = crate::LoggingSettings::new(
|
|
crate::LogFilterLevel::Info,
|
|
crate::SpanEvents::Off,
|
|
std::option::Option::Some(crate::ConsoleSettings::stdout()),
|
|
std::option::Option::None,
|
|
);
|
|
let result = super::prepare_runtime(&settings);
|
|
assert!(result.is_ok());
|
|
let prepared = match result {
|
|
std::result::Result::Ok(prepared) => prepared,
|
|
std::result::Result::Err(_) => return,
|
|
};
|
|
assert_eq!(prepared.layers.len(), 1);
|
|
assert!(prepared.outputs.console.is_some());
|
|
assert!(prepared.outputs.file.is_none());
|
|
assert_eq!(prepared.outputs.dropped_lines(), crate::DroppedLines::zero());
|
|
}
|
|
|
|
#[test]
|
|
fn dropped_line_snapshots_add_saturating_by_sink() {
|
|
let first = crate::DroppedLines { console: usize::MAX, file: 4 };
|
|
let second = crate::DroppedLines { console: 1, file: 7 };
|
|
let combined = first.saturating_add(second);
|
|
assert_eq!(combined.console(), usize::MAX);
|
|
assert_eq!(combined.file(), 11);
|
|
assert_eq!(combined.total(), usize::MAX);
|
|
}
|