1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
|
# vim:set ft= ts=4 sw=4 et fdm=marker:
use Test::Nginx::Socket::Lua;
add_block_preprocessor(sub {
my $block = shift;
my $http_config = $block->http_config || '';
$http_config .= <<_EOC_;
init_by_lua_block {
function test_sa_restart()
local signals = {
--"HUP",
--"INFO",
--"XCPU",
--"USR1",
--"USR2",
"ALRM",
--"INT",
"IO",
"CHLD",
--"WINCH",
}
for _, signame in ipairs(signals) do
local cmd = string.format("kill -s %s %d && sleep 0.01",
signame, ngx.worker.pid())
local err = select(2, io.popen(cmd):read("*a"))
if err then
error("SIG" .. signame .. " caused: " .. err)
end
end
end
}
_EOC_
$block->set_value("http_config", $http_config);
if (!defined $block->config) {
my $config = <<_EOC_;
location /t {
echo ok;
}
_EOC_
$block->set_value("config", $config);
}
if (!defined $block->request) {
$block->set_value("request", "GET /t");
}
if (!defined $block->response_body) {
$block->set_value("ignore_response_body");
}
if (!defined $block->no_error_log) {
$block->set_value("no_error_log", "[error]");
}
});
plan tests => repeat_each() * (blocks() * 2 + 1);
no_long_string();
run_tests();
__DATA__
=== TEST 1: lua_sa_restart default - sets SA_RESTART in init_worker_by_lua*
--- http_config
init_worker_by_lua_block {
test_sa_restart()
}
=== TEST 2: lua_sa_restart off - does not set SA_RESTART
--- http_config
lua_sa_restart off;
init_worker_by_lua_block {
test_sa_restart()
}
--- no_error_log
[crit]
--- error_log
Interrupted system call
=== TEST 3: lua_sa_restart on (default) - sets SA_RESTART if no init_worker_by_lua* phase is defined
--- config
location /t {
content_by_lua_block {
test_sa_restart()
}
}
=== TEST 4: lua_sa_restart on (default) - SA_RESTART is effective in rewrite_by_lua*
--- config
location /t {
rewrite_by_lua_block {
test_sa_restart()
}
echo ok;
}
=== TEST 5: lua_sa_restart on (default) - SA_RESTART is effective in access_by_lua*
--- config
location /t {
access_by_lua_block {
test_sa_restart()
}
echo ok;
}
=== TEST 6: lua_sa_restart on (default) - SA_RESTART is effective in content_by_lua*
--- config
location /t {
content_by_lua_block {
test_sa_restart()
}
}
=== TEST 7: lua_sa_restart on (default) - SA_RESTART is effective in header_filter_by_lua*
--- config
location /t {
echo ok;
header_filter_by_lua_block {
test_sa_restart()
}
}
=== TEST 8: lua_sa_restart on (default) - SA_RESTART is effective in body_filter_by_lua*
--- config
location /t {
echo ok;
body_filter_by_lua_block {
test_sa_restart()
}
}
=== TEST 9: lua_sa_restart on (default) - SA_RESTART is effective in log_by_lua*
--- config
location /t {
echo ok;
log_by_lua_block {
test_sa_restart()
}
}
=== TEST 10: lua_sa_restart on (default) - SA_RESTART is effective in timer phase
--- config
location /t {
echo ok;
log_by_lua_block {
ngx.timer.at(0, test_sa_restart)
}
}
|