r1914 - trunk/varnish-tools/regress/lib/Varnish/Test
knutroy at projects.linpro.no
knutroy at projects.linpro.no
Tue Aug 21 13:48:57 CEST 2007
Author: knutroy
Date: 2007-08-21 13:48:57 +0200 (Tue, 21 Aug 2007)
New Revision: 1914
Modified:
trunk/varnish-tools/regress/lib/Varnish/Test/Engine.pm
trunk/varnish-tools/regress/lib/Varnish/Test/Varnish.pm
Log:
* Connect to management socket after select-loop is started.
* Removed Varnish::Test::Varnish::kill() which we do not use.
(Varnish::Test::Varnish::shutdown() does kill() and more.)
Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Engine.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Engine.pm 2007-08-21 09:23:31 UTC (rev 1913)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Engine.pm 2007-08-21 11:48:57 UTC (rev 1914)
@@ -73,6 +73,13 @@
$self->{'server'} = Varnish::Test::Server->new($self);
$self->{'varnish'} = Varnish::Test::Varnish->new($self);
+ my ($ev) = $self->run_loop('ev_varnish_started', 'ev_varnish_timeout');
+
+ if ($ev eq 'ev_varnish_timeout') {
+ $self->{'varnish'}->shutdown;
+ die "Varnish did not start\n";
+ }
+
return $self;
}
Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Varnish.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Varnish.pm 2007-08-21 09:23:31 UTC (rev 1913)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Varnish.pm 2007-08-21 11:48:57 UTC (rev 1914)
@@ -136,22 +136,12 @@
$self->{'mux'}->add($self->{'stderr'});
$self->{'mux'}->set_callback_object($self, $self->{'stderr'});
- # Wait up to 5 seconds for Varnish to accept our connection
- # on the management port
- for (my $i = 0; $i < 10; ++$i) {
- last if $self->{'socket'} = IO::Socket::INET->
- new(Type => SOCK_STREAM,
- PeerAddr => $engine->{'config'}->{'telnet_address'});
- select(undef, undef, undef, 0.5);
- }
- if (!defined($self->{'socket'})) {
- kill(15, delete $self->{'pid'});
- die "Varnish did not start\n";
- }
- $self->{'mux'}->add($self->{'socket'});
- $self->{'mux'}->set_callback_object($self, $self->{'socket'});
- $self->{'state'} = 'stopped';
+ # If we don't hear "rolling(2)..." from Varnish's STDERR within 5
+ # seconds, something must be wrong.
+ $self->{'mux'}->set_timeout($self->{'stderr'}, 5);
+ $self->{'state'} = 'init';
+
return $self;
}
@@ -277,23 +267,26 @@
if $self->{'pid'};
}
-sub kill($;$) {
- my ($self, $signal) = @_;
-
- $signal ||= 15;
- die "Not running\n"
- unless defined($self->{'pid'});
- kill($signal, $self->{'pid'});
- delete $self->{'pid'};
-}
-
sub mux_input($$$$) {
my ($self, $mux, $fh, $data) = @_;
$self->log($$data);
- $self->{'mux'}->set_timeout($fh, undef);
- if ($fh == $self->{'socket'}) {
+ if ($fh == $self->{'stderr'} and $$data =~ s/^rolling\(2\)\.\.\.//m) {
+ # Varnish appears to have been started correctly, so connect
+ # to management socket.
+ $self->{'mux'}->set_timeout($fh, undef);
+ $self->{'state'} = 'stopped';
+ $self->{'socket'} = IO::Socket::INET
+ ->new('Type' => SOCK_STREAM,
+ 'PeerAddr' => $self->{'engine'}->{'config'}->{'telnet_address'});
+ die "Unable to connect to management socket\n"
+ unless defined($self->{'socket'});
+ $self->{'mux'}->add($self->{'socket'});
+ $self->{'mux'}->set_callback_object($self, $self->{'socket'});
+ $self->{'engine'}->ev_varnish_started;
+ } elsif (exists($self->{'socket'}) and $fh == $self->{'socket'}) {
+ $self->{'mux'}->set_timeout($fh, undef);
die "syntax error\n"
unless ($$data =~ m/^([1-5][0-9][0-9]) (\d+) *$/m);
my ($line, $code, $len) = ($&, $1, $2);
More information about the varnish-commit
mailing list