1use strict; 2 3BEGIN { 4 require Time::HiRes; 5 unless(&Time::HiRes::d_nanosleep) { 6 require Test::More; 7 Test::More::plan(skip_all => "no nanosleep()"); 8 } 9} 10 11use Test::More tests => 4; 12BEGIN { push @INC, '.' } 13use t::Watchdog; 14 15eval { Time::HiRes::nanosleep(-5) }; 16like $@, qr/::nanosleep\(-5\): negative time not invented yet/, 17 "negative time error"; 18 19my $one = CORE::time; 20Time::HiRes::nanosleep(10_000_000); 21my $two = CORE::time; 22Time::HiRes::nanosleep(10_000_000); 23my $three = CORE::time; 24ok $one == $two || $two == $three 25 or print("# slept too long, $one $two $three\n"); 26 27SKIP: { 28 skip "no gettimeofday", 2 unless &Time::HiRes::d_gettimeofday; 29 my $f = Time::HiRes::time(); 30 Time::HiRes::nanosleep(500_000_000); 31 my $f2 = Time::HiRes::time(); 32 my $d = $f2 - $f; 33 cmp_ok $d, '>', 0.4, "nanosleep for more than 0.4 sec"; 34 skip "flapping test - more than 0.9 sec could be necessary...", 1 if $ENV{CI}; 35 cmp_ok $d, '<', 0.9 or diag("# slept $d secs $f to $f2\n"); 36} 37 381; 39