[Tarantool-patches] [PATCH v2] test: flaky box/net.box_wait_connected_gh-3856
Alexander V. Tikhonov
avtikhon at tarantool.org
Sat Jun 20 07:50:39 MSK 2020
From: Alexander Turenko <alexander.turenko at tarantool.org>
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 <avtikhon at tarantool.org>
---
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
More information about the Tarantool-patches
mailing list