94 lines
3.2 KiB
Lua
94 lines
3.2 KiB
Lua
require "kong.tools.utils"
|
|
|
|
|
|
describe("Observability/Logs unit tests", function()
|
|
describe("maybe_push()", function()
|
|
local o11y_logs, maybe_push, get_request_logs, get_worker_logs
|
|
local old_ngx, old_kong
|
|
|
|
lazy_setup(function()
|
|
old_ngx = _G.ngx
|
|
old_kong = _G.kong
|
|
|
|
_G.ngx = {
|
|
config = { subsystem = "http" },
|
|
ctx = {},
|
|
DEBUG = ngx.DEBUG,
|
|
INFO = ngx.INFO,
|
|
WARN = ngx.WARN,
|
|
}
|
|
|
|
_G.kong = {
|
|
configuration = {
|
|
log_level = "info",
|
|
},
|
|
}
|
|
|
|
o11y_logs = require "kong.observability.logs"
|
|
maybe_push = o11y_logs.maybe_push
|
|
get_request_logs = o11y_logs.get_request_logs
|
|
get_worker_logs = o11y_logs.get_worker_logs
|
|
end)
|
|
|
|
before_each(function()
|
|
_G.ngx.ctx = {}
|
|
end)
|
|
|
|
lazy_teardown(function()
|
|
_G.ngx = old_ngx
|
|
_G.kong = old_kong
|
|
end)
|
|
|
|
it("has no effect when log level is lower than the configured value", function()
|
|
maybe_push(1, nil, ngx.DEBUG, "Don't mind me, I'm just a debug log")
|
|
local worker_logs = get_worker_logs()
|
|
assert.same({}, worker_logs)
|
|
local request_logs = get_request_logs()
|
|
assert.same({}, request_logs)
|
|
end)
|
|
|
|
it("considers log message as optional", function()
|
|
local log_level = ngx.INFO
|
|
|
|
maybe_push(1, nil, log_level)
|
|
local worker_logs = get_worker_logs()
|
|
assert.equals(1, #worker_logs)
|
|
|
|
local logged_entry = worker_logs[1]
|
|
assert.same(log_level, logged_entry.log_level)
|
|
assert.equals("", logged_entry.body)
|
|
assert.is_table(logged_entry.attributes)
|
|
assert.is_number(logged_entry.observed_time_unix_nano)
|
|
assert.is_number(logged_entry.time_unix_nano)
|
|
assert.is_number(logged_entry.attributes["introspection.current.line"])
|
|
assert.is_string(logged_entry.attributes["introspection.name"])
|
|
assert.is_string(logged_entry.attributes["introspection.namewhat"])
|
|
assert.is_string(logged_entry.attributes["introspection.source"])
|
|
assert.is_string(logged_entry.attributes["introspection.what"])
|
|
end)
|
|
|
|
it("generates worker-scoped log entries", function()
|
|
local log_level = ngx.WARN
|
|
local body = "Careful! I'm a warning!"
|
|
|
|
maybe_push(1, { foo = "bar", tst = "baz" }, log_level, body, true, 123, ngx.null, nil, function()end, { foo = "bar" })
|
|
local worker_logs = get_worker_logs()
|
|
assert.equals(1, #worker_logs)
|
|
|
|
local logged_entry = worker_logs[1]
|
|
assert.same(log_level, logged_entry.log_level)
|
|
assert.matches(body .. "true123nilnilfunction:%s0x%x+table:%s0x%x+", logged_entry.body)
|
|
assert.is_table(logged_entry.attributes)
|
|
assert.is_number(logged_entry.attributes["introspection.current.line"])
|
|
assert.is_string(logged_entry.attributes["introspection.name"])
|
|
assert.is_string(logged_entry.attributes["introspection.namewhat"])
|
|
assert.is_string(logged_entry.attributes["introspection.source"])
|
|
assert.is_string(logged_entry.attributes["introspection.what"])
|
|
assert.equals("bar", logged_entry.attributes.foo)
|
|
assert.equals("baz", logged_entry.attributes.tst)
|
|
assert.is_number(logged_entry.observed_time_unix_nano)
|
|
assert.is_number(logged_entry.time_unix_nano)
|
|
end)
|
|
end)
|
|
end)
|