Mercurial > hg > nginx-tests
diff lib/Test/Nginx.pm @ 50:b494fe5b12d1
Tests: add waitforfile() and waitforsocket() functions.
This functions add ability to wait for external daemons to start before running
tests.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 19 Nov 2008 17:31:03 +0300 |
parents | b01ae969181b |
children | d59ae7bab0a6 |
line wrap: on
line diff
--- a/lib/Test/Nginx.pm +++ b/lib/Test/Nginx.pm @@ -98,17 +98,45 @@ sub run(;$) { # wait for nginx to start - for (1 .. 30) { - select undef, undef, undef, 0.05; - last if -e "$self->{_testdir}/nginx.pid"; - } - - die "Can't start nginx" unless -e "$self->{_testdir}/nginx.pid"; + $self->waitforfile("$testdir/nginx.pid") + or die "Can't start nginx"; $self->{_started} = 1; return $self; } +sub waitforfile($) { + my ($self, $file) = @_; + + # wait for file to appear + + for (1 .. 30) { + return 1 if -e $file; + select undef, undef, undef, 0.1; + } + + return undef; +} + +sub waitforsocket($) { + my ($self, $peer) = @_; + + # wait for socket to accept connections + + for (1 .. 30) { + my $s = IO::Socket::INET->new( + Proto => 'tcp', + PeerAddr => $peer + ); + + return 1 if defined $s; + + select undef, undef, undef, 0.1; + } + + return undef; +} + sub stop() { my ($self) = @_;