Add file sink reopen and failure counters

This commit is contained in:
Nanaloveyuki
2026-05-10 12:19:52 +08:00
parent a26ec6399c
commit 69967badfd
6 changed files with 105 additions and 11 deletions
+28
View File
@@ -90,6 +90,9 @@ test "native file support flag is queryable" {
test "file sink availability reflects backend support" {
let sink = file_sink("bitlogger-test.log")
inspect(sink.is_available() == native_files_supported(), content="true")
inspect(sink.open_failures(), content=if sink.is_available() { "0" } else { "1" })
inspect(sink.write_failures(), content="0")
inspect(sink.flush_failures(), content="0")
if sink.is_available() {
inspect(sink.flush(), content="true")
inspect(sink.close(), content="true")
@@ -110,9 +113,34 @@ test "file sink tracks rotation failures on unavailable backend" {
sink.write(record(Level::Info, "a"))
if sink.is_available() {
inspect(sink.rotation_failures(), content="0")
inspect(sink.write_failures(), content="0")
ignore(sink.close())
} else {
inspect(sink.rotation_failures(), content="0")
inspect(sink.write_failures(), content="1")
}
}
test "file sink reopen and failure counters reflect backend state" {
let sink = file_sink("bitlogger-reopen.log")
if sink.is_available() {
inspect(sink.open_failures(), content="0")
inspect(sink.close(), content="true")
inspect(sink.reopen(), content="true")
inspect(sink.is_available(), content="true")
inspect(sink.open_failures(), content="0")
sink.write(record(Level::Info, "reopened"))
inspect(sink.write_failures(), content="0")
inspect(sink.flush_failures(), content="0")
inspect(sink.close(), content="true")
ignore(remove_file_internal("bitlogger-reopen.log"))
} else {
inspect(sink.open_failures(), content="1")
sink.write(record(Level::Info, "dropped"))
inspect(sink.write_failures(), content="1")
inspect(sink.reopen(), content="false")
inspect(sink.open_failures(), content="2")
inspect(sink.flush_failures(), content="0")
}
}