Mercurial > hg > nginx-tests
view http_variables.t @ 1291:3bc5df417f62
Tests: adjusted proxy variables time checks.
Strict ">= 1" check may fail if timekeeping is not precise, and sleep(1)
results in something like 0.999 time in headers. In particular, this
happens when using clock_gettime(CLOCK_MONOTONIC_COARSE) for ngx_current_msec
on Ubuntu 16.04. To fix this, sleep(1) replaced with select(1.1).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 26 Feb 2018 18:09:32 +0300 |
parents | cb46ac65d50e |
children | 4bc1490cedbc |
line wrap: on
line source
#!/usr/bin/perl # (C) Maxim Dounin # (C) Valentin Bartenev # Tests for http variables. ############################################################################### use warnings; use strict; use Test::More; BEGIN { use FindBin; chdir($FindBin::Bin); } use lib 'lib'; use Test::Nginx; ############################################################################### select STDERR; $| = 1; select STDOUT; $| = 1; my $t = Test::Nginx->new()->has(qw/http rewrite proxy/)->plan(5); $t->write_file_expand('nginx.conf', <<'EOF'); %%TEST_GLOBALS%% daemon off; events { } http { %%TEST_GLOBALS_HTTP%% log_format cc "$uri: $sent_http_cache_control"; server { listen 127.0.0.1:8080; server_name localhost; access_log %%TESTDIR%%/cc.log cc; location / { return 200 OK; } location /set { add_header Cache-Control max-age=3600; add_header Cache-Control private; add_header Cache-Control must-revalidate; return 200 OK; } location /redefine { expires epoch; proxy_pass http://127.0.0.1:8080/set; } location /limit_rate { set $limit_rate 40k; add_header X-Rate $limit_rate; return 200 OK; } } } EOF $t->run(); ############################################################################### http_get('/'); http_get('/../bad_uri'); http_get('/redefine'); # $limit_rate is a special variable that has its own set_handler / get_handler like(http_get('/limit_rate'), qr/X-Rate: 40960/, 'limit_rate handlers'); $t->stop(); my $log = $t->read_file('cc.log'); like($log, qr!^: -$!m, 'no uri'); like($log, qr!^/: -$!m, 'no header'); like($log, qr!^/set: max-age=3600, private, must-revalidate$!m, 'multi headers'); like($log, qr!^/redefine: no-cache$!m, 'ignoring headers with (hash == 0)'); ###############################################################################