173 lines
4.6 KiB
Lua
173 lines
4.6 KiB
Lua
local helpers = require "spec.helpers"
|
|
local cjson = require "cjson"
|
|
|
|
for _, strategy in helpers.each_strategy() do
|
|
describe("[#traditional] Status API - DNS client route with [#" .. strategy .. "]" , function()
|
|
local client
|
|
local tcp_status_port
|
|
|
|
lazy_setup(function()
|
|
tcp_status_port = helpers.get_available_port()
|
|
|
|
local bp = helpers.get_db_utils(strategy, {
|
|
"upstreams",
|
|
"targets",
|
|
})
|
|
|
|
local upstream = bp.upstreams:insert()
|
|
bp.targets:insert({
|
|
upstream = upstream,
|
|
target = "_service._proto.srv.test",
|
|
})
|
|
|
|
assert(helpers.start_kong({
|
|
database = strategy,
|
|
status_listen = "127.0.0.1:" .. tcp_status_port,
|
|
new_dns_client = "on",
|
|
}))
|
|
|
|
client = helpers.http_client("127.0.0.1", tcp_status_port, 20000)
|
|
end)
|
|
|
|
teardown(function()
|
|
if client then
|
|
client:close()
|
|
end
|
|
helpers.stop_kong()
|
|
end)
|
|
|
|
it("/status/dns - status code 200", function ()
|
|
local res = assert(client:send {
|
|
method = "GET",
|
|
path = "/status/dns",
|
|
headers = { ["Content-Type"] = "application/json" }
|
|
})
|
|
|
|
local body = assert.res_status(200 , res)
|
|
local json = cjson.decode(body)
|
|
|
|
assert(type(json.worker.id) == "number")
|
|
assert(type(json.worker.count) == "number")
|
|
|
|
assert(type(json.stats) == "table")
|
|
assert(type(json.stats["127.0.0.1|A/AAAA"].runs) == "number")
|
|
|
|
-- Wait for the upstream target to be updated in the background
|
|
helpers.wait_until(function ()
|
|
local res = assert(client:send {
|
|
method = "GET",
|
|
path = "/status/dns",
|
|
headers = { ["Content-Type"] = "application/json" }
|
|
})
|
|
|
|
local body = assert.res_status(200 , res)
|
|
local json = cjson.decode(body)
|
|
return type(json.stats["_service._proto.srv.test|SRV"]) == "table"
|
|
end, 5)
|
|
end)
|
|
end)
|
|
|
|
describe("[#traditional] Status API - DNS client route with [#" .. strategy .. "]" , function()
|
|
local client
|
|
|
|
local tcp_status_port
|
|
|
|
lazy_setup(function()
|
|
tcp_status_port = helpers.get_available_port()
|
|
|
|
helpers.get_db_utils(strategy)
|
|
|
|
assert(helpers.start_kong({
|
|
database = strategy,
|
|
status_listen = "127.0.0.1:" .. tcp_status_port,
|
|
new_dns_client = "off",
|
|
}))
|
|
|
|
client = helpers.http_client("127.0.0.1", tcp_status_port, 20000)
|
|
end)
|
|
|
|
teardown(function()
|
|
if client then
|
|
client:close()
|
|
end
|
|
helpers.stop_kong()
|
|
end)
|
|
|
|
it("/status/dns - status code 501", function ()
|
|
local res = assert(client:send {
|
|
method = "GET",
|
|
path = "/status/dns",
|
|
headers = { ["Content-Type"] = "application/json" }
|
|
})
|
|
|
|
local body = assert.res_status(501, res)
|
|
local json = cjson.decode(body)
|
|
assert.same("not implemented with the legacy DNS client", json.message)
|
|
end)
|
|
end)
|
|
end
|
|
|
|
|
|
-- hybrid mode
|
|
|
|
for _, strategy in helpers.each_strategy() do
|
|
|
|
describe("[#hybrid] Status API - DNS client route with [#" .. strategy .. "]" , function()
|
|
local client
|
|
|
|
local tcp_status_port
|
|
|
|
lazy_setup(function()
|
|
tcp_status_port = helpers.get_available_port()
|
|
|
|
helpers.get_db_utils(strategy) -- runs migrations
|
|
|
|
assert(helpers.start_kong({
|
|
role = "control_plane",
|
|
cluster_cert = "spec/fixtures/kong_clustering.crt",
|
|
cluster_cert_key = "spec/fixtures/kong_clustering.key",
|
|
database = strategy,
|
|
cluster_listen = "127.0.0.1:9005",
|
|
nginx_conf = "spec/fixtures/custom_nginx.template",
|
|
new_dns_client = "on",
|
|
}))
|
|
|
|
assert(helpers.start_kong({
|
|
role = "data_plane",
|
|
database = "off",
|
|
prefix = "servroot2",
|
|
cluster_cert = "spec/fixtures/kong_clustering.crt",
|
|
cluster_cert_key = "spec/fixtures/kong_clustering.key",
|
|
cluster_control_plane = "127.0.0.1:9005",
|
|
proxy_listen = "0.0.0.0:9002",
|
|
nginx_conf = "spec/fixtures/custom_nginx.template",
|
|
status_listen = "127.0.0.1:" .. tcp_status_port,
|
|
new_dns_client = "on",
|
|
}))
|
|
|
|
client = helpers.http_client("127.0.0.1", tcp_status_port, 20000)
|
|
end)
|
|
|
|
teardown(function()
|
|
if client then
|
|
client:close()
|
|
end
|
|
helpers.stop_kong("servroot2")
|
|
helpers.stop_kong()
|
|
end)
|
|
|
|
it("/status/dns - status code 200", function ()
|
|
local res = assert(client:send {
|
|
method = "GET",
|
|
path = "/status/dns",
|
|
headers = { ["Content-Type"] = "application/json" }
|
|
})
|
|
|
|
local body = assert.res_status(200 , res)
|
|
local json = assert(cjson.decode(body))
|
|
assert(type(json.stats) == "table")
|
|
end)
|
|
|
|
end)
|
|
end
|