161 lines
7.5 KiB
Lua
161 lines
7.5 KiB
Lua
local helpers = require "spec.helpers"
|
|
|
|
for _, strategy in helpers.each_strategy() do
|
|
describe("manages a pluginserver #" .. strategy, function()
|
|
lazy_setup(function()
|
|
assert(helpers.get_db_utils(strategy, {
|
|
"services",
|
|
"routes",
|
|
"plugins",
|
|
}))
|
|
end)
|
|
|
|
describe("process management", function()
|
|
it("starts/stops an external plugin server [golang]", function()
|
|
local kong_prefix = helpers.test_conf.prefix
|
|
|
|
assert(helpers.start_kong({
|
|
nginx_conf = "spec/fixtures/custom_nginx.template",
|
|
log_level = "notice",
|
|
database = strategy,
|
|
plugins = "bundled,go-hello",
|
|
pluginserver_names = "test",
|
|
pluginserver_test_socket = kong_prefix .. "/go-hello.socket",
|
|
pluginserver_test_query_cmd = helpers.external_plugins_path .. "/go/go-hello -dump",
|
|
pluginserver_test_start_cmd = helpers.external_plugins_path .. "/go/go-hello -kong-prefix " .. kong_prefix,
|
|
}))
|
|
assert.logfile().has.line([[started, pid [0-9]+]])
|
|
assert(helpers.stop_kong(nil, true))
|
|
assert.logfile().has.line([[successfully stopped pluginserver 'test', pid [0-9]+]])
|
|
end)
|
|
|
|
it("starts/stops an external plugin server [python]", function()
|
|
local kong_prefix = helpers.test_conf.prefix
|
|
|
|
assert(helpers.start_kong({
|
|
nginx_conf = "spec/fixtures/custom_nginx.template",
|
|
log_level = "notice",
|
|
database = strategy,
|
|
plugins = "bundled,py-hello",
|
|
pluginserver_names = "test",
|
|
pluginserver_test_socket = kong_prefix .. "/py-hello.socket",
|
|
pluginserver_test_query_cmd = helpers.external_plugins_path .. "/py/py-hello.py --dump",
|
|
pluginserver_test_start_cmd = helpers.external_plugins_path .. "/py/py-hello.py --socket-name py-hello.socket --kong-prefix " .. kong_prefix,
|
|
}))
|
|
assert.logfile().has.line([[started, pid [0-9]+]])
|
|
assert(helpers.stop_kong(nil, true))
|
|
assert.logfile().has.line([[successfully stopped pluginserver 'test', pid [0-9]+]])
|
|
end)
|
|
|
|
it("starts/stops an external plugin server [golang, python]", function()
|
|
local kong_prefix = helpers.test_conf.prefix
|
|
|
|
assert(helpers.start_kong({
|
|
nginx_conf = "spec/fixtures/custom_nginx.template",
|
|
log_level = "notice",
|
|
database = strategy,
|
|
plugins = "bundled,go-hello,py-hello",
|
|
pluginserver_names = "test-go,test-py",
|
|
pluginserver_test_go_socket = kong_prefix .. "/go-hello.socket",
|
|
pluginserver_test_go_query_cmd = helpers.external_plugins_path .. "/go/go-hello -dump",
|
|
pluginserver_test_go_start_cmd = helpers.external_plugins_path .. "/go/go-hello -kong-prefix " .. kong_prefix,
|
|
pluginserver_test_py_socket = kong_prefix .. "/py-hello.socket",
|
|
pluginserver_test_py_query_cmd = helpers.external_plugins_path .. "/py/py-hello.py --dump",
|
|
pluginserver_test_py_start_cmd = helpers.external_plugins_path .. "/py/py-hello.py --socket-name py-hello.socket --kong-prefix " .. kong_prefix,
|
|
}))
|
|
assert.logfile().has.line([[started, pid [0-9]+]])
|
|
assert(helpers.stop_kong(nil, true))
|
|
assert.logfile().has.line([[successfully stopped pluginserver 'test-go', pid [0-9]+]])
|
|
assert.logfile().has.line([[successfully stopped pluginserver 'test-py', pid [0-9]+]])
|
|
end)
|
|
end)
|
|
|
|
it("queries plugin info [golang]", function()
|
|
local proc_management = require "kong.runloop.plugin_servers.process"
|
|
local kong_prefix = helpers.test_conf.prefix
|
|
local conf_loader = require "kong.conf_loader"
|
|
|
|
local conf, err = conf_loader(nil, {
|
|
plugins = "bundled,go-hello",
|
|
pluginserver_names = "test",
|
|
pluginserver_test_socket = kong_prefix .. "/go-hello.socket",
|
|
pluginserver_test_query_cmd = helpers.external_plugins_path .. "/go/go-hello -dump",
|
|
pluginserver_test_start_cmd = helpers.external_plugins_path .. "/go/go-hello -kong-prefix " .. kong_prefix,
|
|
})
|
|
assert.is_nil(err)
|
|
|
|
helpers.build_go_plugins(helpers.external_plugins_path .. "/go")
|
|
local plugin_infos = proc_management.load_external_plugins_info(conf)
|
|
assert.not_nil(plugin_infos["go-hello"])
|
|
|
|
local info = plugin_infos["go-hello"]
|
|
assert.equal(1, info.PRIORITY)
|
|
assert.equal("0.1", info.VERSION)
|
|
assert.equal("go-hello", info.name)
|
|
assert.same({ "access", "response", "log" }, info.phases)
|
|
assert.same("ProtoBuf:1", info.server_def.protocol)
|
|
end)
|
|
|
|
it("queries plugin info [python]", function()
|
|
local proc_management = require "kong.runloop.plugin_servers.process"
|
|
local kong_prefix = helpers.test_conf.prefix
|
|
local conf_loader = require "kong.conf_loader"
|
|
|
|
local conf, err = conf_loader(nil, {
|
|
plugins = "bundled,py-hello",
|
|
pluginserver_names = "test",
|
|
pluginserver_test_socket = kong_prefix .. "/py-hello.socket",
|
|
pluginserver_test_query_cmd = helpers.external_plugins_path .. "/py/py-hello.py --dump",
|
|
pluginserver_test_start_cmd = helpers.external_plugins_path .. "/py/py-hello.py --socket-name py-hello.socket --kong-prefix " .. kong_prefix,
|
|
})
|
|
assert.is_nil(err)
|
|
|
|
local plugin_infos = proc_management.load_external_plugins_info(conf)
|
|
assert.not_nil(plugin_infos["py-hello"])
|
|
|
|
local info = plugin_infos["py-hello"]
|
|
assert.equal(100, info.PRIORITY)
|
|
assert.equal("0.1.0", info.VERSION)
|
|
assert.equal("py-hello", info.name)
|
|
assert.same({ "access" }, info.phases)
|
|
assert.same("MsgPack:1", info.server_def.protocol)
|
|
end)
|
|
|
|
it("queries plugin info [golang, python]", function()
|
|
local proc_management = require "kong.runloop.plugin_servers.process"
|
|
local kong_prefix = helpers.test_conf.prefix
|
|
local conf_loader = require "kong.conf_loader"
|
|
|
|
local conf, err = conf_loader(nil, {
|
|
plugins = "bundled,py-hello",
|
|
pluginserver_names = "test-go,test-py",
|
|
pluginserver_test_go_socket = kong_prefix .. "/go-hello.socket",
|
|
pluginserver_test_go_query_cmd = helpers.external_plugins_path .. "/go/go-hello -dump",
|
|
pluginserver_test_go_start_cmd = helpers.external_plugins_path .. "/go/go-hello -kong-prefix " .. kong_prefix,
|
|
pluginserver_test_py_socket = kong_prefix .. "/py-hello.socket",
|
|
pluginserver_test_py_query_cmd = helpers.external_plugins_path .. "/py/py-hello.py --dump",
|
|
pluginserver_test_py_start_cmd = helpers.external_plugins_path .. "/py/py-hello.py --socket-name py-hello.socket --kong-prefix " .. kong_prefix,
|
|
})
|
|
assert.is_nil(err)
|
|
|
|
local plugin_infos = proc_management.load_external_plugins_info(conf)
|
|
assert.not_nil(plugin_infos["go-hello"])
|
|
assert.not_nil(plugin_infos["py-hello"])
|
|
|
|
local go_info = plugin_infos["go-hello"]
|
|
assert.equal(1, go_info.PRIORITY)
|
|
assert.equal("0.1", go_info.VERSION)
|
|
assert.equal("go-hello", go_info.name)
|
|
assert.same({ "access", "response", "log" }, go_info.phases)
|
|
assert.same("ProtoBuf:1", go_info.server_def.protocol)
|
|
|
|
local py_info = plugin_infos["py-hello"]
|
|
assert.equal(100, py_info.PRIORITY)
|
|
assert.equal("0.1.0", py_info.VERSION)
|
|
assert.equal("py-hello", py_info.name)
|
|
assert.same({ "access" }, py_info.phases)
|
|
assert.same("MsgPack:1", py_info.server_def.protocol)
|
|
end)
|
|
end)
|
|
end
|