74 lines
1.4 KiB
Lua
74 lines
1.4 KiB
Lua
--AWS SAM Local Test Helper
|
|
local ngx_pipe = require "ngx.pipe"
|
|
local helpers = require "spec.helpers"
|
|
local utils = require "spec.helpers.perf.utils"
|
|
local fmt = string.format
|
|
|
|
local _M = {}
|
|
|
|
|
|
--- Get system architecture by uname
|
|
-- @function get_os_architecture
|
|
-- @return architecture string if success, or nil and an error message
|
|
function _M.get_os_architecture()
|
|
local ret, err = utils.execute("uname -m")
|
|
|
|
return ret, err
|
|
end
|
|
|
|
|
|
function _M.is_sam_installed()
|
|
local ret, err = utils.execute("sam --version")
|
|
if err then
|
|
return nil, fmt("SAM CLI version check failed(code: %s): %s", err, ret)
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
|
|
local sam_proc
|
|
|
|
|
|
function _M.start_local_lambda()
|
|
local port = helpers.get_available_port()
|
|
if not port then
|
|
return nil, "No available port found"
|
|
end
|
|
|
|
-- run in background
|
|
local err
|
|
sam_proc, err = ngx_pipe.spawn({"sam",
|
|
"local",
|
|
"start-lambda",
|
|
"--template-file", "spec/fixtures/sam-app/template.yaml",
|
|
"--port", port
|
|
})
|
|
if not sam_proc then
|
|
return nil, err
|
|
end
|
|
|
|
local ret, err = utils.execute("pgrep -f 'sam local'")
|
|
if err then
|
|
return nil, fmt("Start SAM CLI failed(code: %s): %s", err, ret)
|
|
end
|
|
|
|
return true, port
|
|
end
|
|
|
|
|
|
function _M.stop_local_lambda()
|
|
if sam_proc then
|
|
local ok, err = sam_proc:kill(15)
|
|
if not ok then
|
|
return nil, fmt("Stop SAM CLI failed: %s", err)
|
|
end
|
|
sam_proc = nil
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
|
|
return _M
|