Mercurial > hg > nginx-tests
comparison lib/Test/Nginx.pm @ 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 | c6c36d7a4d90 |
children | 89b00444c168 |
comparison
equal
deleted
inserted
replaced
19:b331c3113ebb | 20:c57e8bd7bfc7 |
---|---|
62 | 62 |
63 # wait for nginx to start | 63 # wait for nginx to start |
64 | 64 |
65 sleep 1; | 65 sleep 1; |
66 | 66 |
67 $self->{_started} = 1; | |
67 return $self; | 68 return $self; |
68 } | 69 } |
69 | 70 |
70 sub stop() { | 71 sub stop() { |
71 my ($self) = @_; | 72 my ($self) = @_; |
72 | 73 |
73 # terminate nginx by SIGTERM | 74 while ($self->{_daemons} && scalar @{$self->{_daemons}}) { |
74 kill 15, `cat $self->{_testdir}/nginx.pid`; | 75 my $p = shift @{$self->{_daemons}}; |
76 kill 'TERM', $p; | |
77 wait; | |
78 } | |
79 | |
80 return $self unless $self->{_started}; | |
81 | |
82 kill 'TERM', `cat $self->{_testdir}/nginx.pid`; | |
75 wait; | 83 wait; |
84 | |
85 $self->{_started} = 0; | |
76 | 86 |
77 return $self; | 87 return $self; |
78 } | 88 } |
79 | 89 |
80 sub write_file($$) { | 90 sub write_file($$) { |
92 my ($self, $name, $content) = @_; | 102 my ($self, $name, $content) = @_; |
93 | 103 |
94 $content =~ s/%%TESTDIR%%/$self->{_testdir}/gms; | 104 $content =~ s/%%TESTDIR%%/$self->{_testdir}/gms; |
95 | 105 |
96 return $self->write_file($name, $content); | 106 return $self->write_file($name, $content); |
107 } | |
108 | |
109 sub run_daemon($) { | |
110 my ($self, $code) = @_; | |
111 | |
112 my $pid = fork(); | |
113 die "Can't fork daemon: $!\n" unless defined $pid; | |
114 | |
115 if ($pid == 0) { | |
116 $code->(); | |
117 exit 0; | |
118 } | |
119 | |
120 $self->{_daemons} = [] unless defined $self->{_daemons}; | |
121 push @{$self->{_daemons}}, $pid; | |
122 | |
123 return $self; | |
97 } | 124 } |
98 | 125 |
99 ############################################################################### | 126 ############################################################################### |
100 | 127 |
101 sub log_out { | 128 sub log_out { |