Mercurial > hg > nginx-tests
changeset 627:cb35a9ec4428
Tests: adjusted proxy_limit_rate test timeouts.
Sometimes, on slow hosts, it may get quite some time to complete request
delayed with proxy_limit_rate, and we still need to known how much it took.
The timeout value used internally in the http() library routine is not enough.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 09 Jul 2015 13:46:43 +0300 |
parents | 5f9dfe85a1f2 |
children | 0940773278c7 |
files | proxy_limit_rate.t |
diffstat | 1 files changed, 28 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/proxy_limit_rate.t +++ b/proxy_limit_rate.t @@ -58,7 +58,8 @@ EOF ############################################################################### -my $r = http_get('/'); +my $s = http_get('/', start => 1); +my $r = http_end_gentle($s); my ($t1) = $r =~ /X-Msec: (\d+)/; my $diff = time() - $t1; @@ -69,3 +70,29 @@ cmp_ok(abs($diff - 3), '<=', 1, 'proxy_l like($r, qr/^(XXXXXXXXXX){4000}\x0d?\x0a?$/m, 'response body'); ############################################################################### + +sub http_end_gentle { + my ($s) = @_; + my $reply; + + eval { + local $SIG{ALRM} = sub { die "timeout\n" }; + local $SIG{PIPE} = sub { die "sigpipe\n" }; + alarm(8); + + local $/; + $reply = $s->getline(); + + alarm(0); + }; + alarm(0); + if ($@) { + log_in("died: $@"); + return undef; + } + + log_in($reply); + return $reply; +} + +###############################################################################