| # 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" |
| ] |
| |