php-src/ext/standard/tests/misc/time_sleep_until_basic.phpt
Anatol Belski 8bc3f179ce make timing check more forgiving in these tests
Particularly on slower VMs, the sporadic fails can still happen.
The timing is kept in an uncritical range, but allows the tests
pass there. Mayby, it'd make sense to introduce a new group for
this kind of tests, so tests requiring exact time measurement
can be avoided on unsuitable environments.
2016-12-15 12:20:37 +01:00

34 lines
1.2 KiB
PHP

--TEST--
time_sleep_until() function - basic test for time_sleep_until()
--SKIPIF--
<?php
if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
if (!function_exists("time_sleep_until")) die('skip time_sleep_until() not available');
?>
--CREDITS--
Manuel Baldassarri mb@ideato.it
Michele Orselli mo@ideato.it
#PHPTestFest Cesena Italia on 2009-06-20
--FILE--
<?php
$time = microtime(true) + 2;
var_dump(time_sleep_until( (int)$time ));
$now = microtime(true);
if(substr(PHP_OS, 0, 3) == 'WIN' ) {
// on windows, time_sleep_until has millisecond accuracy while microtime() is accurate
// to 10th of a second. this means there can be up to a .9 millisecond difference
// which will fail this test. this test randomly fails on Windows and this is the cause.
//
// fix: round to nearest millisecond
// passes for up to .5 milliseconds less, fails for more than .5 milliseconds
// should be fine since time_sleep_until() on Windows is accurate to the
// millisecond(.5 rounded up is 1 millisecond)
// In practice, on slower machines even that can fail, so giving yet 50ms or more.
$tmp = round($now, 3);
$now = $tmp >= (int)$time ? $tmp : $tmp + .05;
}
var_dump($now >= (int)$time);
?>
--EXPECT--
bool(true)
bool(true)