123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640 |
- use Test::Nginx::Socket;
- our $HttpConfig = <<'_EOC_';
- lua_package_path "lib/?.lua;/usr/local/share/lua/5.1/?.lua;;";
- _EOC_
- repeat_each(3);
- plan tests => repeat_each() * (blocks() * 3 + 14);
- run_tests();
- __DATA__
- === TEST 1: do_request blocked
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "127.0.0.1",
- port = 18000,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 1000,
- req_body_size = 1024,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say(result["action"])
- ngx.say(result["status"])
- ngx.say(result["event_id"])
- }
- }
- --- tcp_listen: 18000
- --- tcp_reply eval
- "\x41\x01\x00\x00\x00?\x02\x03\x00\x00\x00405\xa4\x33\x00\x00\x00<!-- event_id: c0c039a7c348486eaffd9e2f9846b66b -->"
- --- request
- GET /t/shell.php
- --- response_body
- ?
- 405
- c0c039a7c348486eaffd9e2f9846b66b
- --- no_error_log
- [error]
- --- error_log
- lua-resty-t1k: successfully connected to t1k server 127.0.0.1:18000
- --- log_level: debug
- === TEST 2: do_request blocked with unix domain socket
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "unix:t1k.sock",
- uds = true,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 1000,
- req_body_size = 1024,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say(result["action"])
- ngx.say(result["status"])
- ngx.say(result["event_id"])
- }
- }
- --- tcp_listen: t1k.sock
- --- tcp_reply eval
- "\x41\x01\x00\x00\x00?\x02\x03\x00\x00\x00405\xa4\x33\x00\x00\x00<!-- event_id: c0c039a7c348486eaffd9e2f9846b66b -->"
- --- request
- GET /t/shell.php
- --- response_body
- ?
- 405
- c0c039a7c348486eaffd9e2f9846b66b
- --- no_error_log
- [error]
- --- error_log
- lua-resty-t1k: successfully connected to t1k server unix:t1k.sock
- --- log_level: debug
- === TEST 3: do_request passed
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "127.0.0.1",
- port = 18000,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 1000,
- req_body_size = 1024,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say(result["action"])
- }
- }
- --- tcp_listen: 18000
- --- tcp_reply eval
- "\xc1\x01\x00\x00\x00."
- --- request
- GET /t
- --- response_body
- .
- --- no_error_log
- [error]
- --- error_log
- lua-resty-t1k: successfully connected to t1k server 127.0.0.1:18000
- --- log_level: debug
- === TEST 4: do_request passed with unix domain socket
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "unix:t1k.sock",
- uds = true,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 1000,
- req_body_size = 1024,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say(result["action"])
- }
- }
- --- tcp_listen: t1k.sock
- --- tcp_reply eval
- "\xc1\x01\x00\x00\x00."
- --- request
- GET /t
- --- response_body
- .
- --- no_error_log
- [error]
- --- error_log
- lua-resty-t1k: successfully connected to t1k server unix:t1k.sock
- --- log_level: debug
- === TEST 5: do_request trim request body
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "127.0.0.1",
- port = 18000,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 1000,
- req_body_size = 0.0625,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say(result["action"])
- }
- }
- --- tcp_listen: 18000
- --- tcp_reply eval
- "\xc1\x01\x00\x00\x00."
- --- request
- GET /t
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
- --- response_body
- .
- --- no_error_log
- [error]
- --- error_log
- lua-resty-t1k: request body is too long: 123 bytes, cut to 64 bytes
- lua-resty-t1k: successfully connected to t1k server 127.0.0.1:18000
- --- log_level: debug
- === TEST 6: do_request trim request body with unix domain socket
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "unix:t1k.sock",
- uds = true,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 1000,
- req_body_size = 0.0625,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say(result["action"])
- }
- }
- --- tcp_listen: t1k.sock
- --- tcp_reply eval
- "\xc1\x01\x00\x00\x00."
- --- request
- GET /t
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
- --- response_body
- .
- --- no_error_log
- [error]
- --- error_log
- lua-resty-t1k: request body is too long: 123 bytes, cut to 64 bytes
- lua-resty-t1k: successfully connected to t1k server unix:t1k.sock
- --- log_level: debug
- === TEST 7: do_request refuse connection
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "127.0.0.1",
- port = 18000,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 1000,
- req_body_size = 0.0625,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say("result: ", result)
- }
- }
- --- request
- GET /t
- --- response_body
- result: nil
- --- error_log
- failed to connect to t1k server 127.0.0.1:18000
- --- log_level: debug
- === TEST 8: do_request refuse connection with unix domain socket
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "unix:t1k.sock",
- uds = true,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 1000,
- req_body_size = 0.0625,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say("result: ", result)
- }
- }
- --- request
- GET /t
- --- response_body
- result: nil
- --- error_log
- failed to connect to t1k server unix:t1k.sock
- --- log_level: debug
- === TEST 9: do_request timeout
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "127.0.0.1",
- port = 18000,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 100,
- req_body_size = 1024,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say("result: ", result)
- }
- }
- --- tcp_listen: 18000
- --- tcp_reply_delay: 200ms
- --- tcp_reply eval
- "\x41\x01\x00\x00\x00?\x02\x03\x00\x00\x00405\xa4\x33\x00\x00\x00<!-- event_id: c0c039a7c348486eaffd9e2f9846b66b -->"
- --- request
- GET /t/shell.php
- --- response_body
- result: nil
- --- error_log
- failed to receive info packet from t1k server 127.0.0.1:18000: timeout
- --- log_level: debug
- === TEST 10: do_request timeout with unix domain socket
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "unix:t1k.sock",
- uds = true,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 100,
- req_body_size = 1024,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say("result: ", result)
- }
- }
- --- tcp_listen: t1k.sock
- --- tcp_reply_delay: 200ms
- --- tcp_reply eval
- "\x41\x01\x00\x00\x00?\x02\x03\x00\x00\x00405\xa4\x33\x00\x00\x00<!-- event_id: c0c039a7c348486eaffd9e2f9846b66b -->"
- --- request
- GET /t/shell.php
- --- response_body
- result: nil
- --- error_log
- failed to receive info packet from t1k server unix:t1k.sock: timeout
- --- log_level: debug
- === TEST 11: do_request invalid action
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "127.0.0.1",
- port = 18000,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 1000,
- req_body_size = 0.0625,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say("action: ", result["action"])
- }
- }
- --- tcp_listen: 18000
- --- tcp_reply eval
- "\xc1\x01\x00\x00\x00~"
- --- request
- GET /t
- --- response_body
- action: ~
- --- no_error_log
- [error]
- --- error_log
- successfully connected to t1k server 127.0.0.1:18000
- --- log_level: debug
- === TEST 12: do_request invalid action with unix domain socket
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "unix:t1k.sock",
- uds = true,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 1000,
- req_body_size = 0.0625,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say("action: ", result["action"])
- }
- }
- --- tcp_listen: t1k.sock
- --- tcp_reply eval
- "\xc1\x01\x00\x00\x00~"
- --- request
- GET /t
- --- response_body
- action: ~
- --- no_error_log
- [error]
- --- error_log
- successfully connected to t1k server unix:t1k.sock
- --- log_level: debug
- === TEST 13: do_request remote address
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- access_by_lua_block {
- local utils = require "resty.t1k.utils"
- ngx.say("ngx.var.http_x_real_ip or ngx.var.remote_addr is ", utils.get_indexed_element(ngx.var.http_x_real_ip) or ngx.var.remote_addr)
- ngx.say("ngx.var.http_x_forwarded_for: 2 or ngx.var.remote_addr is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, 2) or ngx.var.remote_addr)
- ngx.say("ngx.var.http_x_forwarded_for: -2 or ngx.var.remote_addr is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, -2) or ngx.var.remote_addr)
- ngx.say("ngx.var.http_non_existent_header or ngx.var.remote_addr is ", utils.get_indexed_element(ngx.var.http_non_existent_header) or ngx.var.remote_addr)
- }
- }
- --- request
- GET /t
- --- more_headers
- X-Forwarded-For: 1.1.1.1, 2.2.2.2, 2001:db8:3333:4444:5555:6666:7777:8888, 3.3.3.3
- X-Real-IP: 100.100.100.100
- --- response_body
- ngx.var.http_x_real_ip or ngx.var.remote_addr is 100.100.100.100
- ngx.var.http_x_forwarded_for: 2 or ngx.var.remote_addr is 2.2.2.2
- ngx.var.http_x_forwarded_for: -2 or ngx.var.remote_addr is 2001:db8:3333:4444:5555:6666:7777:8888
- ngx.var.http_non_existent_header or ngx.var.remote_addr is 127.0.0.1
- --- no_error_log
- [error]
- === TEST 14: do_request http2
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "127.0.0.1",
- port = 18000,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 1000,
- req_body_size = 1024,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say(result["action"])
- ngx.say(result["status"])
- ngx.say(result["event_id"])
- }
- }
- --- tcp_listen: 18000
- --- tcp_reply eval
- "\x41\x01\x00\x00\x00?\x02\x03\x00\x00\x00405\xa4\x33\x00\x00\x00<!-- event_id: c0c039a7c348486eaffd9e2f9846b66b -->"
- --- http2
- --- request
- GET /t/shell.php
- --- tcp_query eval
- qr/.*HTTP\/2.0.*/
- --- response_body
- ?
- 405
- c0c039a7c348486eaffd9e2f9846b66b
- --- no_error_log
- [error]
- --- error_log
- lua-resty-t1k: successfully connected to t1k server 127.0.0.1:18000
- --- log_level: debug
- === TEST 15: do_request http2 with unix domain socket
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local request = require "resty.t1k.request"
- local t = {
- mode = "block",
- host = "unix:t1k.sock",
- uds = true,
- connect_timeout = 1000,
- send_timeout = 1000,
- read_timeout = 1000,
- req_body_size = 1024,
- keepalive_size = 16,
- keepalive_timeout = 10000,
- }
- local ok, err, result = request.do_request(t)
- if not ok then
- ngx.log(ngx.ERR, err)
- end
- ngx.say(result["action"])
- ngx.say(result["status"])
- ngx.say(result["event_id"])
- }
- }
- --- tcp_listen: t1k.sock
- --- tcp_reply eval
- "\x41\x01\x00\x00\x00?\x02\x03\x00\x00\x00405\xa4\x33\x00\x00\x00<!-- event_id: c0c039a7c348486eaffd9e2f9846b66b -->"
- --- http2
- --- request
- GET /t/shell.php
- --- tcp_query eval
- qr/.*HTTP\/2.0.*/
- --- response_body
- ?
- 405
- c0c039a7c348486eaffd9e2f9846b66b
- --- no_error_log
- [error]
- --- error_log
- lua-resty-t1k: successfully connected to t1k server unix:t1k.sock
- --- log_level: debug
|