[Tarantool-patches] [PATCH] Stabilize tcp_connect in test_run:cmd()

Alexander Turenko alexander.turenko at tarantool.org
Mon Nov 25 18:31:41 MSK 2019


On Sat, Nov 23, 2019 at 05:50:12PM +0300, Ilya Kosarev wrote:
> For some tests, for example, replication/box_set_replication_stress,
> socket.tcp_connect() in test_run:cmd() might sometimes fail when
> running under high load. Now it is fixed.
> 
> Closes #193
> ---
> https://github.com/tarantool/test-run/tree/i.kosarev/gh-193-stabilize-test-run-cmd
> https://github.com/tarantool/test-run/issues/193
> 
>  test_run.lua | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/test_run.lua b/test_run.lua
> index 63dfdef..0d450bd 100644
> --- a/test_run.lua
> +++ b/test_run.lua
> @@ -11,6 +11,9 @@ local clock = require('clock')
>  
>  local function cmd(self, msg)
>      local sock = socket.tcp_connect(self.host, self.port)
> +    while sock == nil do
> +        sock = socket.tcp_connect(self.host, self.port)
> +    end
>      local data = msg .. '\n'
>      sock:send(data)

I'm tentative about possibly infinite loop. I know, test-run will fail a
hung test, but it would be better to fail gracefully and provide some
information about an error (is socket.tcp_connect returns something
about?)

Let's consider using wait_cond or, better, set a connection timeout (if
possible).

It also interesting what is the reason of the connection error in the
first place. Whether test-run actually listens at the moment? Maybe it
unable to proceed much incoming connection requests at time?

Please, don't bury youself with that, but look around briefly.

WBR, Alexander Turenko.


More information about the Tarantool-patches mailing list