项目文件夹

文件
2026-07-13 12:32:21 +08:00

99 行
2.6 KiB
Lua

local fmt = string.format
local rep = string.rep
local RpcSyncV2NotifyNewVersioinTestHandler = {
VERSION = "1.0",
PRIORITY = 1000,
}
function RpcSyncV2NotifyNewVersioinTestHandler:init_worker()
local counter = 0
-- mock function on cp side
kong.rpc.callbacks:register("kong.sync.v2.get_delta", function(node_id, current_versions)
local latest_version = fmt("v02_%028x", 10)
local fake_uuid = "00000000-0000-0000-0000-111111111111"
-- a basic config data
local deltas = {
{
entity = {
id = fake_uuid,
name = "default",
},
type = "workspaces",
version = latest_version,
ws_id = fake_uuid,
},
}
ngx.log(ngx.DEBUG, "kong.sync.v2.get_delta ok: ", counter)
counter = counter + 1
return { default = { deltas = deltas, full_sync = true, }, }
end)
-- test dp's sync.v2.notify_new_version on cp side
kong.rpc.callbacks:register("kong.test.notify_new_version", function(node_id)
local dp_node_id = next(kong.rpc.clients)
local method = "kong.sync.v2.notify_new_version"
-- no default
local msg = {}
local res, err = kong.rpc:call(dp_node_id, method, msg)
assert(not res)
assert(err == "default namespace does not exist inside params")
-- no default.new_version
local msg = { default = {}, }
local res, err = kong.rpc:call(dp_node_id, method, msg)
assert(not res)
assert(err == "'new_version' key does not exist")
-- less version string
-- "....." < "00000" < "v02_xx"
local msg = { default = { new_version = rep(".", 32), }, }
local res, err = kong.rpc:call(dp_node_id, method, msg)
assert(res)
assert(not err)
-- less or equal version string
-- "00000" < "v02_xx"
local msg = { default = { new_version = rep("0", 32), }, }
local res, err = kong.rpc:call(dp_node_id, method, msg)
assert(res)
assert(not err)
-- greater version string
local msg = { default = { new_version = fmt("v02_%028x", 20), }, }
local res, err = kong.rpc:call(dp_node_id, method, msg)
assert(res)
assert(not err)
ngx.log(ngx.DEBUG, "kong.test.notify_new_version ok")
return true
end)
local worker_events = assert(kong.worker_events)
-- if rpc is ready we will send test calls
worker_events.register(function(capabilities_list)
local node_id = "control_plane"
-- trigger cp's test
local res, err = kong.rpc:call(node_id, "kong.test.notify_new_version")
assert(res == true)
assert(not err)
ngx.log(ngx.DEBUG, "kong.test.notify_new_version ok")
end, "clustering:jsonrpc", "connected")
end
return RpcSyncV2NotifyNewVersioinTestHandler