#!/usr/bin/env perl
use strict;
use warnings;
use Time::HiRes qw/gettimeofday/;
use Test::More tests => 1;
# Without decent timers, we can't generate good entropy. Verify that our
# timers return at least 1000 unique values. This doesn't guarantee that they
# have 1ms or better accuracy, but it does indicate our method will work.
# Very old versions of Time::HiRes on Windows will fail this, but our prereqs
# should prevent that. Old versions of Windows (pre-NT) will also fail here.
my $time_beg = gettimeofday();
my %msecs;
my ($nuniq, $ntimes) = (0, 0);
my $finalsec = int($time_beg) + 15; # Stop after 15 seconds no matter what.
while ($nuniq < 10_000) {
my($sec, $usec) = gettimeofday();
$ntimes++;
$nuniq++ unless exists $msecs{$usec};
undef $msecs{$usec};
last if $sec >= $finalsec || ($nuniq >= 1000 && $ntimes > 200_000);
}
my $time_end = gettimeofday();
my $nusecs = int( 1e6 * ($time_end - $time_beg) );
my $fsecs = sprintf("%.6f", $nusecs/1000000);
diag "$ntimes calls took ${fsecs}s to find $nuniq unique timer values";
# With configuration in Makefile.PL, we don't want to fail this any more.
#ok($nuniq >= 1000, "At least 1000 unique timer values seen");
ok(1);