mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-30 06:26:38 +00:00
✅ split sync tests by behavior boundary
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
///|
|
||||
test "configured logger close stays aligned with runtime sink close" {
|
||||
let console_config = LoggerConfig::new(
|
||||
min_level=Level::Info,
|
||||
target="config.close.console",
|
||||
sink=SinkConfig::new(kind=SinkKind::Console),
|
||||
queue=Some(QueueConfig::new(2, overflow=QueueOverflowPolicy::DropNewest)),
|
||||
)
|
||||
let console_logger = build_logger(console_config)
|
||||
let console_sink = build_logger(console_config).sink
|
||||
console_logger.info("one")
|
||||
console_logger.info("two")
|
||||
inspect(console_logger.pending_count(), content="2")
|
||||
inspect(console_logger.close() == console_sink.close(), content="true")
|
||||
inspect(console_logger.pending_count(), content="0")
|
||||
|
||||
let file_config = LoggerConfig::new(
|
||||
target="config.close.file",
|
||||
sink=SinkConfig::new(kind=SinkKind::File, path="config-close.log"),
|
||||
)
|
||||
let file_logger = build_logger(file_config)
|
||||
let file_sink = build_logger(file_config).sink
|
||||
inspect(file_logger.close() == file_sink.close(), content="true")
|
||||
}
|
||||
|
||||
///|
|
||||
test "queued console close drains pending queue before reporting success" {
|
||||
let sink = RuntimeSink::QueuedConsole(
|
||||
queued_sink(
|
||||
console_sink(),
|
||||
max_pending=4,
|
||||
overflow=QueueOverflowPolicy::DropNewest,
|
||||
),
|
||||
)
|
||||
let logger = Logger::new(
|
||||
sink,
|
||||
min_level=Level::Info,
|
||||
target="runtime.close.console",
|
||||
)
|
||||
logger.info("one")
|
||||
logger.info("two")
|
||||
inspect(sink.pending_count(), content="2")
|
||||
inspect(sink.close(), content="true")
|
||||
inspect(sink.pending_count(), content="0")
|
||||
inspect(sink.flush(), content="0")
|
||||
}
|
||||
|
||||
///|
|
||||
test "queued json console close drains pending queue before reporting success" {
|
||||
let sink = RuntimeSink::QueuedJsonConsole(
|
||||
queued_sink(
|
||||
json_console_sink(),
|
||||
max_pending=4,
|
||||
overflow=QueueOverflowPolicy::DropNewest,
|
||||
),
|
||||
)
|
||||
let logger = Logger::new(
|
||||
sink,
|
||||
min_level=Level::Info,
|
||||
target="runtime.close.json",
|
||||
)
|
||||
logger.info("one")
|
||||
logger.info("two")
|
||||
inspect(sink.pending_count(), content="2")
|
||||
inspect(sink.close(), content="true")
|
||||
inspect(sink.pending_count(), content="0")
|
||||
inspect(sink.drain(), content="0")
|
||||
}
|
||||
|
||||
///|
|
||||
test "queued text console close drains pending queue before reporting success" {
|
||||
let sink = RuntimeSink::QueuedTextConsole(
|
||||
queued_sink(
|
||||
text_console_sink(text_formatter(show_timestamp=false, show_target=false)),
|
||||
max_pending=4,
|
||||
overflow=QueueOverflowPolicy::DropNewest,
|
||||
),
|
||||
)
|
||||
let logger = Logger::new(
|
||||
sink,
|
||||
min_level=Level::Info,
|
||||
target="runtime.close.text",
|
||||
)
|
||||
logger.info("one")
|
||||
logger.info("two")
|
||||
inspect(sink.pending_count(), content="2")
|
||||
inspect(sink.close(), content="true")
|
||||
inspect(sink.pending_count(), content="0")
|
||||
inspect(sink.flush(), content="0")
|
||||
}
|
||||
|
||||
///|
|
||||
test "configured queued console close drains pending queue" {
|
||||
let logger = build_logger(
|
||||
LoggerConfig::new(
|
||||
min_level=Level::Info,
|
||||
target="config.close.queued.console",
|
||||
sink=SinkConfig::new(kind=SinkKind::Console),
|
||||
queue=Some(QueueConfig::new(4, overflow=QueueOverflowPolicy::DropNewest)),
|
||||
),
|
||||
)
|
||||
logger.info("one")
|
||||
logger.info("two")
|
||||
inspect(logger.pending_count(), content="2")
|
||||
inspect(logger.close(), content="true")
|
||||
inspect(logger.pending_count(), content="0")
|
||||
}
|
||||
|
||||
///|
|
||||
test "runtime sink queued file close drains queue before teardown" {
|
||||
let sink = RuntimeSink::QueuedFile(
|
||||
queued_sink(
|
||||
file_sink("runtime-close-queued.log", auto_flush=false),
|
||||
max_pending=4,
|
||||
),
|
||||
)
|
||||
let logger = Logger::new(
|
||||
sink,
|
||||
min_level=Level::Info,
|
||||
target="runtime.close.queued",
|
||||
)
|
||||
logger.info("one")
|
||||
logger.info("two")
|
||||
inspect(sink.pending_count(), content="2")
|
||||
if sink.file_available() {
|
||||
inspect(sink.close(), content="true")
|
||||
inspect(sink.pending_count(), content="0")
|
||||
inspect(sink.file_available(), content="false")
|
||||
inspect(sink.file_close(), content="false")
|
||||
} else {
|
||||
inspect(sink.close(), content="false")
|
||||
inspect(sink.pending_count(), content="0")
|
||||
inspect(sink.file_available(), content="false")
|
||||
inspect(sink.file_write_failures(), content="2")
|
||||
inspect(sink.file_close(), content="false")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user