From: Artur Bergman Date: Fri, 8 Feb 2002 15:19:15 +0000 (+0000) Subject: Start testing for safe localtime functions, TODO, test more functions. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=83007387b1112d8c8e858eb2722e3e518f1d9896;p=p5sagit%2Fp5-mst-13.2.git Start testing for safe localtime functions, TODO, test more functions. p4raw-id: //depot/perl@14602 --- diff --git a/MANIFEST b/MANIFEST index 6f783cc..8df8c2c 100644 --- a/MANIFEST +++ b/MANIFEST @@ -629,6 +629,7 @@ ext/threads/shared/t/sv_refs.t thread shared variables ext/threads/shared/t/sv_simple.t thread shared variables ext/threads/shared/typemap thread::shared types ext/threads/t/basic.t ithreads +ext/threads/t/libc.t testing libc functions for threadsafetyness ext/threads/t/stress_cv.t Test with multiple threads, coderef cv argument. ext/threads/t/stress_re.t Test with multiple threads, string cv argument and regexes. ext/threads/t/stress_string.t Test with multiple threads, string cv argument. diff --git a/ext/threads/t/libc.t b/ext/threads/t/libc.t new file mode 100644 index 0000000..409945a --- /dev/null +++ b/ext/threads/t/libc.t @@ -0,0 +1,60 @@ + +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + require Config; import Config; + unless ($Config{'useithreads'}) { + print "1..0 # Skip: no useithreads\n"; + exit 0; + } +} + +use ExtUtils::testlib; +use strict; +BEGIN { $| = 1; print "1..11\n"}; + +use threads; +use threads::shared; +my $i = 10; +my $y = 20000; +my %localtime; +for(0..$i) { + $localtime{$_} = localtime($_); +}; +my $mutex = 1; +share($mutex); +sub localtime_r { +# print "Waiting for lock\n"; + lock($mutex); +# print "foo\n"; + my $retval = localtime(shift()); +# unlock($mutex); + return $retval; +} +my @threads; +for(0..$i) { + my $thread = threads->create(sub { + my $arg = $_; + my $localtime = $localtime{$arg}; + my $error = 0; + for(0..$y) { + my $lt = localtime($arg); + if($localtime ne $lt) { + $error++; + } + } + lock($mutex); + if($error) { + print "not ok $mutex # not a safe localtime\n"; + } else { + print "ok $mutex\n"; + } + $mutex++; + }); + push @threads, $thread; +} + +for(@threads) { + $_->join(); +} +