[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