Skip to content

Commit

Permalink
test: extract on_shutdown tests from box/misc
Browse files Browse the repository at this point in the history
This part of the test is flaky when tests are run in parallel, besides,
it is quite big on its own, so extract it into a separate file to add
more flexibility in running tests and to make finding problems easier.

Part of #4134
  • Loading branch information
sergepetrenko authored and avtikhon committed May 15, 2019
1 parent b580010 commit 84bd5b6
Show file tree
Hide file tree
Showing 4 changed files with 231 additions and 222 deletions.
161 changes: 0 additions & 161 deletions test/box/misc.result
Original file line number Diff line number Diff line change
Expand Up @@ -1263,164 +1263,3 @@ box.cfg{too_long_threshold = too_long_threshold}
s:drop()
---
...
--
-- gh-1607: on_shutdown triggers.
--
f = function() print('on_shutdown 1') end
---
...
g = function() print('on_shutdown 2') end
---
...
h = function() print('on_shutdown 3') end
---
...
-- Check that on_shutdown triggers may yield
-- and perform some complicated actions.
fiber = require('fiber')
---
...
test_run:cmd("setopt delimiter ';'")
---
- true
...
trig = function()
fiber.sleep(0.01)
fiber.yield()
box.schema.space.create("shutdown")
box.space.shutdown:create_index("pk")
box.space.shutdown:insert{1,2,3}
print('on_shutdown 4')
end;
---
...
test_run:cmd("setopt delimiter ''");
---
- true
...
_ = box.ctl.on_shutdown(f)
---
...
_ = box.ctl.on_shutdown(g)
---
...
-- Check that replacing triggers works
_ = box.ctl.on_shutdown(h, g)
---
...
_ = box.ctl.on_shutdown(trig)
---
...
test_run:cmd('restart server default')
test_run:grep_log('default', 'on_shutdown 1', nil, {noreset=true})
---
- on_shutdown 1
...
test_run:grep_log('default', 'on_shutdown 2', nil, {noreset=true})
---
- null
...
test_run:grep_log('default', 'on_shutdown 3', nil, {noreset=true})
---
- on_shutdown 3
...
test_run:grep_log('default', 'on_shutdown 4', nil, {noreset=true})
---
- on_shutdown 4
...
box.space.shutdown:select{}
---
- - [1, 2, 3]
...
box.space.shutdown:drop()
---
...
-- Check that os.exit invokes triggers
fiber = require("fiber")
---
...
test_run:cmd("create server test with script='box/proxy.lua'")
---
- true
...
test_run:cmd("start server test")
---
- true
...
logfile = test_run:eval("test", "box.cfg.log")[1]
---
...
test_run:cmd("stop server test")
---
- true
...
-- clean up any leftover logs
require("fio").unlink(logfile)
---
- true
...
test_run:cmd("start server test")
---
- true
...
test_run:cmd("switch test")
---
- true
...
_ = box.ctl.on_shutdown(function() print("on_shutdown 5") end)
---
...
-- Check that we don't hang infinitely after os.exit()
-- even if the following code doesn't yield.
fiber = require("fiber")
---
...
_ = fiber.create(function() fiber.sleep(0.05) os.exit() while true do end end)
---
...
test_run:cmd("switch default")
---
- true
...
fiber.sleep(0.1)
---
...
-- The server should be already stopped by os.exit(),
-- but start doesn't work without a prior call to stop.
test_run:cmd("stop server test")
---
- true
...
test_run:cmd("start server test")
---
- true
...
test_run:cmd("switch test")
---
- true
...
test_run:grep_log('test', 'on_shutdown 5', nil, {noreset=true})
---
- on_shutdown 5
...
-- make sure we exited because of os.exit(), not a signal.
test_run:grep_log('test', 'signal', nil, {noreset=true})
---
- null
...
test_run:cmd("switch default")
---
- true
...
test_run:cmd("stop server test")
---
- true
...
test_run:cmd("cleanup server test")
---
- true
...
test_run:cmd("delete server test")
---
- true
...
61 changes: 0 additions & 61 deletions test/box/misc.test.lua
Original file line number Diff line number Diff line change
Expand Up @@ -353,64 +353,3 @@ lsn == expected_lsn
box.cfg{too_long_threshold = too_long_threshold}
s:drop()

--
-- gh-1607: on_shutdown triggers.
--
f = function() print('on_shutdown 1') end
g = function() print('on_shutdown 2') end
h = function() print('on_shutdown 3') end
-- Check that on_shutdown triggers may yield
-- and perform some complicated actions.
fiber = require('fiber')
test_run:cmd("setopt delimiter ';'")
trig = function()
fiber.sleep(0.01)
fiber.yield()
box.schema.space.create("shutdown")
box.space.shutdown:create_index("pk")
box.space.shutdown:insert{1,2,3}
print('on_shutdown 4')
end;
test_run:cmd("setopt delimiter ''");
_ = box.ctl.on_shutdown(f)
_ = box.ctl.on_shutdown(g)
-- Check that replacing triggers works
_ = box.ctl.on_shutdown(h, g)
_ = box.ctl.on_shutdown(trig)
test_run:cmd('restart server default')
test_run:grep_log('default', 'on_shutdown 1', nil, {noreset=true})
test_run:grep_log('default', 'on_shutdown 2', nil, {noreset=true})
test_run:grep_log('default', 'on_shutdown 3', nil, {noreset=true})
test_run:grep_log('default', 'on_shutdown 4', nil, {noreset=true})
box.space.shutdown:select{}
box.space.shutdown:drop()

-- Check that os.exit invokes triggers
fiber = require("fiber")
test_run:cmd("create server test with script='box/proxy.lua'")
test_run:cmd("start server test")
logfile = test_run:eval("test", "box.cfg.log")[1]
test_run:cmd("stop server test")
-- clean up any leftover logs
require("fio").unlink(logfile)
test_run:cmd("start server test")
test_run:cmd("switch test")
_ = box.ctl.on_shutdown(function() print("on_shutdown 5") end)
-- Check that we don't hang infinitely after os.exit()
-- even if the following code doesn't yield.
fiber = require("fiber")
_ = fiber.create(function() fiber.sleep(0.05) os.exit() while true do end end)
test_run:cmd("switch default")
fiber.sleep(0.1)
-- The server should be already stopped by os.exit(),
-- but start doesn't work without a prior call to stop.
test_run:cmd("stop server test")
test_run:cmd("start server test")
test_run:cmd("switch test")
test_run:grep_log('test', 'on_shutdown 5', nil, {noreset=true})
-- make sure we exited because of os.exit(), not a signal.
test_run:grep_log('test', 'signal', nil, {noreset=true})
test_run:cmd("switch default")
test_run:cmd("stop server test")
test_run:cmd("cleanup server test")
test_run:cmd("delete server test")
167 changes: 167 additions & 0 deletions test/box/on_shutdown.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
env = require('test_run')
---
...
test_run = env.new()
---
...
--
-- gh-1607: on_shutdown triggers.
--
f = function() print('on_shutdown 1') end
---
...
g = function() print('on_shutdown 2') end
---
...
h = function() print('on_shutdown 3') end
---
...
-- Check that on_shutdown triggers may yield
-- and perform some complicated actions.
fiber = require('fiber')
---
...
test_run:cmd("setopt delimiter ';'")
---
- true
...
trig = function()
fiber.sleep(0.01)
fiber.yield()
box.schema.space.create("shutdown")
box.space.shutdown:create_index("pk")
box.space.shutdown:insert{1,2,3}
print('on_shutdown 4')
end;
---
...
test_run:cmd("setopt delimiter ''");
---
- true
...
_ = box.ctl.on_shutdown(f)
---
...
_ = box.ctl.on_shutdown(g)
---
...
-- Check that replacing triggers works
_ = box.ctl.on_shutdown(h, g)
---
...
_ = box.ctl.on_shutdown(trig)
---
...
test_run:cmd('restart server default')
test_run:grep_log('default', 'on_shutdown 1', nil, {noreset=true})
---
- on_shutdown 1
...
test_run:grep_log('default', 'on_shutdown 2', nil, {noreset=true})
---
- null
...
test_run:grep_log('default', 'on_shutdown 3', nil, {noreset=true})
---
- on_shutdown 3
...
test_run:grep_log('default', 'on_shutdown 4', nil, {noreset=true})
---
- on_shutdown 4
...
box.space.shutdown:select{}
---
- - [1, 2, 3]
...
box.space.shutdown:drop()
---
...
-- Check that os.exit invokes triggers
fiber = require("fiber")
---
...
test_run:cmd("create server test with script='box/proxy.lua'")
---
- true
...
test_run:cmd("start server test")
---
- true
...
logfile = test_run:eval("test", "box.cfg.log")[1]
---
...
test_run:cmd("stop server test")
---
- true
...
-- clean up any leftover logs
require("fio").unlink(logfile)
---
- true
...
test_run:cmd("start server test")
---
- true
...
test_run:cmd("switch test")
---
- true
...
_ = box.ctl.on_shutdown(function() print("on_shutdown 5") end)
---
...
-- Check that we don't hang infinitely after os.exit()
-- even if the following code doesn't yield.
fiber = require("fiber")
---
...
_ = fiber.create(function() fiber.sleep(0.05) os.exit() while true do end end)
---
...
test_run:cmd("switch default")
---
- true
...
fiber.sleep(0.1)
---
...
-- The server should be already stopped by os.exit(),
-- but start doesn't work without a prior call to stop.
test_run:cmd("stop server test")
---
- true
...
test_run:cmd("start server test")
---
- true
...
test_run:cmd("switch test")
---
- true
...
test_run:grep_log('test', 'on_shutdown 5', nil, {noreset=true})
---
- on_shutdown 5
...
-- make sure we exited because of os.exit(), not a signal.
test_run:grep_log('test', 'signal', nil, {noreset=true})
---
- null
...
test_run:cmd("switch default")
---
- true
...
test_run:cmd("stop server test")
---
- true
...
test_run:cmd("cleanup server test")
---
- true
...
test_run:cmd("delete server test")
---
- true
...

0 comments on commit 84bd5b6

Please sign in to comment.