stas 01/10/18 19:09:24 Modified: t/modperl interp.t t/response/TestModperl interp.pm Log: - update the 'same interpreter' test to use the abstracted functionality which has moved into the core of Apache::Test Revision Changes Path 1.2 +53 -36 modperl-2.0/t/modperl/interp.t Index: interp.t =================================================================== RCS file: /home/cvs/modperl-2.0/t/modperl/interp.t,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- interp.t 2001/10/17 03:20:02 1.1 +++ interp.t 2001/10/19 02:09:24 1.2 @@ -1,49 +1,66 @@ use strict; use warnings FATAL => 'all'; +# run tests through the same interpreter, even if the server is +# running more than one + use Apache::Test; +use Apache::TestUtil; use Apache::TestRequest; - -use constant INTERP => 'X-PerlInterpreter'; - -plan tests => 3, \&have_lwp; - -my $url = "/TestModperl::interp"; - -#request an interpreter instance -my $res = GET $url, INTERP, 'init'; -#use this interpreter id to select the same interpreter in requests below -my $interp = $res->header(INTERP); +plan tests => 12, \&have_lwp; -print "using interp: $interp\n"; +my $url = "/TestModperl::interp1"; -print $res->content; - -my $found_interp = ""; -my $find_interp = sub { - $res->code == 200 and (($found_interp = $res->header(INTERP)) eq $interp); -}; - +# test the tie and re-tie for (1..2) { - my $times = 0; + my $same_interp = Apache::TestRequest::same_interp_tie($url); + ok $same_interp; - do { - #loop until we get a response from our interpreter instance - $res = GET $url, INTERP, $interp; - - #trace info - unless ($find_interp->()) { - print $found_interp ? - "wrong interpreter: $found_interp\n" : - "no interpreter\n"; - } - - if ($times++ > 15) { #prevent endless loop - die "unable to find interp $interp\n"; - } - } while (not $find_interp->()); + my $value = 1; + # test GET over the same same_interp + for (1..2) { + $value++; + my $res = Apache::TestRequest::same_interp_do($same_interp, \&GET, + $url, foo => 'bar'); + ok t_cmp( + $value, + defined $res && $res->content, + "GET over the same interp"); + } +} - print $res->content; #ok $value++ +{ + # test POST over the same same_interp + my $same_interp = Apache::TestRequest::same_interp_tie($url); + ok $same_interp; + + my $value = 1; + for (1..2) { + $value++; + my $res = Apache::TestRequest::same_interp_do($same_interp, \&POST, + $url, [ok => $_+3], + content => "foo"); + ok t_cmp( + $value, + defined $res && $res->content, + "POST over the same interp"); + } } +{ + # test HEAD over the same same_interp + my $same_interp = Apache::TestRequest::same_interp_tie($url); + ok $same_interp; + + my $value = 1; + for (1..2) { + $value++; + my $res = Apache::TestRequest::same_interp_do($same_interp, \&HEAD, + $url); + ok t_cmp( + $same_interp, + defined $res && $res->header(Apache::TestRequest::INTERP_KEY), + "HEAD over the same interp"); + } +} 1.2 +7 -38 modperl-2.0/t/response/TestModperl/interp.pm Index: interp.pm =================================================================== RCS file: /home/cvs/modperl-2.0/t/response/TestModperl/interp.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- interp.pm 2001/10/17 03:20:02 1.1 +++ interp.pm 2001/10/19 02:09:24 1.2 @@ -1,53 +1,22 @@ -package TestModperl::interp; +package TestModperl::interp1; use warnings FATAL => 'all'; use strict; -use APR::UUID (); -use Apache::Const -compile => qw(OK NOT_FOUND SERVER_ERROR); +use Apache::Const -compile => qw(OK); -use constant INTERP => 'X-PerlInterpreter'; +my $value = ''; -my $interp_id = ""; -my $value = 0; - -sub fixup { - my $r = shift; - my $interp = $r->headers_in->get(INTERP); - my $rc = Apache::OK; - - unless ($interp) { - #shouldn't be requesting this without an INTERP header - return Apache::SERVER_ERROR; - } - - my $id = $interp_id; - if ($interp eq 'init') { #first request for an interpreter instance - #unique id for this instance - $interp_id = $id = APR::UUID->new->format; - $value = 0; #reset our global data - } - elsif ($interp ne $interp_id) { - #this is not the request interpreter instance - $rc = Apache::NOT_FOUND; - } - - #so client can save the created instance id or check the existing value - $r->headers_out->set(INTERP, $id); - - return $rc; -} - sub handler { my $r = shift; - #test the actual global data - $value++; - $r->puts("ok $value\n"); + # test the actual global data + $value = Apache::TestHandler::same_interp_counter(); + $r->puts($value); Apache::OK; } 1; __END__ -PerlFixupHandler TestModperl::interp::fixup +PerlFixupHandler Apache::TestHandler::same_interp_fixup