From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng2.m.smailru.net (smtpng2.m.smailru.net [94.100.179.3]) (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 4D1C54696C6 for ; Tue, 26 Nov 2019 09:22:00 +0300 (MSK) From: "Alexander V. Tikhonov" Date: Tue, 26 Nov 2019 09:21:45 +0300 Message-Id: In-Reply-To: <1c42ad20160f47d942cab405ce9896d6d31cc05f.1574749278.git.avtikhon@tarantool.org> References: <1c42ad20160f47d942cab405ce9896d6d31cc05f.1574749278.git.avtikhon@tarantool.org> In-Reply-To: <1c42ad20160f47d942cab405ce9896d6d31cc05f.1574749278.git.avtikhon@tarantool.org> References: <1c42ad20160f47d942cab405ce9896d6d31cc05f.1574749278.git.avtikhon@tarantool.org> Subject: [Tarantool-patches] [PATCH v1 09/12] test: increase timeouts in replication/misc List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kirill Yukhin Cc: tarantool-patches@dev.tarantool.org From: Alexander Turenko All changes are needed to eliminate sporadic fails when testing is run with, say, 30 parallel jobs. First, replication_connect_timeout is increased to 30 seconds. This parameter doesn't change meaning of the test cases. Second, increase replication_timeout from 0.01 to 0.03. We usually set it to 0.1 in tests, but a duration of the gh-3160 test case ('Send heartbeats if there are changes from a remote master only') is around 100 * replication_timeout seconds and we don't want to make this test much longer. Runs of the test case (w/o other ones that are in replication/mics.test.lua) in 30 parallel jobs show that 0.03 is enough for the gh-3160 case to pass stably and hopefully enough for the following test cases too. (cherry picked from commit 697caa6b731ae89627958b1fda2aa1da49ecee5d) --- test/replication/misc.result | 43 ++++++++-------------------------- test/replication/misc.test.lua | 27 ++++++++------------- 2 files changed, 20 insertions(+), 50 deletions(-) diff --git a/test/replication/misc.result b/test/replication/misc.result index b4af9e41f..6c9582035 100644 --- a/test/replication/misc.result +++ b/test/replication/misc.result @@ -117,32 +117,12 @@ SERVERS = { 'autobootstrap1', 'autobootstrap2', 'autobootstrap3' } --- ... -- Deploy a cluster. -test_run:create_cluster(SERVERS, "replication", {args="0.1"}) +test_run:create_cluster(SERVERS, "replication", {args="0.03"}) --- ... test_run:wait_fullmesh(SERVERS) --- ... -test_run:cmd("switch autobootstrap1") ---- -- true -... -test_run = require('test_run').new() ---- -... -box.cfg{replication_timeout = 0.01, replication_connect_timeout=0.01} ---- -... -test_run:cmd("switch autobootstrap2") ---- -- true -... -test_run = require('test_run').new() ---- -... -box.cfg{replication_timeout = 0.01, replication_connect_timeout=0.01} ---- -... test_run:cmd("switch autobootstrap3") --- - true @@ -150,10 +130,7 @@ test_run:cmd("switch autobootstrap3") test_run = require('test_run').new() --- ... -fiber=require('fiber') ---- -... -box.cfg{replication_timeout = 0.01, replication_connect_timeout=0.01} +fiber = require('fiber') --- ... _ = box.schema.space.create('test_timeout'):create_index('pk') @@ -163,11 +140,11 @@ test_run:cmd("setopt delimiter ';'") --- - true ... -function wait_follow(replicaA, replicaB) +function wait_not_follow(replicaA, replicaB) return test_run:wait_cond(function() return replicaA.status ~= 'follow' or replicaB.status ~= 'follow' - end, 0.01) -end ; + end, box.cfg.replication_timeout) +end; --- ... function test_timeout() @@ -175,16 +152,16 @@ function test_timeout() local replicaB = box.info.replication[3].upstream or box.info.replication[2].upstream local follows = test_run:wait_cond(function() return replicaA.status == 'follow' or replicaB.status == 'follow' - end, 0.1) - if not follows then error('replicas not in follow status') end - for i = 0, 99 do + end) + if not follows then error('replicas are not in the follow status') end + for i = 0, 99 do box.space.test_timeout:replace({1}) - if wait_follow(replicaA, replicaB) then + if wait_not_follow(replicaA, replicaB) then return error(box.info.replication) end end return true -end ; +end; --- ... test_run:cmd("setopt delimiter ''"); diff --git a/test/replication/misc.test.lua b/test/replication/misc.test.lua index dd374a210..bdfeea11c 100644 --- a/test/replication/misc.test.lua +++ b/test/replication/misc.test.lua @@ -44,40 +44,33 @@ test_run:cleanup_cluster() SERVERS = { 'autobootstrap1', 'autobootstrap2', 'autobootstrap3' } -- Deploy a cluster. -test_run:create_cluster(SERVERS, "replication", {args="0.1"}) +test_run:create_cluster(SERVERS, "replication", {args="0.03"}) test_run:wait_fullmesh(SERVERS) -test_run:cmd("switch autobootstrap1") -test_run = require('test_run').new() -box.cfg{replication_timeout = 0.01, replication_connect_timeout=0.01} -test_run:cmd("switch autobootstrap2") -test_run = require('test_run').new() -box.cfg{replication_timeout = 0.01, replication_connect_timeout=0.01} test_run:cmd("switch autobootstrap3") test_run = require('test_run').new() -fiber=require('fiber') -box.cfg{replication_timeout = 0.01, replication_connect_timeout=0.01} +fiber = require('fiber') _ = box.schema.space.create('test_timeout'):create_index('pk') test_run:cmd("setopt delimiter ';'") -function wait_follow(replicaA, replicaB) +function wait_not_follow(replicaA, replicaB) return test_run:wait_cond(function() return replicaA.status ~= 'follow' or replicaB.status ~= 'follow' - end, 0.01) -end ; + end, box.cfg.replication_timeout) +end; function test_timeout() local replicaA = box.info.replication[1].upstream or box.info.replication[2].upstream local replicaB = box.info.replication[3].upstream or box.info.replication[2].upstream local follows = test_run:wait_cond(function() return replicaA.status == 'follow' or replicaB.status == 'follow' - end, 0.1) - if not follows then error('replicas not in follow status') end - for i = 0, 99 do + end) + if not follows then error('replicas are not in the follow status') end + for i = 0, 99 do box.space.test_timeout:replace({1}) - if wait_follow(replicaA, replicaB) then + if wait_not_follow(replicaA, replicaB) then return error(box.info.replication) end end return true -end ; +end; test_run:cmd("setopt delimiter ''"); test_timeout() -- 2.17.1