Skip to content
Snippets Groups Projects
Commit bf852b41 authored by Serge Petrenko's avatar Serge Petrenko Committed by Vladimir Davydov
Browse files

core: add a test for recursive trigger invocation

Our triggers support recursive invocation: for example, an on_replace
trigger on a space may do a replace in the same space.

However, this is not tested and might get broken easily. Let's add a
corresponding test.

In-scope-of #4264

NO_DOC=testing
NO_CHANGELOG=testing
parent 742de9bf
No related branches found
No related tags found
No related merge requests found
local t = require('luatest')
local server = require('test.luatest_helpers.server')
local g = t.group('gh-4264')
g.before_all(function(cg)
cg.server = server:new{alias = 'server'}
cg.server:start()
cg.server:exec(function()
local s = box.schema.space.create('test')
s:create_index('pk')
end)
end)
g.after_all(function(cg)
cg.server:drop()
end)
g.test_recursive_trigger_invocation = function(cg)
local order = cg.server:exec(function()
local order = {}
local level = 0
local s = box.space.test
local f1 = function()
level = level + 1
table.insert(order, level * 10 + 1)
if level >= 3 then
return
end
s:replace{1}
level = level - 1
end
local f2 = function()
table.insert(order, level * 10 + 2)
end
s:on_replace(f2)
s:on_replace(f1)
s:replace{1}
return order
end)
t.assert_equals(order, {11, 21, 31, 32, 22, 12},
"Correct recursive trigger invocation")
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment