[Tarantool-patches] [PATCH v1 09/12] test: increase timeouts in replication/misc
Alexander V. Tikhonov
avtikhon at tarantool.org
Tue Nov 26 09:21:45 MSK 2019
From: Alexander Turenko <alexander.turenko at tarantool.org>
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
More information about the Tarantool-patches
mailing list