-
Notifications
You must be signed in to change notification settings - Fork 52
/
100-limfifottl.t
executable file
·72 lines (55 loc) · 2.1 KB
/
100-limfifottl.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env tarantool
local yaml = require('yaml')
local fiber = require('fiber')
local queue = require('queue')
local state = require('queue.abstract.state')
local engine = os.getenv('ENGINE') or 'memtx'
local tnt = require('t.tnt')
tnt.cfg{}
local test = require('tap').test()
if engine == 'memtx' then
test:plan(9)
test:ok(rawget(box, 'space'), 'box started')
test:ok(queue, 'queue is loaded')
local tube = queue.create_tube('lim3_tube', 'limfifottl', { engine = engine, capacity = 3 })
local unlim_tube = queue.create_tube('unlim_tube', 'limfifottl', { engine = engine })
test:ok(tube, 'test tube created')
test:is(tube.name, 'lim3_tube', 'tube.name')
test:is(tube.type, 'limfifottl', 'tube.type')
test:test('Put timeout is reached', function(test)
test:plan(4)
test:ok(tube:put{1}, 'task 1 was put')
test:ok(tube:put{2}, 'task 2 was put')
test:ok(tube:put{3}, 'task 3 was put')
test:is(tube:put({4}, {timeout = 0.1}), nil, 'task 4 wasn\'t put cause timeout')
end)
test:test('Put after freeing up space', function(test)
test:plan(3)
local put_fiber = fiber.create(function()
test:ok(tube:put({4}, {timeout = 1}), 'task 4 was put')
end)
local task = tube:take()
test:ok(task, 'task 3 was taken')
test:is(tube:ack(task[1])[2], state.DONE, 'task 3 is done')
while put_fiber:status() ~= 'dead' do
fiber.sleep(.01)
end
end)
test:test('Get current queue length', function(test)
test:plan(1)
test:is(tube.raw:len(), 3, 'tube length is 3')
end)
test:test('Unlimited tube put', function(test)
test:plan(3)
test:is(unlim_tube:take(0), nil, 'tube is empty')
test:ok(unlim_tube:put{1}, 'task 1 was put')
test:ok(unlim_tube:put{2}, 'task 2 was put')
end)
else
test:plan(1)
local ok = pcall(queue.create_tube, 'unsupported_engine', 'limfifottl', { engine = engine })
test:ok(not ok, 'vinyl engine is not allowed')
end
tnt.finish()
os.exit(test:check() and 0 or 1)
-- vim: set ft=lua :