[patches] [box 1/1] box: Add before_replace trigger tests

Georgy Kirichenko georgy at tarantool.org
Fri Mar 2 07:19:18 MSK 2018


Seems to be Ok
On Thursday, February 22, 2018 5:33:12 PM MSK imarkov wrote:
> * Add test on usage run_triggers inside before_replace.
> Test verifies that other before_replace triggers within the
> same space will be executed but other triggers won't.
> * Add test on return old in before_replace.
> Test verifies that other before_replace triggers will be executed,
> but insertion won't take place and other triggers will be ignored.
> 
> Closes #3128
> ---
>  test/box/before_replace.result   | 98
> ++++++++++++++++++++++++++++++++++++++++ test/box/before_replace.test.lua |
> 40 ++++++++++++++++
>  2 files changed, 138 insertions(+)
> 
> diff --git a/test/box/before_replace.result b/test/box/before_replace.result
> index 10f4699..4f47b9f 100644
> --- a/test/box/before_replace.result
> +++ b/test/box/before_replace.result
> @@ -664,6 +664,104 @@ row.BODY.space_id == s.id
>  ---
>  - true
>  ...
> +-- gh-3128 before_replace with run_triggers
> +s2 = box.schema.space.create("test2")
> +---
> +...
> +_ = s2:create_index("prim")
> +---
> +...
> +before_replace1 = function() s2:insert{1} s:run_triggers(false) end
> +---
> +...
> +before_replace2 = function() s2:insert{2} end
> +---
> +...
> +on_replace = function() s2:insert{3} end
> +---
> +...
> +type(s:on_replace(on_replace))
> +---
> +- function
> +...
> +type(s:before_replace(before_replace1))
> +---
> +- function
> +...
> +type(s:before_replace(before_replace2))
> +---
> +- function
> +...
> +s:insert{1, 1}
> +---
> +...
> +s2:select{}
> +---
> +- - [1]
> +  - [2]
> +...
> +s:truncate()
> +---
> +...
> +s2:truncate()
> +---
> +...
> +s:on_replace(nil, on_replace)
> +---
> +...
> +s:before_replace(nil, before_replace1)
> +---
> +...
> +s:before_replace(nil, before_replace2)
> +---
> +...
> +--
> +-- gh-3128
> +-- If at least one before trigger returns old
> +-- insertion will be aborted, but other before triggers
> +-- will be executed
> +before_replace1 = function(old, new) s2:insert{1} return old end
> +---
> +...
> +before_replace2 = function(old, new) s2:insert{2} end
> +---
> +...
> +type(s:on_replace(on_replace))
> +---
> +- function
> +...
> +type(s:before_replace(before_replace1))
> +---
> +- function
> +...
> +type(s:before_replace(before_replace2))
> +---
> +- function
> +...
> +s:insert{1, 1}
> +---
> +...
> +s:select{}
> +---
> +- []
> +...
> +s2:select{}
> +---
> +- - [1]
> +  - [2]
> +...
> +s:on_replace(nil, on_replace)
> +---
> +...
> +s:before_replace(nil, before_replace1)
> +---
> +...
> +s:before_replace(nil, before_replace2)
> +---
> +...
> +s2:drop()
> +---
> +...
>  s:drop()
>  ---
>  ...
> diff --git a/test/box/before_replace.test.lua
> b/test/box/before_replace.test.lua index 01a386d..22733c1 100644
> --- a/test/box/before_replace.test.lua
> +++ b/test/box/before_replace.test.lua
> @@ -223,4 +223,44 @@ state, row = fun(param, state)
>  row.HEADER.type
>  row.BODY.space_id == s.id
> 
> +-- gh-3128 before_replace with run_triggers
> +s2 = box.schema.space.create("test2")
> +_ = s2:create_index("prim")
> +before_replace1 = function() s2:insert{1} s:run_triggers(false) end
> +before_replace2 = function() s2:insert{2} end
> +on_replace = function() s2:insert{3} end
> +
> +type(s:on_replace(on_replace))
> +type(s:before_replace(before_replace1))
> +type(s:before_replace(before_replace2))
> +
> +s:insert{1, 1}
> +s2:select{}
> +s:truncate()
> +s2:truncate()
> +
> +s:on_replace(nil, on_replace)
> +s:before_replace(nil, before_replace1)
> +s:before_replace(nil, before_replace2)
> +
> +--
> +-- gh-3128
> +-- If at least one before trigger returns old
> +-- insertion will be aborted, but other before triggers
> +-- will be executed
> +before_replace1 = function(old, new) s2:insert{1} return old end
> +before_replace2 = function(old, new) s2:insert{2} end
> +
> +type(s:on_replace(on_replace))
> +type(s:before_replace(before_replace1))
> +type(s:before_replace(before_replace2))
> +
> +s:insert{1, 1}
> +s:select{}
> +s2:select{}
> +
> +s:on_replace(nil, on_replace)
> +s:before_replace(nil, before_replace1)
> +s:before_replace(nil, before_replace2)
> +s2:drop()
>  s:drop()

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20180302/513e28a8/attachment.sig>


More information about the Tarantool-patches mailing list