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 })
712
813if 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 ()
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)
66
77local queue = require (' queue' )
88
9+ local engine = os.getenv (' ENGINE' ) or ' memtx'
10+
911local tnt = require (' t.tnt' )
1012tnt .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-
1616local ttl = 0.1
1717
1818test :ok (queue , ' queue is loaded' )
You can’t perform that action at this time.
0 commit comments