From: Chuck D. Phillips Date: Thu, 15 May 1997 17:35:41 +0000 (-0600) Subject: Fix sleep test: sleep(N) is defined to allow sleeping N-1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=df8c8771ccb7761fbad9e6985c60a1d65491a7ab;p=p5sagit%2Fp5-mst-13.2.git Fix sleep test: sleep(N) is defined to allow sleeping N-1 > But I found minor problem here. In some situation, BSD/OS sleep does > not sleep two seconds (at least in my configuration) and it says > op/sleep.t failure. If I ran the test suite again, it passed and show > me 100% OK result. I just read over t/op/sleep.t. Frankly, I'm suprised I haven't seen it fail on HPUX also. On HPUX, SIGALRM is delivered only _on_ the second. Thus, sleep(1) waits until the next even second, sleep(2) waits until the next even second after that, etc. The side effect of this is that sleep(1) causes a delay of 0-1 second, sleep(2) causes a delay of 1-2 seconds, etc. This *should* cause intermittant failure of the sleep test as currently written. I don't have access to a BSD system, but something similar could be happening there. You could argue that this is a bug in the OS sleep(). However, it means that a loop like... while (foo()) { bar(); sleep(); } ...will cycle once-per-second (as long as bar() executes in < 1 second) instead of cycling once-per-(second + bar()-delay). This could be construed as a feature. p5p-msgid: 199705151735.KAA01143@palrel1.hp.com --- diff --git a/t/op/sleep.t b/t/op/sleep.t index 07cdb82..5f6c4c0 100755 --- a/t/op/sleep.t +++ b/t/op/sleep.t @@ -4,5 +4,5 @@ print "1..1\n"; -$x = sleep 2; +$x = sleep 3; if ($x >= 2 && $x <= 10) {print "ok 1\n";} else {print "not ok 1 $x\n";}