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