stas 2004/09/29 20:32:13
Modified: perl-framework/Apache-Test Changes perl-framework/Apache-Test/lib/Apache TestHandler.pm TestRequest.pm Log: improve the same_interpreter framework to handle response failures while trying to init and later find out the same interpreter. Revision Changes Path 1.172 +3 -0 httpd-test/perl-framework/Apache-Test/Changes Index: Changes =================================================================== RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/Changes,v retrieving revision 1.171 retrieving revision 1.172 diff -u -u -r1.171 -r1.172 --- Changes 25 Sep 2004 01:16:49 -0000 1.171 +++ Changes 30 Sep 2004 03:32:13 -0000 1.172 @@ -8,6 +8,9 @@ =item 1.14-dev +improve the same_interpreter framework to handle response failures +while trying to init and later find out the same interpreter. [Stas] + make sure that 'make distclean' cleans all the autogenerated files [Stas] 1.5 +1 -1 httpd-test/perl-framework/Apache-Test/lib/Apache/TestHandler.pm Index: TestHandler.pm =================================================================== RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/lib/Apache/TestHandler.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -u -r1.4 -r1.5 --- TestHandler.pm 8 Mar 2004 23:44:28 -0000 1.4 +++ TestHandler.pm 30 Sep 2004 03:32:13 -0000 1.5 @@ -70,7 +70,7 @@ unless ($interp) { # shouldn't be requesting this without an INTERP header - return Apache::SERVER_ERROR; + die "can't find the interpreter key"; } my $id = $same_interp_id; 1.99 +16 -4 httpd-test/perl-framework/Apache-Test/lib/Apache/TestRequest.pm Index: TestRequest.pm =================================================================== RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/lib/Apache/TestRequest.pm,v retrieving revision 1.98 retrieving revision 1.99 diff -u -u -r1.98 -r1.99 --- TestRequest.pm 31 Jul 2004 06:17:29 -0000 1.98 +++ TestRequest.pm 30 Sep 2004 03:32:13 -0000 1.99 @@ -523,7 +523,11 @@ my($url) = @_; my $res = GET($url, INTERP_KEY, 'tie'); - + unless ($res->code == 200) { + die sprintf "failed to init the same_handler data (url=%s). " . + "Failed with code=%s, response:\n%s", + $url, $res->code, $res->content; + } my $same_interp = $res->header(INTERP_KEY); return $same_interp; @@ -535,7 +539,7 @@ sub same_interp_do { my($same_interp, $sub, $url, @args) = @_; - die "must pass an interpreter id to work with" + die "must pass an interpreter id, obtained via same_interp_tie()" unless defined $same_interp and $same_interp; push @args, (INTERP_KEY, $same_interp); @@ -546,9 +550,17 @@ do { #loop until we get a response from our interpreter instance $res = $sub->($url, @args); - - if ($res and $res->code == 200) { + die "no result" unless $res; + my $code = $res->code; + if ($code == 200) { $found_same_interp = $res->header(INTERP_KEY) || ''; + } + elsif ($code == 404) { + # try again + } + else { + die sprintf "failed to run the request (url=%s):\n" . + "code=%s, response:\n%s", $url, $code, $res->content; } unless ($found_same_interp eq $same_interp) {