60 lines
1.5 KiB
Lua
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
|