Files
2026-07-13 12:32:21 +08:00

70 lines
1.8 KiB
Lua

local helpers = require "spec.helpers"
describe("signals", function()
lazy_setup(function()
helpers.get_db_utils(nil, {}) -- runs migrations
helpers.prepare_prefix()
end)
after_each(function()
helpers.stop_kong()
end)
it("can receive USR1", function()
assert(helpers.start_kong())
helpers.signal(nil, "-USR1")
assert
.eventually(function ()
local conf = helpers.get_running_conf()
local _, code = helpers.execute("grep -F '(SIGUSR1) received from' " ..
conf.nginx_err_logs, true)
assert.equal(0, code)
end)
.with_timeout(15)
.has_no_error()
end)
it("can receive USR2", function()
assert(helpers.start_kong())
local conf = helpers.get_running_conf()
local oldpid_f = conf.nginx_pid .. ".oldbin"
finally(function()
ngx.sleep(0.5)
helpers.signal(nil, "-TERM")
helpers.signal(nil, "-TERM", oldpid_f)
end)
helpers.signal(nil, "-USR2")
helpers.pwait_until(function()
-- USR2 received
assert.logfile().has.line('(SIGUSR2) received from', true)
-- USR2 succeeded
assert.logfile().has.no.line('execve() failed', true)
assert.logfile().has.line('start new binary process', true)
-- new master started successfully
assert.logfile().has.no.line('exited with code 1', true)
-- 2 master processes
assert.is_true(helpers.path.isfile(oldpid_f))
end)
-- quit old master
helpers.signal(nil, "-QUIT", oldpid_f)
helpers.wait_pid(oldpid_f)
assert.is_false(helpers.path.isfile(oldpid_f))
helpers.pwait_until(function ()
assert.is_true(helpers.path.isfile(conf.nginx_pid))
-- new master running
assert.equal(0, helpers.signal(nil, "-0"))
end)
end)
end)