File tree Expand file tree Collapse file tree 3 files changed +51
-11
lines changed Expand file tree Collapse file tree 3 files changed +51
-11
lines changed Original file line number Diff line number Diff line change 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 })
7
12
8
13
if rawget (box , ' space' ) == nil then
9
14
local orig_cfg = box .cfg
10
15
box .cfg = function (...)
11
16
local result = { orig_cfg (... ) }
12
17
13
18
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 )
16
29
end
17
30
setmetatable (queue , getmetatable (abstract ))
18
31
queue .start ()
Original file line number Diff line number Diff line change
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 :
Original file line number Diff line number Diff line change @@ -6,13 +6,13 @@ test:plan(5)
6
6
7
7
local queue = require (' queue' )
8
8
9
+ local engine = os.getenv (' ENGINE' ) or ' memtx'
10
+
9
11
local tnt = require (' t.tnt' )
10
12
tnt .cfg {
11
- wal_mode = ' none'
13
+ wal_mode = ( engine == ' memtx ' and ' none' or nil )
12
14
}
13
15
14
- local engine = os.getenv (' ENGINE' ) or ' memtx'
15
-
16
16
local ttl = 0.1
17
17
18
18
test :ok (queue , ' queue is loaded' )
You can’t perform that action at this time.
0 commit comments