r1850 - trunk/varnish-tools/regress/lib/Varnish/Test

knutroy at projects.linpro.no knutroy at projects.linpro.no
Thu Aug 16 15:07:55 CEST 2007


Author: knutroy
Date: 2007-08-16 15:07:55 +0200 (Thu, 16 Aug 2007)
New Revision: 1850

Modified:
   trunk/varnish-tools/regress/lib/Varnish/Test/Case.pm
   trunk/varnish-tools/regress/lib/Varnish/Test/Client.pm
   trunk/varnish-tools/regress/lib/Varnish/Test/Engine.pm
   trunk/varnish-tools/regress/lib/Varnish/Test/Server.pm
Log:
* Added automatic shutdown of Client-objects used by a test.
* Added more diagnostic messages wrt. left-over input data/junk.


Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Case.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Case.pm	2007-08-16 06:52:08 UTC (rev 1849)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Case.pm	2007-08-16 13:07:55 UTC (rev 1850)
@@ -149,6 +149,11 @@
 	    $self->log(sprintf("%d: FAIL: %s: %s",
 			       $self->{'count'}, $method, $@));
 	}
+	# Make sure all clients have closed their connections.
+	foreach my $client (@{$self->{'engine'}->{'clients'}}) {
+	    $client->shutdown;
+	}
+	@{$self->{'engine'}->{'clients'}} = ();
     }
     $self->{'stop'} = [gettimeofday()];
 }

Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Client.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Client.pm	2007-08-16 06:52:08 UTC (rev 1849)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Client.pm	2007-08-16 13:07:55 UTC (rev 1850)
@@ -45,28 +45,33 @@
 
 use IO::Socket::INET;
 
+our $id_seq = 1;
+
 sub new($$) {
     my ($this, $engine, $attrs) = @_;
     my $class = ref($this) || $this;
 
     my $self = bless({ 'engine' => $engine,
 		       'mux' => $engine->{'mux'},
+		       'id' => $id_seq++,
 		       'requests' => 0,
 		       'responses' => 0 }, $class);
 
+    push(@{$self->{'engine'}->{'clients'}}, $self);
+
     return $self;
 }
 
 sub log($$;$) {
     my ($self, $str, $extra_prefix) = @_;
 
-    $self->{'engine'}->log($self, 'CLI: ' . ($extra_prefix || ''), $str);
+    $self->{'engine'}->log($self, sprintf('CLI[%d]: ', $self->{'id'}) . ($extra_prefix || ''), $str);
 }
 
 sub logf($$;@) {
     my ($self, $fmt, @args) = @_;
 
-    $self->{'engine'}->log($self, 'CLI: ', sprintf($fmt, @args));
+    $self->{'engine'}->log($self, sprintf('CLI[%d]: ', $self->{'id'}), sprintf($fmt, @args));
 }
 
 sub send_request($$;$) {
@@ -97,10 +102,21 @@
 }
 
 sub shutdown($) {
-    my ($self, $how) = @_;
+    my ($self) = @_;
 
-    $self->{'mux'}->close($self->{'fh'});
-    $self->{'fh'} = undef;
+    if (defined($self->{'fh'})) {
+	my $inbuffer = $self->{'mux'}->inbuffer($self->{'fh'});
+
+	if ($inbuffer ne '') {
+	    use Data::Dumper;
+
+	    $self->log('Discarding: ' . Dumper(\$inbuffer));
+	    $self->{'mux'}->inbuffer($self->{'fh'}, '');
+	}
+
+	$self->{'mux'}->close($self->{'fh'});
+	$self->{'fh'} = undef;
+    }
 }
 
 sub mux_input($$$$) {
@@ -204,7 +220,7 @@
 sub mux_close($$) {
     my ($self, $mux, $fh) = @_;
 
-    delete $self->{'fh'};
+    $self->{'fh'} = undef;
 }
 
 1;

Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Engine.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Engine.pm	2007-08-16 06:52:08 UTC (rev 1849)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Engine.pm	2007-08-16 13:07:55 UTC (rev 1850)
@@ -66,6 +66,7 @@
     my $self = bless({ 'mux' => IO::Multiplex->new,
 		       'controller' => $controller,
 		       'config' => \%config,
+		       'clients' => [],
 		       'pending' => [] }, $class);
 
     $self->{'server'} = Varnish::Test::Server->new($self);

Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Server.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Server.pm	2007-08-16 06:52:08 UTC (rev 1849)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Server.pm	2007-08-16 13:07:55 UTC (rev 1850)
@@ -145,6 +145,15 @@
 sub shutdown($) {
     my ($self) = @_;
 
+    my $inbuffer = $self->{'mux'}->inbuffer($self->{'fh'});
+
+    if ($inbuffer ne '') {
+	use Data::Dumper;
+
+	$self->{'server'}->log('Junk or incomplete request. Discarding: ' . Dumper(\$inbuffer));
+	$self->{'mux'}->inbuffer($self->{'fh'}, '');
+    }
+
     $self->{'mux'}->close($self->{'fh'});
 }
 
@@ -224,8 +233,12 @@
     # of request, so if there is anything left in input buffer, it
     # must be incomplete because "mux_input" left it there.
 
-    die "Junk or incomplete request\n"
-	unless $$data eq '';
+    if ($$data ne '') {
+	use Data::Dumper;
+
+	$self->{'server'}->log('Junk or incomplete request. Discarding: ' . Dumper($data));
+	$$data = '';
+    }
 }
 
 1;




More information about the varnish-commit mailing list