Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

148 lines (119 sloc) 3.458 kb
# vim:set ft= ts=4 sw=4 et fdm=marker:
use lib 'lib';
use Test::Nginx::Socket;
repeat_each(2);
plan tests => blocks() * repeat_each() * 2;
$ENV{TEST_NGINX_CLIENT_PORT} ||= server_port();
$ENV{TEST_NGINX_HTML_DIR} ||= html_dir();
no_long_string();
#no_shuffle();
run_tests();
__DATA__
=== TEST 1: connection refused (unix domain socket)
--- config
location /test {
content_by_lua '
local sock = ngx.socket.tcp()
local ok, err = sock:connect("unix:/tmp/nosuchfile.sock")
ngx.say("connect: ", ok, " ", err)
local bytes
bytes, err = sock:send("hello")
ngx.say("send: ", bytes, " ", err)
local line
line, err = sock:receive()
ngx.say("receive: ", line, " ", err)
ok, err = sock:close()
ngx.say("close: ", ok, " ", err)
';
}
--- request
GET /test
--- response_body
connect: nil no such file or directory
send: nil closed
receive: nil closed
close: nil closed
=== TEST 2: invalid host argument
--- http_server
server {
listen /tmp/test-nginx.sock;
default_type 'text/plain';
server_tokens off;
location /foo {
echo foo;
more_clear_headers Date;
}
}
--- config
location /test {
content_by_lua '
local sock = ngx.socket.tcp()
local ok, err = sock:connect("/tmp/test-nginx.sock")
if not ok then
ngx.say("failed to connect: ", err)
return
end
ngx.say("connected: ", ok)
';
}
--- request
GET /test
--- response_body
failed to connect: failed to parse host name "/tmp/test-nginx.sock": invalid host
=== TEST 3: sanity
--- http_config
server {
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock;
default_type 'text/plain';
server_tokens off;
location /foo {
content_by_lua 'ngx.say("foo")';
more_clear_headers Date;
}
}
--- config
location /test {
content_by_lua '
local sock = ngx.socket.tcp()
local ok, err = sock:connect("unix:$TEST_NGINX_HTML_DIR/nginx.sock")
if not ok then
ngx.say("failed to connect: ", err)
return
end
ngx.say("connected: ", ok)
local req = "GET /foo HTTP/1.0\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n"
-- req = "OK"
local bytes, err = sock:send(req)
if not bytes then
ngx.say("failed to send request: ", err)
return
end
ngx.say("request sent: ", bytes)
while true do
print("calling receive")
local line, err = sock:receive()
if line then
ngx.say("received: ", line)
else
ngx.say("failed to receive a line: ", err)
break
end
end
ok, err = sock:close()
ngx.say("close: ", ok, " ", err)
';
}
--- request
GET /test
--- response_body
connected: 1
request sent: 57
received: HTTP/1.1 200 OK
received: Server: nginx
received: Content-Type: text/plain
received: Content-Length: 4
received: Connection: close
received:
received: foo
failed to receive a line: closed
close: nil closed
Jump to Line
Something went wrong with that request. Please try again.