Skip to content

Commit 0ab1f7e

Browse files
committed
Fixing register driver and wrote test for it
+ fix ttl test for vinyl
1 parent a3716c2 commit 0ab1f7e

File tree

3 files changed

+51
-11
lines changed

3 files changed

+51
-11
lines changed

queue/init.lua

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,31 @@
1-
local function index_unconfigured()
2-
error("Please run box.cfg{} first")
3-
end
4-
5-
local queue = {}
6-
setmetatable(queue, { __index = index_unconfigured })
1+
local queue = nil
2+
queue = setmetatable({
3+
driver = {},
4+
register_driver = function(driver_name, tube_ctr)
5+
if type(tube_ctr.create_space) ~= 'function' or
6+
type(tube_ctr.new) ~= 'function' then
7+
error('tube control methods must contain functions "create_space" and "new"')
8+
end
9+
queue.driver[driver_name] = tube_ctr
10+
end,
11+
}, { __index = function() print(debug.traceback()) error("Please run box.cfg{} first") end })
712

813
if rawget(box, 'space') == nil then
914
local orig_cfg = box.cfg
1015
box.cfg = function(...)
1116
local result = { orig_cfg(...) }
1217

1318
local abstract = require 'queue.abstract'
14-
for k, v in pairs(abstract) do
15-
rawset(queue, k, v)
19+
for name, val in pairs(abstract) do
20+
if name == 'driver' then
21+
for driver_name, driver in pairs(queue.driver) do
22+
if abstract.driver[driver_name] then
23+
error(('overriding default driver "%s"'):format(driver_name))
24+
end
25+
abstract.driver[driver_name] = driver
26+
end
27+
end
28+
rawset(queue, name, val)
1629
end
1730
setmetatable(queue, getmetatable(abstract))
1831
queue.start()

t/001-tube-init.t

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/usr/bin/env tarantool
2+
local yaml = require('yaml')
3+
local fiber = require('fiber')
4+
5+
local tnt = require('t.tnt')
6+
7+
local test = require('tap').test()
8+
test:plan(1)
9+
10+
local engine = os.getenv('ENGINE') or 'memtx'
11+
12+
local mock_tube = { create_space = function() end, new = function() end }
13+
14+
test:test('test queue mock addition', function(test)
15+
test:plan(2)
16+
17+
local queue = require('queue')
18+
queue.register_driver('mock', mock_tube)
19+
test:is(queue.driver.mock, mock_tube)
20+
tnt.cfg{}
21+
22+
test:is(queue.driver.mock, mock_tube)
23+
end)
24+
25+
tnt.finish()
26+
os.exit(test:check() == true and 0 or -1)
27+
-- vim: set ft=lua :

t/050-ttl.t

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ test:plan(5)
66

77
local queue = require('queue')
88

9+
local engine = os.getenv('ENGINE') or 'memtx'
10+
911
local tnt = require('t.tnt')
1012
tnt.cfg{
11-
wal_mode = 'none'
13+
wal_mode = (engine == 'memtx' and 'none' or nil)
1214
}
1315

14-
local engine = os.getenv('ENGINE') or 'memtx'
15-
1616
local ttl = 0.1
1717

1818
test:ok(queue, 'queue is loaded')

0 commit comments

Comments
 (0)