mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-29 03:12:21 +00:00
✨ add wasm coverage and trace context
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
///|
|
||||
async test "native async file lifecycle flushes rotates and restarts" {
|
||||
if !@bitlogger.native_files_supported() {
|
||||
inspect(@bitlogger.native_files_supported(), content="false")
|
||||
} else {
|
||||
let path = "logs/bitlogger-async-native-e2e.log"
|
||||
let first_flushes : Ref[Int] = Ref(0)
|
||||
let first_sink = @bitlogger.file_sink(
|
||||
path,
|
||||
append=false,
|
||||
auto_flush=false,
|
||||
rotation=Some(@bitlogger.file_rotation(8, max_backups=1)),
|
||||
formatter=fn(rec) { rec.message },
|
||||
)
|
||||
let first = async_logger(
|
||||
first_sink,
|
||||
config=AsyncLoggerConfig::new(
|
||||
max_pending=4,
|
||||
overflow=AsyncOverflowPolicy::Blocking,
|
||||
max_batch=4,
|
||||
linger_ms=0,
|
||||
flush=AsyncFlushPolicy::Batch,
|
||||
),
|
||||
min_level=@bitlogger.Level::Info,
|
||||
target="async.file.e2e",
|
||||
flush=fn(sink) {
|
||||
first_flushes.val += 1
|
||||
ignore(sink.flush())
|
||||
},
|
||||
)
|
||||
|
||||
@async.with_task_group(group => {
|
||||
group.spawn_bg(() => first.run())
|
||||
first.info("first-record")
|
||||
first.shutdown()
|
||||
})
|
||||
|
||||
inspect(first.is_closed(), content="true")
|
||||
inspect(first.has_failed(), content="false")
|
||||
inspect(first.pending_count(), content="0")
|
||||
inspect(first_flushes.val > 0, content="true")
|
||||
inspect(first_sink.path(), content="logs/bitlogger-async-native-e2e.log")
|
||||
inspect(first_sink.rotation_enabled(), content="true")
|
||||
inspect(first_sink.rotation_failures(), content="0")
|
||||
inspect(first_sink.write_failures(), content="0")
|
||||
inspect(first_sink.flush_failures(), content="0")
|
||||
inspect(first_sink.close(), content="true")
|
||||
|
||||
let restart_flushes : Ref[Int] = Ref(0)
|
||||
let restarted_sink = @bitlogger.file_sink(
|
||||
path,
|
||||
append=true,
|
||||
auto_flush=false,
|
||||
rotation=Some(@bitlogger.file_rotation(8, max_backups=1)),
|
||||
formatter=fn(rec) { rec.message },
|
||||
)
|
||||
let restarted = async_logger(
|
||||
restarted_sink,
|
||||
config=AsyncLoggerConfig::new(
|
||||
max_pending=4,
|
||||
overflow=AsyncOverflowPolicy::Blocking,
|
||||
max_batch=4,
|
||||
linger_ms=0,
|
||||
flush=AsyncFlushPolicy::Shutdown,
|
||||
),
|
||||
min_level=@bitlogger.Level::Info,
|
||||
target="async.file.e2e",
|
||||
flush=fn(sink) {
|
||||
restart_flushes.val += 1
|
||||
ignore(sink.flush())
|
||||
},
|
||||
)
|
||||
|
||||
@async.with_task_group(group => {
|
||||
group.spawn_bg(() => restarted.run())
|
||||
restarted.info("second-record")
|
||||
restarted.shutdown()
|
||||
})
|
||||
|
||||
inspect(restarted.is_closed(), content="true")
|
||||
inspect(restarted.has_failed(), content="false")
|
||||
inspect(restarted.pending_count(), content="0")
|
||||
inspect(restart_flushes.val, content="1")
|
||||
inspect(restarted_sink.rotation_enabled(), content="true")
|
||||
inspect(restarted_sink.rotation_failures(), content="0")
|
||||
inspect(restarted_sink.write_failures(), content="0")
|
||||
inspect(restarted_sink.flush_failures(), content="0")
|
||||
inspect(restarted_sink.close(), content="true")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user