Files
kong--kong/spec/02-integration/03-db/09-query-semaphore_spec.lua
2026-07-13 12:32:21 +08:00

57 lines
1.3 KiB
Lua

local helpers = require "spec.helpers"
local cjson = require "cjson"
describe("#postgres Postgres query locks", function()
local client
setup(function()
local bp = helpers.get_db_utils("postgres", {
"plugins",
}, {
"slow-query"
})
bp.plugins:insert({
name = "slow-query",
})
assert(helpers.start_kong({
database = "postgres",
nginx_conf = "spec/fixtures/custom_nginx.template",
plugins = "slow-query",
pg_max_concurrent_queries = 1,
pg_semaphore_timeout = 200,
}))
client = helpers.admin_client()
end)
teardown(function()
if client then
client:close()
end
helpers.stop_kong()
end)
it("results in query error failing to acquire resource", function()
local res = assert(client:send {
method = "GET",
path = "/slow-resource?prime=true",
headers = { ["Content-Type"] = "application/json" }
})
assert.res_status(204 , res)
-- wait for zero-delay timer
helpers.wait_timer("slow-query", true, "any-running")
res = assert(client:send {
method = "GET",
path = "/slow-resource",
headers = { ["Content-Type"] = "application/json" }
})
local body = assert.res_status(500 , res)
local json = cjson.decode(body)
assert.same({ error = "error acquiring query semaphore: timeout" }, json)
end)
end)