Upgrade to Time::HiRes 1.52.
Rafael Garcia-Suarez [Tue, 28 Oct 2003 08:48:06 +0000 (08:48 +0000)]
p4raw-id: //depot/perl@21567

ext/Time/HiRes/Changes
ext/Time/HiRes/HiRes.pm
ext/Time/HiRes/Makefile.PL
ext/Time/HiRes/t/HiRes.t

index 7c5ae8e..c2bce39 100644 (file)
@@ -1,5 +1,10 @@
 Revision history for Perl extension Time::HiRes.
 
+1.52
+       - In AIX (v?) with perl 5.6.1 the HiRes.t can hang after
+         the subtest 18.  No known analysis nor fix, but added
+         an alarm (that requires fork() and alarm()) to the test.
+
 1.51
        - doc tweaks from mjd (perl change #20456)
        - NCR MP-RAS hints file added (svr4.pl) (perl change #21249)
index 546e381..d04b1a8 100644 (file)
@@ -15,7 +15,7 @@ require DynaLoader;
                 d_usleep d_ualarm d_gettimeofday d_getitimer d_setitimer
                 d_nanosleep);
        
-$VERSION = '1.51';
+$VERSION = '1.52';
 $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
index 04485c7..fc6a155 100644 (file)
@@ -284,7 +284,7 @@ EOD
     }
 
     if ($has_setitimer && $has_getitimer) {
-       print "You have interval timers (both setitimer and getitimer).\n";
+       print "You have interval timers (both setitimer and setitimer).\n";
     } else {
        print "You do not have interval timers.\n";
     }
index 3afefbe..5e4128e 100644 (file)
@@ -30,6 +30,31 @@ import Time::HiRes 'ualarm'          if $have_ualarm;
 
 use Config;
 
+my $have_alarm = $Config{d_alarm};
+my $have_fork  = $Config{d_fork};
+my $waitfor = 60; # 10 seconds is normal.
+my $pid;
+
+if ($have_fork) {
+    print "# Testing process $$\n";
+    print "# Starting the timer process\n";
+    if (defined ($pid = fork())) {
+       if ($pid == 0) { # We are the kid, set up the timer.
+           print "# Timer process $$\n";
+           sleep($waitfor);
+           warn "$0: Time's up!\n";
+           print "# Terminating the testing process\n";
+           kill('TERM', getppid());
+           print "# Timer process exiting\n";
+           exit(0);
+       }
+    } else {
+       warn "$0: fork failed: $!\n";
+    }
+} else {
+    print "# No timer process\n";
+}
+
 my $xdefine = ''; 
 
 if (open(XDEFINE, "xdefine")) {
@@ -131,7 +156,7 @@ else {
     ok 11, $f > 0.4 && $f < 0.9, "slept $f instead of 0.5 secs.";
 }
 
-if (!$have_ualarm || !$Config{d_alarm}) {
+if (!$have_ualarm || !$have_alarm) {
     skip 12..13;
 }
 else {
@@ -337,3 +362,9 @@ if ($have_ualarm) {
     skip 24;
     skip 25;
 }
+
+if (defined $pid) {
+    print "# Terminating the timer process $pid\n";
+    kill('TERM', $pid); # We are done, the timer can go.
+}
+