Skip to content

Commit 78525c6

Browse files
committed
refactoring: update definition of "register_driver" method
Before the commit the "register_driver" method was defined in two places: abstract.lua and init.lua. This is not good. So, now it has been fixed.
1 parent 88a33c9 commit 78525c6

File tree

3 files changed

+55
-15
lines changed

3 files changed

+55
-15
lines changed

queue/abstract.lua

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -669,12 +669,4 @@ setmetatable(queue.stat, {
669669
}
670670
)
671671

672-
queue.register_driver = function(driver_name, tube_ctr)
673-
if type(tube_ctr.create_space) ~= 'function' or
674-
type(tube_ctr.new) ~= 'function' then
675-
error('tube control methods must contain functions "create_space" and "new"')
676-
end
677-
queue.driver[driver_name] = tube_ctr
678-
end
679-
680672
return setmetatable(queue, { __index = method })

queue/init.lua

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
local queue = nil
2+
3+
local function register_driver(driver_name, tube_ctr)
4+
if type(tube_ctr.create_space) ~= 'function' or
5+
type(tube_ctr.new) ~= 'function' then
6+
error('tube control methods must contain functions "create_space"'
7+
.. ' and "new"')
8+
end
9+
queue.driver[driver_name] = tube_ctr
10+
end
11+
212
queue = setmetatable({
313
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,
14+
register_driver = register_driver,
1115
}, { __index = function() print(debug.traceback()) error("Please run box.cfg{} first") end })
1216

1317
if rawget(box, 'space') == nil then
@@ -34,6 +38,7 @@ if rawget(box, 'space') == nil then
3438
end
3539
else
3640
queue = require 'queue.abstract'
41+
queue.register_driver = register_driver
3742
queue.start()
3843
end
3944

t/140-register-driver-after-cfg.t

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/usr/bin/env tarantool
2+
local tap = require('tap')
3+
local tnt = require('t.tnt')
4+
5+
local test = tap.test('test driver register')
6+
test:plan(2)
7+
8+
local mock_tube = {
9+
create_space = function() end,
10+
new = function() end
11+
}
12+
13+
-- As opposed to 001-tube-init.t, queue initialization
14+
-- and driver registration are done after cfg().
15+
local function check_driver_register()
16+
tnt.cfg()
17+
local queue = require('queue')
18+
queue.register_driver('mock', mock_tube)
19+
test:is(queue.driver.mock, mock_tube, 'driver has been registered')
20+
21+
local standart_drivers = {
22+
'fifo',
23+
'fifottl',
24+
'limfifottl',
25+
'utube',
26+
'utubettl'
27+
}
28+
local check_standart_drivers = true
29+
30+
for _, v in pairs(standart_drivers) do
31+
if queue.driver[v] == nil then
32+
check_standart_drivers = false
33+
break
34+
end
35+
end
36+
37+
test:ok(check_standart_drivers, 'standard drivers are defined')
38+
end
39+
40+
check_driver_register()
41+
42+
tnt.finish()
43+
os.exit(test:check() and 0 or 1)

0 commit comments

Comments
 (0)