r2118 - in trunk/varnish-tools/regress/lib/Varnish/Test: . Case

des at projects.linpro.no des at projects.linpro.no
Thu Oct 18 17:45:34 CEST 2007


Author: des
Date: 2007-10-18 17:45:34 +0200 (Thu, 18 Oct 2007)
New Revision: 2118

Modified:
   trunk/varnish-tools/regress/lib/Varnish/Test/Case.pm
   trunk/varnish-tools/regress/lib/Varnish/Test/Case/LRU.pm
   trunk/varnish-tools/regress/lib/Varnish/Test/Case/POST.pm
   trunk/varnish-tools/regress/lib/Varnish/Test/Case/RePurge.pm
   trunk/varnish-tools/regress/lib/Varnish/Test/Case/Ticket102.pm
   trunk/varnish-tools/regress/lib/Varnish/Test/Case/Ticket128.pm
   trunk/varnish-tools/regress/lib/Varnish/Test/Case/Vary.pm
   trunk/varnish-tools/regress/lib/Varnish/Test/Client.pm
Log:
Separate the act of sending a request from that of receiving a response.
This (along with earlier changes to the client code) allows us to send
multiple requests, then receive the responses in order.


Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Case/LRU.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Case/LRU.pm	2007-10-18 15:40:31 UTC (rev 2117)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Case/LRU.pm	2007-10-18 15:45:34 UTC (rev 2118)
@@ -51,7 +51,8 @@
 
     my $client = $self->new_client();
     my $uri = __PACKAGE__ . "::$n";
-    my $response = $self->get($client, $uri);
+    my $request = $self->get($client, $uri);
+    my $response = $self->wait();
     $self->assert_body(qr/^(?:\Q$uri\E){$repeat}$/);
     $client->shutdown();
     return $response;

Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Case/POST.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Case/POST.pm	2007-10-18 15:40:31 UTC (rev 2117)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Case/POST.pm	2007-10-18 15:45:34 UTC (rev 2118)
@@ -79,6 +79,7 @@
 
     my $client = $self->new_client;
     $self->post($client, "/pipe_me", [], $MAGIC_WORDS);
+    $self->wait();
     $self->assert_ok();
     $self->assert_no_xid();
     $self->assert_body(qr/\Q$MAGIC_WORDS\E/);
@@ -93,12 +94,14 @@
 
     # Warm up the cache
     $self->post($client, "/cache_me");
+    $self->wait();
     $self->assert_ok();
     $self->assert_uncached();
     $self->assert_body(qr/\Q$NOTHING_HAPPENS\E/);
 
     # Verify that the request was cached
     $self->post($client, "/cache_me");
+    $self->wait();
     $self->assert_ok();
     $self->assert_cached();
     $self->assert_body(qr/\Q$NOTHING_HAPPENS\E/);

Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Case/RePurge.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Case/RePurge.pm	2007-10-18 15:40:31 UTC (rev 2117)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Case/RePurge.pm	2007-10-18 15:45:34 UTC (rev 2118)
@@ -58,26 +58,33 @@
 
     # Warm up the cache
     $self->get($client, $KEEP_URL);
+    $self->wait();
     $self->assert_ok();
     $self->get($client, $PURGE_URL);
+    $self->wait();
     $self->assert_ok();
 
     # Verify the state of the cache
     $self->get($client, $KEEP_URL);
+    $self->wait();
     $self->assert_ok();
     $self->assert_cached();
     $self->get($client, $PURGE_URL);
+    $self->wait();
     $self->assert_ok();
     $self->assert_cached();
 
     # Send the purge request
     $self->request($client, 'REPURGE', $PURGE_RE);
+    $self->wait();
 
     # Verify the state of the cache
     $self->get($client, $KEEP_URL);
+    $self->wait();
     $self->assert_ok();
     $self->assert_cached();
     $self->get($client, $PURGE_URL);
+    $self->wait();
     $self->assert_ok();
     $self->assert_uncached();
 

Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Case/Ticket102.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Case/Ticket102.pm	2007-10-18 15:40:31 UTC (rev 2117)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Case/Ticket102.pm	2007-10-18 15:45:34 UTC (rev 2118)
@@ -53,14 +53,17 @@
     my $client = $self->new_client;
 
     $self->get($client, '/');
+    $self->wait();
     $self->assert_body($BODY);
     $self->assert_uncached();
 
     $self->post($client, '/');
+    $self->wait();
     $self->assert_body($BODY);
     $self->assert_cached();
 
     $self->head($client, '/');
+    $self->wait();
     $self->assert_no_body();
     $self->assert_cached();
 

Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Case/Ticket128.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Case/Ticket128.pm	2007-10-18 15:40:31 UTC (rev 2117)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Case/Ticket128.pm	2007-10-18 15:45:34 UTC (rev 2118)
@@ -49,6 +49,7 @@
 
     my $client = $self->new_client;
     $self->get($client, '/');
+    $self->wait();
     $self->assert_code($CODE);
     $self->assert_body(qr/\Q$MESSAGE\E/);
     $client->shutdown();

Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Case/Vary.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Case/Vary.pm	2007-10-18 15:40:31 UTC (rev 2117)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Case/Vary.pm	2007-10-18 15:45:34 UTC (rev 2118)
@@ -49,12 +49,14 @@
 
     foreach my $lang (keys %languages) {
 	$self->get($client, '/', [ 'Accept-Language', $lang]);
+	$self->wait();
 	# $self->assert_uncached();
 	$self->assert_header('Language', $lang);
 	$self->assert_body($languages{$lang});
     }
     foreach my $lang (keys %languages) {
 	$self->get($client, '/', [ 'Accept-Language', $lang]);
+	$self->wait();
 	$self->assert_cached();
 	$self->assert_body($languages{$lang});
     }

Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Case.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Case.pm	2007-10-18 15:40:31 UTC (rev 2117)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Case.pm	2007-10-18 15:45:34 UTC (rev 2118)
@@ -346,6 +346,18 @@
 	$req->content($content);
     }
     $client->send_request($req, 4);
+    return $req;
+}
+
+=head2 wait
+
+Wait for a response to a previously sent request.
+
+=cut
+
+sub wait($) {
+    my ($self) = @_;
+
     my ($ev, $resp) =
 	$self->run_loop('ev_server_timeout',
 			'ev_client_timeout',
@@ -356,7 +368,6 @@
 	if $ev eq 'ev_client_timeout';
     die "Internal error\n"
 	unless $resp && ref($resp) && $resp->isa('HTTP::Response');
-    $resp->request($req);
     return $self->{'cached_response'} = $resp;
 }
 

Modified: trunk/varnish-tools/regress/lib/Varnish/Test/Client.pm
===================================================================
--- trunk/varnish-tools/regress/lib/Varnish/Test/Client.pm	2007-10-18 15:40:31 UTC (rev 2117)
+++ trunk/varnish-tools/regress/lib/Varnish/Test/Client.pm	2007-10-18 15:45:34 UTC (rev 2118)
@@ -133,7 +133,13 @@
 
     $self->{'responses'} += 1;
     $self->logf("%s %s", $response->code(), $response->message());
-    $self->{'engine'}->ev_client_response($self, $response, shift(@{$self->{'pending'}}));
+
+    # Associate the response with what we hope is the correct request
+    my $request = shift(@{$self->{'pending'}})
+	or die "received response while no request pending\n";
+    $response->request($request);
+
+    $self->{'engine'}->ev_client_response($self, $response);
 }
 
 =head2 shutdown




More information about the varnish-commit mailing list