Mercurial > hg > nginx-tests
view limit_conn_complex.t @ 476:4e335141aa4b
Tests: fix head() remnants in Vary tests.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 16 Oct 2014 23:36:04 +0400 |
parents | c872b2c9645f |
children | c94fc8e41f5f |
line wrap: on
line source
#!/usr/bin/perl # (C) Sergey Kandaurov # (C) Nginx, Inc. # limit_req based tests for limit_conn module with complex keys. ############################################################################### use warnings; use strict; use Test::More; use IO::Select; BEGIN { use FindBin; chdir($FindBin::Bin); } use lib 'lib'; use Test::Nginx; ############################################################################### select STDERR; $| = 1; select STDOUT; $| = 1; plan(skip_all => 'win32') if $^O eq 'MSWin32'; my $t = Test::Nginx->new()->has(qw/http proxy limit_conn limit_req/); $t->write_file_expand('nginx.conf', <<'EOF'); %%TEST_GLOBALS%% daemon off; events { } http { %%TEST_GLOBALS_HTTP%% limit_req_zone $binary_remote_addr$arg_r zone=req:1m rate=1r/s; limit_conn_zone $binary_remote_addr$arg_c zone=conn:1m; server { listen 127.0.0.1:8080; server_name localhost; location / { limit_conn conn 1; } location /w { limit_conn conn 1; proxy_pass http://127.0.0.1:8080/req; } location /req { limit_req zone=req burst=1; } } } EOF $t->try_run('no complex value')->plan(4); ############################################################################### my $s; # charge limit_req http_get('/req'); # limit_req tests $s = http_get('/req', start => 1); ok(!IO::Select->new($s)->can_read(0.1), 'limit_req same key'); $s = http_get('/req?r=2', start => 1); ok(IO::Select->new($s)->can_read(0.1), 'limit_req different key'); # limit_conn tests $s = http_get('/w', start => 1); like(http_get('/'), qr/^HTTP\/1.. 503 /, 'limit_conn same key'); unlike(http_get('/?c=2'), qr/^HTTP\/1.. 503 /, 'limit_conn different key'); ###############################################################################