From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp57.i.mail.ru (smtp57.i.mail.ru [217.69.128.37]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 8310742F4AD for ; Sat, 20 Jun 2020 07:50:43 +0300 (MSK) From: "Alexander V. Tikhonov" Date: Sat, 20 Jun 2020 07:50:39 +0300 Message-Id: <4351b421b56115e2d8c35f60fdb5e8ba43a7b9fe.1592628521.git.avtikhon@tarantool.org> Subject: [Tarantool-patches] [PATCH v2] test: flaky box/net.box_wait_connected_gh-3856 List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Vladislav Shpilevoy , Sergey Bronnikov , Alexander Turenko Cc: tarantool-patches@dev.tarantool.org From: Alexander Turenko Found issue running test on FreeBSD VBox host: [011] --- box/net.box_wait_connected_gh-3856.result Mon Jun 15 09:39:49 2020 [011] +++ box/net.box_wait_connected_gh-3856.reject Fri May 8 08:23:30 2020 [011] @@ -12,7 +12,8 @@ [011] - opts: [011] wait_connected: false [011] host: 8.8.8.8 [011] - state: initial [011] + state: error [011] + error: Invalid argument [011] port: '123456' [011] ... [011] c:close() The reason of the fail was that getaddrinfo() returned EIA_SERVICE for an incorrect TCP/IP port on FreeBSD, but crops it as modulo of 65536 on Linux/glibc. Checked with local script './getaddrinfo': (Linux/glibc) $ ./getaddrinfo 8.8.8.8 123456 ---- family: AF_INET socktype: SOCK_STREAM protocol: IPPROTO_TCP host: 8.8.8.8 serv: 57920 (FreeBSD) $ ./getaddrinfo 8.8.8.8 123456 getaddrinfo: Service was not recognized for socket type So obvious fix is to change 123456 to something less or equal to 65535. Say, 1234. The test depended on an order in which fibers were scheduled (net_box.connect() creates a separate fiber for connecting in background using fiber.create(), which yields). Unlikely our fiber were not get execution time during the connection attempt, so it was more like a formal thing. But we can decrease probability of this situation even more if we'll grab all connection fields just when net_box.connect() returns, not after yield in console (which is due to waiting a next command from test-run). Closes #5083 Reviewed-by: Alexander V. Tikhonov --- Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-5083-net-box-google-dns Issue: https://github.com/tarantool/tarantool/issues/5083 test/box/net.box_wait_connected_gh-3856.result | 13 ++++++++----- test/box/net.box_wait_connected_gh-3856.test.lua | 8 ++++++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/test/box/net.box_wait_connected_gh-3856.result b/test/box/net.box_wait_connected_gh-3856.result index 9234e6cb9..0ac6d8a0b 100644 --- a/test/box/net.box_wait_connected_gh-3856.result +++ b/test/box/net.box_wait_connected_gh-3856.result @@ -1,19 +1,22 @@ net = require('net.box') --- ... +test_run = require('test_run').new() +--- +... -- -- gh-3856: wait_connected = false is ignored. -- -c = net.connect('8.8.8.8:123456', {wait_connected = false}) ---- -... -c +do \ + c = net.connect('8.8.8.8:1234', {wait_connected = false}) \ + return c \ +end --- - opts: wait_connected: false host: 8.8.8.8 state: initial - port: '123456' + port: '1234' ... c:close() --- diff --git a/test/box/net.box_wait_connected_gh-3856.test.lua b/test/box/net.box_wait_connected_gh-3856.test.lua index 29e997fb5..cf3974e98 100644 --- a/test/box/net.box_wait_connected_gh-3856.test.lua +++ b/test/box/net.box_wait_connected_gh-3856.test.lua @@ -1,8 +1,12 @@ net = require('net.box') +test_run = require('test_run').new() -- -- gh-3856: wait_connected = false is ignored. -- -c = net.connect('8.8.8.8:123456', {wait_connected = false}) -c +do \ + c = net.connect('8.8.8.8:1234', {wait_connected = false}) \ + return c \ +end + c:close() -- 2.17.1