File: gh-4231-box-execute-idempotence.test.lua

package info (click to toggle)
tarantool 2.6.0-1.4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 85,412 kB
  • sloc: ansic: 513,775; cpp: 69,493; sh: 25,650; python: 19,190; perl: 14,973; makefile: 4,178; yacc: 1,329; sql: 1,074; pascal: 620; ruby: 190; awk: 18; lisp: 7
file content (37 lines) | stat: -rwxr-xr-x 1,252 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env tarantool

--
-- gh-4231: box.execute should be an idempotent function meaning
-- its effect should be the same if the user chooses to save it
-- before explicit box.cfg{} invocation and use the saved version
-- afterwards.
--

local tap = require('tap')
local test = tap.test('gh-4231-box-execute-idempotence')
test:plan(3)

local box_load_and_execute = box.execute

-- box is not initialized after invalid box.cfg() call and
-- box.execute() should initialize it first.
pcall(box.cfg, {listen = 'invalid'})
local ok, res = pcall(box.execute, 'SELECT 1')
test:ok(ok, 'verify box.execute() after invalid box.cfg() call', {err = res})

-- Make test cases independent: if the box.execute() call above
-- fails, initialize box explicitly for the next test cases.
box.cfg{}

-- This call should be successful and should skip box
-- (re)initialization.
local ok, res = pcall(box_load_and_execute, 'SELECT 1')
test:ok(ok, 'verify box_load_and_execute after successful box.cfg() call',
        {err = res})

-- Just in case: verify usual box.execute() after
-- box_load_and_execute().
local ok, res = pcall(box.execute, 'SELECT 1')
test:ok(ok, 'verify box.execute() after box_load_and_execute()', {err = res})

os.exit(test:check() and 0 or 1)