Files
kong--kong/spec/fixtures/custom_plugins/kong/plugins/rpc-error-test/handler.lua
T
2026-07-13 12:32:21 +08:00

60 lines
1.5 KiB
Lua

local cjson = require("cjson")
local RpcErrorTestHandler = {
VERSION = "1.0",
PRIORITY = 1000,
}
function RpcErrorTestHandler:init_worker()
kong.rpc.callbacks:register("kong.test.exception", function(node_id)
return nil -- no error message, default jsonrpc.SERVER_ERROR
end)
kong.rpc.callbacks:register("kong.test.error", function(node_id)
return nil, "kong.test.error"
end)
local worker_events = assert(kong.worker_events)
local node_id = "control_plane"
-- if rpc is ready we will start to call
worker_events.register(function(capabilities_list)
local res, err = kong.rpc:call(node_id, "kong.test.not_exist")
assert(not res)
assert(err == "Method not found")
local res, err = kong.rpc:call(node_id, "kong.test.exception")
assert(not res)
assert(err == "Server error")
local res, err = kong.rpc:call(node_id, "kong.test.error")
assert(not res)
assert(err == "kong.test.error")
ngx.log(ngx.DEBUG, "test #1 ok")
end, "clustering:jsonrpc", "connected")
-- if rpc is ready we will start to send raw msg
worker_events.register(function(capabilities_list)
local s = next(kong.rpc.clients[node_id])
-- send an empty array
local msg = setmetatable({}, cjson.array_mt)
assert(s:push_request(msg))
-- send an invalid msg
local msg = setmetatable({"invalid_request"}, cjson.array_mt)
assert(s:push_request(msg))
ngx.log(ngx.DEBUG, "test #2 ok")
end, "clustering:jsonrpc", "connected")
end
return RpcErrorTestHandler