comparison lib/Test/Nginx.pm @ 144:6e11354cae8a

Tests: rework stopping to make "open socket left" alerts visible. Use SIGQUIT to stop nginx to make sure relevant checks are executed. Use separate functions to stop nginx and daemons to make it possible to stop nginx before daemons.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 15 Dec 2010 19:22:39 +0300
parents 8b62dd9b8615
children 33f6ec774efa
comparison
equal deleted inserted replaced
143:e8546edb0267 144:6e11354cae8a
44 } 44 }
45 45
46 sub DESTROY { 46 sub DESTROY {
47 my ($self) = @_; 47 my ($self) = @_;
48 $self->stop(); 48 $self->stop();
49 $self->stop_daemons();
49 if ($ENV{TEST_NGINX_CATLOG}) { 50 if ($ENV{TEST_NGINX_CATLOG}) {
50 system("cat $self->{_testdir}/error.log"); 51 system("cat $self->{_testdir}/error.log");
51 } 52 }
52 } 53 }
53 54
194 } 195 }
195 196
196 sub stop() { 197 sub stop() {
197 my ($self) = @_; 198 my ($self) = @_;
198 199
200 return $self unless $self->{_started};
201
202 kill 'QUIT', `cat $self->{_testdir}/nginx.pid`;
203 wait;
204
205 $self->{_started} = 0;
206
207 return $self;
208 }
209
210 sub stop_daemons() {
211 my ($self) = @_;
212
199 while ($self->{_daemons} && scalar @{$self->{_daemons}}) { 213 while ($self->{_daemons} && scalar @{$self->{_daemons}}) {
200 my $p = shift @{$self->{_daemons}}; 214 my $p = shift @{$self->{_daemons}};
201 kill 'TERM', $p; 215 kill 'TERM', $p;
202 wait; 216 wait;
203 } 217 }
204
205 return $self unless $self->{_started};
206
207 kill 'TERM', `cat $self->{_testdir}/nginx.pid`;
208 wait;
209
210 $self->{_started} = 0;
211 218
212 return $self; 219 return $self;
213 } 220 }
214 221
215 sub write_file($$) { 222 sub write_file($$) {