blob: 98a7400f2c17a7541f68c3afe5d2548095270f52 [file] [log] [blame] [raw]
# vim:set ft= ts=4 sw=4 et fdm=marker:
use lib 'lib';
use Test::Nginx::Socket::Lua;
#worker_connections(1014);
#master_on();
#workers(2);
#log_level('warn');
repeat_each(2);
plan tests => repeat_each() * (blocks() * 7);
#no_diff();
no_long_string();
run_tests();
__DATA__
=== TEST 1: accessing nginx variables
--- config
location /t {
content_by_lua '
local function f()
print("uri: ", ngx.var.uri)
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 2: reading ngx.status
--- config
location /t {
content_by_lua '
local function f()
print("uri: ", ngx.status)
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 3: writing ngx.status
--- config
location /t {
content_by_lua '
local function f()
ngx.status = 200
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 4: ngx.req.raw_header
--- config
location /t {
content_by_lua '
local function f()
print("raw header: ", ngx.req.raw_header())
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 5: ngx.req.get_headers
--- config
location /t {
content_by_lua '
local function f()
ngx.req.get_headers()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 6: ngx.req.set_header
--- config
location /t {
content_by_lua '
local function f()
ngx.req.set_header("Foo", 32)
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 7: ngx.req.clear_header
--- config
location /t {
content_by_lua '
local function f()
ngx.req.clear_header("Foo")
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 8: ngx.req.set_uri
--- config
location /t {
content_by_lua '
local function f()
ngx.req.set_uri("/foo")
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 9: ngx.req.set_uri_args
--- config
location /t {
content_by_lua '
local function f()
ngx.req.set_uri_args("foo")
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 10: ngx.redirect()
--- config
location /t {
content_by_lua '
local function f()
ngx.redirect("/foo")
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the context of ngx\.timer/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 11: ngx.exec()
--- config
location /t {
content_by_lua '
local function f()
ngx.exec("/foo")
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the context of ngx\.timer/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 12: ngx.say()
--- config
location /t {
content_by_lua '
local function f()
ngx.say("hello")
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the context of ngx\.timer/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 13: ngx.print()
--- config
location /t {
content_by_lua '
local function f()
ngx.print("hello")
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the context of ngx\.timer/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 14: ngx.flush()
--- config
location /t {
content_by_lua '
local function f()
ngx.flush()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the context of ngx\.timer/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 15: ngx.send_headers()
--- config
location /t {
content_by_lua '
local function f()
ngx.send_headers()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the context of ngx\.timer/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 16: ngx.req.get_uri_args()
--- config
location /t {
content_by_lua '
local function f()
ngx.req.get_uri_args()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 17: ngx.req.read_body
--- config
location /t {
content_by_lua '
local function f()
ngx.req.read_body()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the context of ngx\.timer/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 18: ngx.req.discard_body
--- config
location /t {
content_by_lua '
local function f()
ngx.req.discard_body()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 19: ngx.req.init_body
--- config
location /t {
content_by_lua '
local function f()
ngx.req.init_body()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 20: ngx.header
--- config
location /t {
content_by_lua '
local function f()
ngx.header.Foo = 3
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 21: ngx.on_abort
--- config
location /t {
content_by_lua '
local function f()
ngx.on_abort(f)
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the context of ngx\.timer/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 22: ngx.location.capture
--- config
location /t {
content_by_lua '
local function f()
ngx.location.capture("/")
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the context of ngx\.timer/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 23: ngx.location.capture_multi
--- config
location /t {
content_by_lua '
local function f()
ngx.location.capture_multi{{"/"}}
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the context of ngx\.timer/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 24: ngx.req.get_method
--- config
location /t {
content_by_lua '
local function f()
ngx.req.get_method()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 25: ngx.req.set_method
--- config
location /t {
content_by_lua '
local function f()
ngx.req.set_method(ngx.HTTP_POST)
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 26: ngx.req.http_version
--- config
location /t {
content_by_lua '
local function f()
ngx.req.http_version()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 27: ngx.req.get_post_args
--- config
location /t {
content_by_lua '
local function f()
ngx.req.get_post_args()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 28: ngx.req.get_body_data
--- config
location /t {
content_by_lua '
local function f()
ngx.req.get_body_data()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 29: ngx.req.get_body_file
--- config
location /t {
content_by_lua '
local function f()
ngx.req.get_body_file()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 30: ngx.req.set_body_data
--- config
location /t {
content_by_lua '
local function f()
ngx.req.set_body_data("hello")
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 31: ngx.req.set_body_file
--- config
location /t {
content_by_lua '
local function f()
ngx.req.set_body_file("hello")
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 32: ngx.req.append_body
--- config
location /t {
content_by_lua '
local function f()
ngx.req.append_body("hello")
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 33: ngx.req.finish_body
--- config
location /t {
content_by_lua '
local function f()
ngx.req.finish_body()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 34: ngx.headers_sent
--- config
location /t {
content_by_lua '
local function f()
ngx.headers_sent()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the current context/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 35: ngx.eof
--- config
location /t {
content_by_lua '
local function f()
ngx.eof()
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the context of ngx\.timer/,
"lua ngx.timer expired",
"http lua close fake http connection"
]
=== TEST 36: ngx.req.socket
--- config
location /t {
content_by_lua '
local function f()
local sock, err = ngx.req.socket()
if not sock then
ngx.log(ngx.ERR, "failed to get req sock: ", err)
end
end
local ok, err = ngx.timer.at(0.05, f)
if not ok then
ngx.say("failed to set timer: ", err)
return
end
ngx.say("registered timer")
';
}
--- request
GET /t
--- stap2
F(ngx_http_lua_timer_handler) {
println("lua timer handler")
}
--- response_body
registered timer
--- wait: 0.1
--- no_error_log
[alert]
[crit]
--- error_log eval
[
qr/\[error\] .*? runtime error: \[string "content_by_lua"\]:3: API disabled in the context of ngx\.timer/,
"lua ngx.timer expired",
"http lua close fake http connection"
]