Skip to content

Commit 32f0a7a

Browse files
committed
Adding function for checking existence/getting all tube names from client
queue.tube('name') checks for existence and returns true/false queue.tube() returnts all available queues closes gh-58
1 parent 0dfecdf commit 32f0a7a

File tree

3 files changed

+56
-3
lines changed

3 files changed

+56
-3
lines changed

.gitignore

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
*~
21
t/var
32
VERSION
43
# cmake
@@ -10,3 +9,10 @@ Makefile
109
# ctest
1110
Testing
1211
CTestTestfile.cmake
12+
# tarantool garbage
13+
*.snap
14+
*.xlog
15+
*.vylog
16+
# vim
17+
*~
18+
.*.swp

queue/abstract.lua

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,23 @@ local str_type = require('queue.compat').str_type
99
local session = box.session
1010

1111
local queue = {
12-
tube = {},
12+
tube = setmetatable({}, {
13+
__call = function(self, tube_name)
14+
if tube_name and type(tube_name) ~= 'string' then
15+
error('argument #1 should be string or nil')
16+
end
17+
-- return all names of tubes
18+
if tube_name == nil then
19+
local rv = {}
20+
for name, _ in pairs(self) do
21+
table.insert(rv, name)
22+
end
23+
return rv
24+
end
25+
-- return true/false if tube name is provided
26+
return not (self[tube_name] == nil)
27+
end
28+
}),
1329
stat = {}
1430
}
1531
local MAX_TIMEOUT = 365 * 86400 * 100 -- MAX_TIMEOUT == 100 years

t/090-grant-check.t

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env tarantool
22
local test = require('tap').test()
3-
test:plan(2)
3+
test:plan(3)
44

55
local test_user = 'test'
66
local test_pass = '1234'
@@ -111,6 +111,37 @@ test:test('check for call grants', function(test)
111111
tube:drop()
112112
end)
113113

114+
test:test('check tube existence', function(test)
115+
test:plan(14)
116+
local queue = require('queue')
117+
test:is(#queue.tube(), 0, 'checking for empty tube list')
118+
assert(#queue.tube() == 0)
119+
120+
local tube1 = queue.create_tube('test1', 'fifo')
121+
test:is(#queue.tube(), 1, 'checking for not empty tube list')
122+
123+
local tube2 = queue.create_tube('test2', 'fifo')
124+
test:is(#queue.tube(), 2, 'checking for not empty tube list')
125+
126+
test:is(queue.tube('test1'), true, 'checking for tube existence')
127+
test:is(queue.tube('test2'), true, 'checking for tube existence')
128+
test:is(queue.tube('test3'), false, 'checking for tube nonexistence')
129+
130+
tube2:drop()
131+
test:is(#queue.tube(), 1, 'checking for not empty tube list')
132+
133+
test:is(queue.tube('test1'), true, 'checking for tube existence')
134+
test:is(queue.tube('test2'), false, 'checking for tube nonexistence')
135+
test:is(queue.tube('test3'), false, 'checking for tube nonexistence')
136+
137+
tube1:drop()
138+
test:is(#queue.tube(), 0, 'checking for empty tube list')
139+
140+
test:is(queue.tube('test1'), false, 'checking for tube nonexistence')
141+
test:is(queue.tube('test2'), false, 'checking for tube nonexistence')
142+
test:is(queue.tube('test3'), false, 'checking for tube nonexistence')
143+
end)
144+
114145
tnt.finish()
115146

116147
os.exit(test:check() == true and 0 or -1)

0 commit comments

Comments
 (0)