Permalink
Fetching contributors…
Cannot retrieve contributors at this time
272 lines (218 sloc) 3.99 KB
# vi:filetype=
use Test::Nginx::Socket;
repeat_each(2);
plan tests => repeat_each() * (3 * blocks());
no_long_string();
run_tests();
#no_diff();
__DATA__
=== TEST 1: sanity
--- config
location /bar {
set $a 1;
set_rotate $a 1 3;
set $b 2;
set_rotate $b 1 3;
set $c 3;
set_rotate $c 1 3;
set $d 0;
set_rotate $d 1 3;
set $e 1;
set_rotate $e 3 5;
echo "a = $a";
echo "b = $b";
echo "c = $c";
echo "d = $d";
echo "e = $e";
}
--- request
GET /bar
--- response_body
a = 2
b = 3
c = 1
d = 1
e = 3
--- no_error_log
[error]
=== TEST 2: bad current value
--- config
location /bar {
set $a abc;
set_rotate $a 1 3;
echo "a = $a";
}
--- request
GET /bar
--- response_body_like: ^a = [12]$
--- error_log
set_rotate: bad current value: "abc"
=== TEST 3: bad "from" value
--- config
location /bar {
set $a 2;
set_rotate $a abc 3;
echo "a = $a";
}
--- request
GET /bar
--- response_body_like: 500 Internal Server Error
--- error_code: 500
--- error_log
set_rotate: bad "from" argument value: "abc"
=== TEST 4: bad "to" argument value
--- config
location /bar {
set $a 2;
set_rotate $a 1 abc;
echo "a = $a";
}
--- request
GET /bar
--- response_body_like: 500 Internal Server Error
--- error_code: 500
--- error_log
set_rotate: bad "to" argument value: "abc"
=== TEST 5: when no current value is given
--- config
location /incr {
set_rotate $a 1 3;
echo "a = $a";
}
location /t {
echo_location /incr;
echo_location /incr;
echo_location /incr;
echo_location /incr;
echo_location /incr;
echo_location /incr;
}
--- request
GET /t
--- response_body
a = 1
a = 2
a = 3
a = 1
a = 2
a = 3
--- no_error_log
[error]
=== TEST 6: when no current value is given (starting from 0)
--- config
location /incr {
set_rotate $a 0 2;
echo "a = $a";
}
location /t {
echo_location /incr;
echo_location /incr;
echo_location /incr;
echo_location /incr;
echo_location /incr;
echo_location /incr;
}
--- request
GET /t
--- response_body
a = 0
a = 1
a = 2
a = 0
a = 1
a = 2
--- no_error_log
[error]
=== TEST 7: when a non-integer string value is given
--- config
location /incr {
set $a "hello";
set_rotate $a 0 2;
echo "a = $a";
}
location /t {
echo_location /incr;
echo_location /incr;
echo_location /incr;
echo_location /incr;
echo_location /incr;
echo_location /incr;
}
--- request
GET /t
--- response_body
a = 0
a = 1
a = 2
a = 0
a = 1
a = 2
--- error_log
set_rotate: bad current value: "hello"
=== TEST 8: when an empty string value is given
--- config
location /incr {
set $a "";
set_rotate $a 0 2;
echo "a = $a";
}
location /t {
echo_location /incr;
echo_location /incr;
echo_location /incr;
echo_location /incr;
echo_location /incr;
echo_location /incr;
}
--- request
GET /t
--- response_body
a = 0
a = 1
a = 2
a = 0
a = 1
a = 2
--- no_error_log
[error]
=== TEST 9: value persistence is per-location
--- config
location /incr {
set_rotate $a 0 2;
echo "a = $a";
}
location /incr2 {
set_rotate $a 0 2;
echo "a = $a";
}
location /t {
echo_location /incr;
echo_location /incr2;
echo_location /incr;
echo_location /incr2;
echo_location /incr;
echo_location /incr2;
echo_location /incr;
echo_location /incr2;
echo_location /incr;
echo_location /incr2;
echo_location /incr;
echo_location /incr2;
}
--- request
GET /t
--- response_body
a = 0
a = 0
a = 1
a = 1
a = 2
a = 2
a = 0
a = 0
a = 1
a = 1
a = 2
a = 2
--- no_error_log
[error]