From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Vladimir Davydov Subject: [PATCH] test: fix box/iproto_stress sporadic failure Date: Thu, 28 Feb 2019 17:24:06 +0300 Message-Id: <48b0070bbf381640d1877534914b07e270c04bbf.1551363799.git.vdavydov.dev@gmail.com> To: tarantool-patches@freelists.org List-ID: This patch fixes the following test failure: | --- box/iproto_stress.result Tue Dec 25 09:56:54 2018 | +++ box/iproto_stress.reject Tue Dec 25 10:12:22 2018 | @@ -80,7 +80,7 @@ | ... | n_workers -- 0 | --- | -- 0 | +- 340 | ... | n_errors -- 0 | --- | @@ -93,5 +93,3 @@ | --- | ... | box.cfg{net_msg_max = net_msg_max} | ---- | -... The problem is the test is quite cpu intensive so if the host is heavily loaded (as it is often the case when tests are run on Travis CI), it may take a few minutes to complete, while the timeout is set to 10 seconds. To fix it, let's - Increase the timeout up to 60 seconds and use test_run.wait_cond instead of a homebrew loop. - Decrease the number of fibers from 400 down to 100 and adjust box.cfg.net_msg_max respectively. Closes #3911 --- https://github.com/tarantool/tarantool/issues/3911 https://github.com/tarantool/tarantool/tree/dv/test-fixes test/box/iproto_stress.result | 10 ++++------ test/box/iproto_stress.test.lua | 7 +++---- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/test/box/iproto_stress.result b/test/box/iproto_stress.result index 4239b49b..7149d6c5 100644 --- a/test/box/iproto_stress.result +++ b/test/box/iproto_stress.result @@ -10,7 +10,7 @@ net_box = require('net.box') net_msg_max = box.cfg.net_msg_max --- ... -box.cfg{net_msg_max = 64} +box.cfg{net_msg_max = 16} --- ... box.schema.user.grant('guest', 'read,write,execute', 'universe') @@ -54,7 +54,7 @@ test_run:cmd("setopt delimiter ''"); --- - true ... -for i = 1,400 do fiber.create(worker, i) end +for i = 1, 100 do fiber.create(worker, i) end --- ... fiber.sleep(0.1) @@ -72,11 +72,9 @@ box.error.injection.set("ERRINJ_WAL_DELAY", false) --- - ok ... -attempt = 0 ---- -... -while n_workers > 0 and attempt < 100 do fiber.sleep(0.1) attempt = attempt + 1 end +test_run:wait_cond(function() return n_workers == 0 end, 60) --- +- true ... n_workers -- 0 --- diff --git a/test/box/iproto_stress.test.lua b/test/box/iproto_stress.test.lua index 2f307145..1e1a6578 100644 --- a/test/box/iproto_stress.test.lua +++ b/test/box/iproto_stress.test.lua @@ -4,7 +4,7 @@ fiber = require('fiber') net_box = require('net.box') net_msg_max = box.cfg.net_msg_max -box.cfg{net_msg_max = 64} +box.cfg{net_msg_max = 16} box.schema.user.grant('guest', 'read,write,execute', 'universe') @@ -33,7 +33,7 @@ function worker(i) end; test_run:cmd("setopt delimiter ''"); -for i = 1,400 do fiber.create(worker, i) end +for i = 1, 100 do fiber.create(worker, i) end fiber.sleep(0.1) -- check that iproto doesn't deplete tx fiber pool on wal stall (see gh-1892) @@ -41,8 +41,7 @@ box.error.injection.set("ERRINJ_WAL_DELAY", true) fiber.sleep(0.1) box.error.injection.set("ERRINJ_WAL_DELAY", false) -attempt = 0 -while n_workers > 0 and attempt < 100 do fiber.sleep(0.1) attempt = attempt + 1 end +test_run:wait_cond(function() return n_workers == 0 end, 60) n_workers -- 0 n_errors -- 0 -- 2.11.0