[tarantool-patches] Re: [PATCH 1/1] test: fix flaky swim/errinj.test.lua

Alexander Turenko alexander.turenko at tarantool.org
Wed Jul 31 11:23:24 MSK 2019


> >> diff --git a/test/swim/errinj.test.lua b/test/swim/errinj.test.lua
> >> index cf0cb2dd4..6c73f9f3d 100644
> >> --- a/test/swim/errinj.test.lua
> >> +++ b/test/swim/errinj.test.lua
> >> @@ -26,6 +26,7 @@ s1:self():incarnation()
> >>  errinj.set("ERRINJ_SWIM_FD_ONLY", true)
> >>  s1:probe_member(s2:self():uri())
> >>  errinj.set("ERRINJ_SWIM_FD_ONLY", false)
> >> +while s1_view:incarnation().version ~= 2 do fiber.sleep(0.01) end
> > 
> > Nit: Maybe it will be a bit better to stop after a certain time period
> > if a condition is not meet after, say, a minute: this will allow
> > test-run to continue with the test and possibly show more compact
> > miscompare fail and also will allow continue with other tests that was
> > already scheduled to the same worker. We use test_run:wait_cond() for
> > this. Anyway, this is a thing of preference and I don't push anyone to
> > one or another way: this message it just to let you know about both ways
> > and the difference between them. (From the other hand explicit is better
> > then implicit.)
> 
> Such places are widespread in our tests. Perhaps it is worth introducing
> a test-run helper for that. For example:
> 
>     test_run:wait(function() ... end, timeout)
> 
> The function should return true, when the condition is met. This case
> would look like this:
> 
>     test_run:wait(function()                                \
>         return s1_view:incarnation().version == 2           \
>     end, 60)

I have mentioned it above: test_run:wait_cond(func, timeout, delay).
https://github.com/tarantool/test-run/blob/947c65cda7f26ceb5f601bbf154e70f9c3f755e9/test_run.lua#L387




More information about the Tarantool-patches mailing list