From 7bf7a0d16325418a4a55f94c41945c74c3989e0c Mon Sep 17 00:00:00 2001 From: Georgy Kirichenko <georgy@tarantool.org> Date: Wed, 6 Sep 2017 10:23:05 +0300 Subject: [PATCH] replication: add a test case for timeouts Fixes #2707 --- test/replication/errinj.result | 90 ++++++++++++++++++++++++++++++++ test/replication/errinj.test.lua | 34 ++++++++++++ 2 files changed, 124 insertions(+) diff --git a/test/replication/errinj.result b/test/replication/errinj.result index 089d8f90bc..0fd36ba92d 100644 --- a/test/replication/errinj.result +++ b/test/replication/errinj.result @@ -215,3 +215,93 @@ test_run:cmd("cleanup server replica") --- - true ... +box.cfg{replication_timeout = 0.01} +--- +... +box.schema.user.grant("guest", "replication") +--- +... +test_run:cmd("start server replica") +--- +- true +... +test_run:cmd("switch replica") +--- +- true +... +fiber = require'fiber' +--- +... +while box.info.replication[1].upstream.message ~= 'timed out' do fiber.sleep(0.0001) end +--- +... +test_run:cmd("switch default") +--- +- true +... +box.cfg{replication_timeout = 0.05} +--- +... +test_run:cmd("switch replica") +--- +- true +... +-- wait for reconnect +while box.info.replication[1].upstream.status ~= 'follow' do fiber.sleep(0.0001) end +--- +... +box.info.replication[1].upstream.status +--- +- follow +... +-- wait for ack timeout +while box.info.replication[1].upstream.message ~= 'timed out' do fiber.sleep(0.0001) end +--- +... +test_run:cmd("switch default") +--- +- true +... +box.cfg{replication_timeout = 5} +--- +... +test_run:cmd("switch replica") +--- +- true +... +-- wait for reconnect +while box.info.replication[1].upstream.status ~= 'follow' do fiber.sleep(0.0001) end +--- +... +-- wait for ack timeout again, should be ok +fiber.sleep(0.01) +--- +... +{box.info.replication[1].upstream.status, box.info.replication[1].upstream.message} +--- +- - follow +... +test_run:cmd("stop server default") +--- +- true +... +test_run:cmd("deploy server default") +--- +- true +... +test_run:cmd("start server default") +--- +- true +... +test_run:cmd("switch default") +--- +- true +... +test_run:cmd("stop server replica") +--- +- true +... +test_run:cmd("cleanup server replica") +--- +- true +... diff --git a/test/replication/errinj.test.lua b/test/replication/errinj.test.lua index 9e6fbc53e9..b50b6b0cb6 100644 --- a/test/replication/errinj.test.lua +++ b/test/replication/errinj.test.lua @@ -92,3 +92,37 @@ test_run:cmd("start server default") test_run:cmd("switch default") test_run:cmd("stop server replica") test_run:cmd("cleanup server replica") + +box.cfg{replication_timeout = 0.01} +box.schema.user.grant("guest", "replication") + +test_run:cmd("start server replica") +test_run:cmd("switch replica") +fiber = require'fiber' +while box.info.replication[1].upstream.message ~= 'timed out' do fiber.sleep(0.0001) end + +test_run:cmd("switch default") +box.cfg{replication_timeout = 0.05} +test_run:cmd("switch replica") +-- wait for reconnect +while box.info.replication[1].upstream.status ~= 'follow' do fiber.sleep(0.0001) end +box.info.replication[1].upstream.status +-- wait for ack timeout +while box.info.replication[1].upstream.message ~= 'timed out' do fiber.sleep(0.0001) end + +test_run:cmd("switch default") +box.cfg{replication_timeout = 5} + +test_run:cmd("switch replica") +-- wait for reconnect +while box.info.replication[1].upstream.status ~= 'follow' do fiber.sleep(0.0001) end +-- wait for ack timeout again, should be ok +fiber.sleep(0.01) +{box.info.replication[1].upstream.status, box.info.replication[1].upstream.message} + +test_run:cmd("stop server default") +test_run:cmd("deploy server default") +test_run:cmd("start server default") +test_run:cmd("switch default") +test_run:cmd("stop server replica") +test_run:cmd("cleanup server replica") -- GitLab