-
Notifications
You must be signed in to change notification settings - Fork 375
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test: extract on_shutdown tests from box/misc
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
1 parent
7562d7c
commit 83a1928
Showing
4 changed files
with
231 additions
and
222 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
... |
Oops, something went wrong.