Mercurial > hg > nginx-tests
changeset 20:c57e8bd7bfc7
Tests: running simple daemons supplied as coderef.
This will allow us to write and run fake backend servers as needed. Daemons
are stopped by SIGTERM when test terminates.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 26 Sep 2008 18:24:28 +0400 |
parents | b331c3113ebb |
children | a2144333aa8f |
files | lib/Test/Nginx.pm |
diffstat | 1 files changed, 29 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/Test/Nginx.pm Fri Sep 26 16:28:04 2008 +0400 +++ b/lib/Test/Nginx.pm Fri Sep 26 18:24:28 2008 +0400 @@ -64,16 +64,26 @@ sleep 1; + $self->{_started} = 1; return $self; } sub stop() { my ($self) = @_; - # terminate nginx by SIGTERM - kill 15, `cat $self->{_testdir}/nginx.pid`; + while ($self->{_daemons} && scalar @{$self->{_daemons}}) { + my $p = shift @{$self->{_daemons}}; + kill 'TERM', $p; + wait; + } + + return $self unless $self->{_started}; + + kill 'TERM', `cat $self->{_testdir}/nginx.pid`; wait; + $self->{_started} = 0; + return $self; } @@ -96,6 +106,23 @@ return $self->write_file($name, $content); } +sub run_daemon($) { + my ($self, $code) = @_; + + my $pid = fork(); + die "Can't fork daemon: $!\n" unless defined $pid; + + if ($pid == 0) { + $code->(); + exit 0; + } + + $self->{_daemons} = [] unless defined $self->{_daemons}; + push @{$self->{_daemons}}, $pid; + + return $self; +} + ############################################################################### sub log_out {