forked from ps249eph7/Nginx
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
523 lines
10 KiB
523 lines
10 KiB
6 months ago
|
# vi:filetype=perl
|
||
|
|
||
|
use lib 'lib';
|
||
|
use Test::Nginx::LWP;
|
||
|
|
||
|
plan tests => repeat_each(2) * 3 * blocks();
|
||
|
|
||
|
no_root_location();
|
||
|
|
||
|
run_tests();
|
||
|
|
||
|
__DATA__
|
||
|
|
||
|
=== TEST 1: the http_check interface, default type
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check interval=3000 rise=1 fall=1 timeout=1000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status
|
||
|
--- response_headers
|
||
|
Content-Type: text/html
|
||
|
--- response_body_like: ^.*Check upstream server number: 6.*$
|
||
|
|
||
|
=== TEST 2: the http_check interface, html
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check interval=3000 rise=1 fall=1 timeout=1000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status html;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status
|
||
|
--- response_headers
|
||
|
Content-Type: text/html
|
||
|
--- response_body_like: ^.*Check upstream server number: 6.*$
|
||
|
|
||
|
=== TEST 3: the http_check interface, csv
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check interval=3000 rise=1 fall=1 timeout=1000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status csv;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status
|
||
|
--- response_headers
|
||
|
Content-Type: text/plain
|
||
|
--- response_body_like: ^.*$
|
||
|
|
||
|
=== TEST 4: the http_check interface, json
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check interval=3000 rise=1 fall=1 timeout=1000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status json;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status
|
||
|
--- response_headers
|
||
|
Content-Type: application/json
|
||
|
--- response_body_like: ^.*"total": 6,.*$
|
||
|
|
||
|
=== TEST 5: the http_check interface, default html, request csv
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check interval=3000 rise=1 fall=1 timeout=1000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status html;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status?format=csv
|
||
|
--- response_headers
|
||
|
Content-Type: text/plain
|
||
|
--- response_body_like: ^.*$
|
||
|
|
||
|
=== TEST 6: the http_check interface, default csv, request json
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check interval=3000 rise=1 fall=1 timeout=1000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status csv;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status?format=json
|
||
|
--- response_headers
|
||
|
Content-Type: application/json
|
||
|
--- response_body_like: ^.*"total": 6,.*$
|
||
|
|
||
|
=== TEST 7: the http_check interface, default json, request html
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check interval=3000 rise=1 fall=1 timeout=1000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status json;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status?format=html
|
||
|
--- response_headers
|
||
|
Content-Type: text/html
|
||
|
--- response_body_like: ^.*Check upstream server number: 6.*$
|
||
|
|
||
|
=== TEST 8: the http_check interface, default json, request htm, bad format
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check interval=3000 rise=1 fall=1 timeout=1000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status json;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status?format=htm
|
||
|
--- response_headers
|
||
|
Content-Type: application/json
|
||
|
--- response_body_like: ^.*"total": 6,.*$
|
||
|
|
||
|
=== TEST 9: the http_check interface, default html, request csv and up
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check interval=3000 rise=1 fall=1 timeout=1000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status html;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status?format=csv&status=up
|
||
|
--- response_headers
|
||
|
Content-Type: text/plain
|
||
|
--- response_body_like: ^[:\.,\w]+\n$
|
||
|
|
||
|
=== TEST 10: the http_check interface, default csv, request json and down
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check interval=3000 rise=1 fall=1 timeout=1000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status csv;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status?format=json&status=down
|
||
|
--- response_headers
|
||
|
Content-Type: application/json
|
||
|
--- response_body_like: ^.*"total": 5,.*$
|
||
|
|
||
|
=== TEST 11: the http_check interface, default json, request html and up
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check interval=3000 rise=1 fall=1 timeout=2000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status json;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status?format=html&status=up
|
||
|
--- response_headers
|
||
|
Content-Type: text/html
|
||
|
--- response_body_like: ^.*Check upstream server number: 1.*$
|
||
|
|
||
|
=== TEST 12: the http_check interface, default json, request html, bad status
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check interval=3000 rise=1 fall=1 timeout=1000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status json;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status?format=html&status=foo
|
||
|
--- response_headers
|
||
|
Content-Type: text/html
|
||
|
--- response_body_like: ^.*Check upstream server number: 6.*$
|
||
|
|
||
|
=== TEST 13: the http_check interface, with check_keepalive_requests configured
|
||
|
--- http_config
|
||
|
upstream backend {
|
||
|
server 127.0.0.1:1971;
|
||
|
server 127.0.0.1:1972;
|
||
|
server 127.0.0.1:1973;
|
||
|
server 127.0.0.1:1970;
|
||
|
server 127.0.0.1:1974;
|
||
|
server 127.0.0.1:1975;
|
||
|
|
||
|
check_keepalive_requests 10;
|
||
|
check interval=3000 rise=1 fall=1 timeout=1000 type=http;
|
||
|
check_http_send "GET / HTTP/1.0\r\nConnection: keep-alive\r\n\r\n";
|
||
|
check_http_expect_alive http_2xx http_3xx;
|
||
|
}
|
||
|
|
||
|
server {
|
||
|
listen 1970;
|
||
|
|
||
|
location / {
|
||
|
root html;
|
||
|
index index.html index.htm;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
--- config
|
||
|
location / {
|
||
|
proxy_pass http://backend;
|
||
|
}
|
||
|
|
||
|
location /status {
|
||
|
check_status;
|
||
|
}
|
||
|
|
||
|
--- request
|
||
|
GET /status
|
||
|
--- response_headers
|
||
|
Content-Type: text/html
|
||
|
--- response_body_like: ^.*Check upstream server number: 6.*$
|