in kong/spec/helpers.lua [1079:1147]
function(port, opts)
local socket = require "socket"
local server = assert(socket.tcp())
server:settimeout(opts.timeout or 60)
assert(server:setoption("reuseaddr", true))
assert(server:bind("*", port))
assert(server:listen())
local line
local oks, fails = 0, 0
local handshake_done = false
local n = opts.requests or 1
for _ = 1, n + 1 do
local client, err
if opts.timeout then
client, err = server:accept()
if err == "timeout" then
line = "timeout"
break
else
assert(client, err)
end
else
client = assert(server:accept())
end
if opts.tls and handshake_done then
local ssl = require "spec.helpers.ssl"
local params = {
mode = "server",
protocol = "any",
key = "spec/fixtures/kong_spec.key",
certificate = "spec/fixtures/kong_spec.crt",
}
client = ssl.wrap(client, params)
client:dohandshake()
end
line, err = client:receive()
if err == "closed" then
fails = fails + 1
else
if not handshake_done then
assert(line == "\\START")
client:send("\\OK\n")
handshake_done = true
else
if line == "@DIE@" then
client:send(string.format("%d:%d\n", oks, fails))
client:close()
break
end
oks = oks + 1
client:send((opts.prefix or "") .. line .. "\n")
end
client:close()
end
end
server:close()
return line
end