Class luatest.server
Class to manage Tarantool instances.
Build a listen URI based on the given server alias and extra path.
The resulting URI: <Server.vardir>/[<extra_path>/]<server_alias>.sock
.
Provide a unique alias or extra path to avoid collisions with other sockets.
For now, only UNIX sockets are supported.
Parameters:
- server_alias: (string) Server alias.
- extra_path: (string) Extra path relative to the
Server.vardir
directory. (optional)
Returns:
string
Assert that the server follows the source node with the given ID. Meaning that it replicates from the remote node normally, and has already joined and subscribed.
Parameters:
- server_id: (number) Server ID.
Call remote function on the server by name.
This is a shortcut for server.net_box:call()
.
Parameters:
- fn_name: (string)
- args: (tab) (optional)
- options: (tab) (optional)
Copy contents of the data directory into the server’s working directory. Invoked on the server’s start.
Stop the server and save its artifacts if the test fails.
This function should be used only at the end of the test (after_test
,
after_each
, after_all
hooks) to terminate the server process.
Besides process termination, it saves the contents of the server
working directory to the <vardir>/artifacts
directory for further
analysis if the test fails.
Evaluate Lua code on the server.
This is a shortcut for server.net_box:eval()
.
Parameters:
- code: (string)
- args: (tab) (optional)
- options: (tab) (optional)
Run given function on the server.
Much like Server:eval
, but takes a function instead of a string.
The executed function must have no upvalues (closures). Though it
may use global functions and modules (like box
, os
, etc.)
Parameters:
- fn: (function)
- args: (tab) (optional)
- options: (tab) (optional)
local vclock = server:exec(function()
return box.info.vclock
end)
local sum = server:exec(function(a, b)
return a + b
end, {1, 2})
-- sum == 3
local t = require('luatest')
server:exec(function()
-- luatest is available via `t` upvalue
t.assert_equals(math.pi, 3)
end)
-- mytest.lua:12: expected: 3, actual: 3.1415926535898
A simple wrapper around the Server:exec()
method
to get the box.cfg
value from the server.
Returns:
table
Get vclock acknowledged by another node to the current server.
Parameters:
- server_id: (number) Server ID.
Returns:
table
Search a string pattern in the server’s log file.
If the server has crashed, opts.filename
is required.
Parameters:
- pattern: (string) String pattern to search in the server’s log file.
- bytes_num: (number) Number of bytes to read from the server’s log file. (optional)
- opts:
- reset: (bool) Reset the result when
Tarantool %d+.%d+.%d+-.*%d+-g.*
pattern is found, which means that the server was restarted.Defaults totrue
. (optional) - filename: (string) Path to the server’s log file.Defaults to
box.cfg.log
. (optional)
- reset: (bool) Reset the result when
Returns:
string|nil
Perform HTTP request.
Parameters:
- method: (string)
- path: (string)
- options:
- body: (string) request body (optional)
- json: data to encode as JSON into request body (optional)
- http: (tab) other options for HTTP-client (optional)
- raise: (bool) raise error when status is not in 200..299. Default to true. (optional)
Returns:
response object from HTTP client with helper methods.
Raises:
HTTPRequest error when response status is not 200.
See also:
- luatest.http_response
Make directory for the server’s Unix socket. Invoked on the server’s start.
Build a server object.
Parameters:
- object: Table with the entries listed below. (optional)
- command: (string) Executable path to run a server process with.Defaults to the internal
server_instance.lua
script. If a custom pathis provided, it should correctly process all env variables listed belowto make constructor parameters work. (optional) - args: (tab) Arbitrary args to run
object.command
with. (optional) - env: (tab) Pass the given env variables into the server process. (optional)
- chdir: (string) Change to the given directory before runningthe server process. (optional)
- alias: (string) Alias for the new server and the value of the.. code-block:: lua
TARANTOOL_ALIAS
env variable which is passed into the server process.Defaults to „server“. (optional) - workdir: (string) Working directory for the new server and thevalue of the
TARANTOOL_WORKDIR
env variable which is passed into theserver process. The directory path will be created on the server start.Defaults to<vardir>/<alias>-<random id>
. (optional) - datadir: (string) Directory path whose contents will be recursivelycopied into
object.workdir
on the server start. (optional) - http_port: (number) Port for HTTP connection to the new server andthe value of the
TARANTOOL_HTTP_PORT
env variable which is passed intothe server process.Not supported in the defaultserver_instance.lua
script. (optional) - net_box_port: (number) Port for the
net.box
connection to the newserver and the value of theTARANTOOL_LISTEN
env variable which is passedinto the server process. (optional) - net_box_uri: (string) URI for the
net.box
connection to the newserver and the value of theTARANTOOL_LISTEN
env variable which is passedinto the server process. If it is a Unix socket, the corresponding socketdirectory path will be created on the server start. (optional) - net_box_credentials: (tab) Override the default credentials for the.. code-block:: lua
net.box
connection to the new server. (optional) - box_cfg: (tab) Extra options for
box.cfg()
and the value of the.. code-block:: luaTARANTOOL_BOX_CFG
env variable which is passed into the server process. (optional) - config_file: (string) Declarative YAML configuration for a serverinstance. Used to deduce advertise URI to connect net.box to the instance.The special value „“ means running without
--config <...>
CLI option(but still passes--name <alias>
). (optional) - remote_config: (tab) If
config_file
is not passed, this configvalue is used to deduce advertise URI to connect net.box to the instance. (optional)
- command: (string) Executable path to run a server process with.Defaults to the internal
- extra: (tab) Table with extra properties for the server object. (optional)
Returns:
table
Play WAL until the synchro queue becomes busy.
WAL records go one by one. The function is needed, because during
box.ctl.promote()
it is not known for sure which WAL record is PROMOTE -
first, second, third? Even if known, it might change in the future. WAL delay
should already be started before the function is called.
Restart the server with the given parameters. Optionally waits until the server is ready.
Parameters:
- params: (tab) Parameters to restart the server with.Like
command
,args
,env
, etc. (optional) - opts:
- wait_until_ready: (bool) Wait until the server is ready.Defaults to
true
unless a custom executable path was provided whilebuilding the server object. (optional)
- wait_until_ready: (bool) Wait until the server is ready.Defaults to
See also:
- luatest.server.Server:new
Start a server. Optionally waits until the server is ready.
Parameters:
- opts:
- wait_until_ready: (bool) Wait until the server is ready.Defaults to
true
unless a custom executable was provided while buildingthe server object. (optional)
- wait_until_ready: (bool) Wait until the server is ready.Defaults to
A simple wrapper around the Server:exec()
method
to update the box.cfg
value on the server.
Parameters:
- cfg: (tab) Box configuration settings.
Wait for the given server to reach at least the same vclock as the local server. Not including the local component, of course.
Parameters:
- server: (tab) Server’s object.
Wait for the server to enter the given election state. Note that if it becomes a leader, it does not mean it is already writable.
Parameters:
- state: (string) Election state to wait for.
Wait for the server to reach at least the given election term.
Parameters:
- term: (string) Election term to wait for.
Wait for the server to reach at least the given synchro term.
Parameters:
- term: (number) Synchro queue term to wait for.
Wait until the server’s own vclock reaches at least the given value. Including the local component.
Parameters:
- vclock: (tab) Server’s own vclock to reach.
Wait for the server to reach at least the same vclock as the other server. Not including the local component, of course.
Parameters:
- other_server: (tab) Other server’s object.