v0.1.2-pre.003
This commit is contained in:
75
crates/ksp-logging-lib/tests/runtime.rs
Normal file
75
crates/ksp-logging-lib/tests/runtime.rs
Normal file
@@ -0,0 +1,75 @@
|
||||
// file: crates/ksp-logging-lib/tests/runtime.rs
|
||||
// version: 1
|
||||
|
||||
//! Integration tests for global initialization, takeover filtering and hot reload.
|
||||
|
||||
const LOGGING_TARGET: &str = "ksp-logging-lib";
|
||||
const OTHER_KSP_TARGET: &str = "ksp-store-lib";
|
||||
const EXTERNAL_TARGET: &str = "sqlx";
|
||||
|
||||
fn logging_trace_enabled() -> bool {
|
||||
return tracing::enabled!(target: LOGGING_TARGET, tracing::Level::TRACE);
|
||||
}
|
||||
|
||||
fn other_ksp_info_enabled() -> bool {
|
||||
return tracing::enabled!(target: OTHER_KSP_TARGET, tracing::Level::INFO);
|
||||
}
|
||||
|
||||
fn other_ksp_debug_enabled() -> bool {
|
||||
return tracing::enabled!(target: OTHER_KSP_TARGET, tracing::Level::DEBUG);
|
||||
}
|
||||
|
||||
fn external_error_enabled() -> bool {
|
||||
return tracing::enabled!(target: EXTERNAL_TARGET, tracing::Level::ERROR);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn global_runtime_supports_takeover_hot_reload_and_single_initialization() {
|
||||
let disabled = ksp_logging_lib::LoggingSettings::new(
|
||||
ksp_logging_lib::LogFilterLevel::Info,
|
||||
ksp_logging_lib::SpanEvents::Off,
|
||||
std::option::Option::None,
|
||||
std::option::Option::None,
|
||||
);
|
||||
let initialize_result = ksp_logging_lib::initialize(&disabled);
|
||||
assert!(initialize_result.is_ok());
|
||||
let mut guard = match initialize_result {
|
||||
std::result::Result::Ok(guard) => guard,
|
||||
std::result::Result::Err(_) => return,
|
||||
};
|
||||
assert!(!logging_trace_enabled());
|
||||
assert!(!other_ksp_info_enabled());
|
||||
assert!(!external_error_enabled());
|
||||
let enabled = ksp_logging_lib::LoggingSettings::new(
|
||||
ksp_logging_lib::LogFilterLevel::Info,
|
||||
ksp_logging_lib::SpanEvents::NewAndClose,
|
||||
std::option::Option::Some(ksp_logging_lib::ConsoleSettings::stderr()),
|
||||
std::option::Option::None,
|
||||
)
|
||||
.with_target_filter(ksp_logging_lib::TargetFilter::new(LOGGING_TARGET, ksp_logging_lib::LogFilterLevel::Trace));
|
||||
let reload_result = ksp_logging_lib::reinitialize(&mut guard, &enabled);
|
||||
assert!(reload_result.is_ok());
|
||||
assert_eq!(guard.settings(), &enabled);
|
||||
assert!(logging_trace_enabled());
|
||||
assert!(other_ksp_info_enabled());
|
||||
assert!(!other_ksp_debug_enabled());
|
||||
assert!(!external_error_enabled());
|
||||
let unsupported_file = ksp_logging_lib::LoggingSettings::new(
|
||||
ksp_logging_lib::LogFilterLevel::Error,
|
||||
ksp_logging_lib::SpanEvents::Full,
|
||||
std::option::Option::None,
|
||||
std::option::Option::Some(ksp_logging_lib::FileSettings::new("logs", "ksp", ksp_logging_lib::FileRotation::Daily)),
|
||||
);
|
||||
let failed_reload = ksp_logging_lib::reinitialize(&mut guard, &unsupported_file);
|
||||
assert!(failed_reload.is_err());
|
||||
assert_eq!(guard.settings(), &enabled);
|
||||
assert!(logging_trace_enabled());
|
||||
assert!(!external_error_enabled());
|
||||
let second_initialize = ksp_logging_lib::initialize(&disabled);
|
||||
assert!(second_initialize.is_err());
|
||||
let error = match second_initialize {
|
||||
std::result::Result::Ok(_) => return,
|
||||
std::result::Result::Err(error) => error,
|
||||
};
|
||||
assert_eq!(error.code(), ksp_logging_lib::ERROR_CODE_ALREADY_INITIALIZED);
|
||||
}
|
||||
Reference in New Issue
Block a user