kong--kong
76 行
2.4 KiB
Raku
76 行
2.4 KiB
Raku
use Test::Nginx::Socket;
|
|
|
|
plan tests => repeat_each() * (blocks() * 5);
|
|
|
|
workers(1);
|
|
|
|
no_shuffle();
|
|
run_tests();
|
|
|
|
__DATA__
|
|
|
|
=== TEST 1: stale result triggers async timer
|
|
--- config
|
|
location = /t {
|
|
access_by_lua_block {
|
|
-- init
|
|
local client = require("kong.resty.dns.client")
|
|
assert(client.init({
|
|
nameservers = { "127.0.0.53" },
|
|
hosts = {}, -- empty tables to parse to prevent defaulting to /etc/hosts
|
|
resolvConf = {}, -- and resolv.conf files
|
|
order = { "A" },
|
|
validTtl = 1,
|
|
}))
|
|
|
|
local host = "konghq.com"
|
|
local typ = client.TYPE_A
|
|
|
|
-- first time
|
|
|
|
local answers, err, try_list = client.resolve(host, { qtype = typ })
|
|
if not answers then
|
|
ngx.say("failed to resolve: ", err)
|
|
return
|
|
end
|
|
ngx.say("first address name: ", answers[1].name)
|
|
ngx.say("first try_list: ", tostring(try_list))
|
|
|
|
-- sleep to wait for dns record to become stale
|
|
ngx.sleep(1.5)
|
|
|
|
-- second time: use stale result and trigger async timer
|
|
|
|
answers, err, try_list = client.resolve(host, { qtype = typ })
|
|
if not answers then
|
|
ngx.say("failed to resolve: ", err)
|
|
return
|
|
end
|
|
ngx.say("second address name: ", answers[1].name)
|
|
ngx.say("second try_list: ", tostring(try_list))
|
|
|
|
-- third time: use stale result and find triggered async timer
|
|
|
|
answers, err, try_list = client.resolve(host, { qtype = typ })
|
|
if not answers then
|
|
ngx.say("failed to resolve: ", err)
|
|
return
|
|
end
|
|
ngx.say("third address name: ", answers[1].name)
|
|
ngx.say("third try_list: ", tostring(try_list))
|
|
}
|
|
}
|
|
--- request
|
|
GET /t
|
|
--- response_body
|
|
first address name: konghq.com
|
|
first try_list: ["(short)konghq.com:1 - cache-miss","konghq.com:1 - cache-miss/querying"]
|
|
second address name: konghq.com
|
|
second try_list: ["(short)konghq.com:1 - cache-hit/stale","konghq.com:1 - cache-hit/stale/scheduled"]
|
|
third address name: konghq.com
|
|
third try_list: ["(short)konghq.com:1 - cache-hit/stale","konghq.com:1 - cache-hit/stale/in progress (async)"]
|
|
--- no_error_log
|
|
[error]
|
|
dns lookup pool exceeded retries
|
|
API disabled in the context of init_worker_by_lua
|