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