perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stas Bekman <s...@stason.org>
Subject Re: [mp2] how should we write tests under threads
Date Wed, 20 Apr 2005 00:17:54 GMT
Stas Bekman wrote:
[...]
> I just need to figure out why Test::Builder doesn't do proper sub-test 
> counting :9(
> 
> Test output counter mismatch [test 32]
> ok 13 - tid: 0: pass 1:
> Test output counter mismatch [test 33]
> ok 14 - tid: 0: pass 2:
> Test output counter mismatch [test 34]
> ok 15 - tid: 0: pass 1:
> ...
> 
> even though threads.pm was loaded before Test::Builder.

looks like someone was loading Test::Builder before we had a chance to 
boot threads.pm, fixed by moving threads.pm loading to the very beginning 
of the startup file.

I've further simplified the buffering by creating a new class:

package Apache::TestToStringRequest;

sub new {
     my($class, $r) = @_;
     die "\$r is required" unless $r;
     Apache::TestToString->start;
     return bless \$r, __PACKAGE__;
}

sub DESTROY {
     my $self = shift;
     $$self->print(Apache::TestToString->finish);
}

So now the test needs to only create the object, and its DESTROY will 
flush the data (not very intuitive though)

sub handler {
     my $r = shift;

     # this buffers the ok's and will flush them out on sub's end
     my $x = Apache::TestToStringRequest->new($r);

     plan tests => $tests;

     read_test();
     threads->new(\&read_test)->join() for 1..$threads;
     read_test();

     Apache2::Const::OK;
}

should probably use $r->pool->cleanup_register(sub { untie *STDOUT }); 
instead, in which case no object will be needed. Though it won't work 
under mp1. What should go with?


-- 
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org


Mime
View raw message