94 lines
4.3 KiB
Rust
94 lines
4.3 KiB
Rust
// file: crates/ksp-logging-lib/tests/public_api.rs
|
|
// version: 6
|
|
|
|
//! Integration tests for the public crate-root surface of `ksp-logging-lib`.
|
|
|
|
const TEST_TARGET: &str = "ksp-logging-lib";
|
|
|
|
#[test]
|
|
fn public_settings_surface_is_usable() {
|
|
let console_filter =
|
|
ksp_logging_lib::OutputFilter::new(ksp_logging_lib::LogFilterLevel::Debug, std::vec![TEST_TARGET.to_string()], std::vec!["logging".to_string()]);
|
|
let file_filter = ksp_logging_lib::OutputFilter::new(
|
|
ksp_logging_lib::LogFilterLevel::Error,
|
|
std::vec![TEST_TARGET.to_string()],
|
|
std::vec!["logging.runtime".to_string()],
|
|
);
|
|
let settings = ksp_logging_lib::LoggingSettings::new(
|
|
ksp_logging_lib::LogFilterLevel::Info,
|
|
ksp_logging_lib::SpanEvents::NewAndClose,
|
|
std::option::Option::Some(ksp_logging_lib::ConsoleSettings::new(
|
|
true,
|
|
ksp_logging_lib::ConsoleOutput::Stdout,
|
|
true,
|
|
ksp_logging_lib::LogFormat::Compact,
|
|
console_filter,
|
|
)),
|
|
std::vec![ksp_logging_lib::FileSettings::new(
|
|
"file.logging.error",
|
|
true,
|
|
"logs",
|
|
"error.jsonl",
|
|
ksp_logging_lib::FileRotation::Daily,
|
|
ksp_logging_lib::LogFormat::Json,
|
|
file_filter,
|
|
)],
|
|
)
|
|
.with_target_filter(ksp_logging_lib::TargetFilter::new(TEST_TARGET, ksp_logging_lib::LogFilterLevel::Trace));
|
|
assert!(settings.validate().is_ok());
|
|
assert_eq!(settings.default_filter(), ksp_logging_lib::LogFilterLevel::Info);
|
|
assert_eq!(settings.console().map(ksp_logging_lib::ConsoleSettings::output), std::option::Option::Some(ksp_logging_lib::ConsoleOutput::Stdout));
|
|
assert_eq!(settings.console().map(ksp_logging_lib::ConsoleSettings::format), std::option::Option::Some(ksp_logging_lib::LogFormat::Compact));
|
|
assert_eq!(settings.files().len(), 1);
|
|
assert_eq!(settings.files()[0].output_id(), "file.logging.error");
|
|
assert_eq!(settings.files()[0].format(), ksp_logging_lib::LogFormat::Json);
|
|
}
|
|
|
|
#[test]
|
|
fn public_event_macros_are_usable() {
|
|
ksp_logging_lib::error!(target: TEST_TARGET, operation = "public_api", "error event");
|
|
ksp_logging_lib::warn!(target: TEST_TARGET, operation = "public_api", "warn event");
|
|
ksp_logging_lib::info!(target: TEST_TARGET, operation = "public_api", "info event");
|
|
ksp_logging_lib::debug!(target: TEST_TARGET, operation = "public_api", "debug event");
|
|
ksp_logging_lib::trace!(target: TEST_TARGET, operation = "public_api", "trace event");
|
|
}
|
|
|
|
#[test]
|
|
fn public_span_surface_is_usable_for_sync_and_async() {
|
|
let span = ksp_logging_lib::trace_span!(target: TEST_TARGET, "public_sync", domain = "logging");
|
|
let value = span.in_scope(|| -> u32 {
|
|
return 7;
|
|
});
|
|
assert_eq!(value, 7);
|
|
let async_span = ksp_logging_lib::debug_span!(target: TEST_TARGET, "public_async", component = "test");
|
|
let future = ksp_logging_lib::instrument(async_span, std::future::ready(9_u32));
|
|
let mut future = std::boxed::Box::pin(future);
|
|
let waker = std::task::Waker::noop();
|
|
let mut context = std::task::Context::from_waker(waker);
|
|
let poll = std::future::Future::poll(future.as_mut(), &mut context);
|
|
assert_eq!(poll, std::task::Poll::Ready(9_u32));
|
|
}
|
|
|
|
#[test]
|
|
fn all_span_levels_are_usable() {
|
|
let _error = ksp_logging_lib::error_span!(target: TEST_TARGET, "error_span");
|
|
let _warn = ksp_logging_lib::warn_span!(target: TEST_TARGET, "warn_span");
|
|
let _info = ksp_logging_lib::info_span!(target: TEST_TARGET, "info_span");
|
|
let _debug = ksp_logging_lib::debug_span!(target: TEST_TARGET, "debug_span");
|
|
let _trace = ksp_logging_lib::trace_span!(target: TEST_TARGET, "trace_span");
|
|
}
|
|
|
|
#[test]
|
|
fn public_runtime_surface_is_addressable_without_installing_it() {
|
|
let _initialize = ksp_logging_lib::initialize;
|
|
let _reinitialize = ksp_logging_lib::reinitialize;
|
|
let _already_initialized = ksp_logging_lib::ERROR_CODE_ALREADY_INITIALIZED;
|
|
let _reload_failed = ksp_logging_lib::ERROR_CODE_RELOAD_FAILED;
|
|
let _file_initialization_failed = ksp_logging_lib::ERROR_CODE_FILE_OUTPUT_INITIALIZATION_FAILED;
|
|
let _per_file_counter = ksp_logging_lib::LoggingGuard::dropped_file_lines;
|
|
let dropped = ksp_logging_lib::DroppedLines::zero();
|
|
assert_eq!(dropped.console(), 0);
|
|
assert_eq!(dropped.file(), 0);
|
|
assert_eq!(dropped.total(), 0);
|
|
}
|