Fix sleep test: sleep(N) is defined to allow sleeping N-1
authorChuck D. Phillips <cdp@hpescdp.fc.hp.com>
Thu, 15 May 1997 17:35:41 +0000 (11:35 -0600)
committerChip Salzenberg <chip@atlantic.net>
Thu, 15 May 1997 22:15:00 +0000 (10:15 +1200)
commitdf8c8771ccb7761fbad9e6985c60a1d65491a7ab
tree0deea8699c46a0d648d73cdd59549e27c82a7212
parent270f084f72d3854a3d222dae2eafa2c6318f6bfc
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
t/op/sleep.t