The failures are not exclusive to FreeBSD; I was able to generate fails on Linux systems (reports will be visible in a few hours). Maybe an interesting data point is that all of my smokers run in virtual machines (VirtualBox and Xen), and it's well known that timing is problematic in virtual environments. However, I was also able to get a test failure on a physical Linux box. It does not seem that failures happen due to heavy load; I see both: passing tests when another smoker process is running in the same VM, and failing tests if the whole system is nearly idle.
Here's a run of basic.t on a FreeBSD 10.1 system, prefixed with the fractional epoch time (using
https://metacpan.org/pod/distribution/App-Timestamper/bin/timestamper ):
$ perl5.20.3 -Mblib t/basic.t |& /usr/perl5.20.3p/bin/timestamper
1444244257.130156994 1..30
1444244257.137207031 ok 1 - use Algorithm::TokenBucket;
1444244257.142980099 ok 2 - An object of class 'Algorithm::TokenBucket' isa 'Algorithm::TokenBucket'
1444244257.148297071 ok 3 - info_rate init
1444244257.151695013 ok 4 - burst_size init
1444244257.162719011 ok 5 - check_time init
1444244257.173449993 ok 6 - tokens init
1444244257.178256989 not ok 7 - ~0 tokens in new bucket
1444244257.179416895 # Failed test '~0 tokens in new bucket'
1444244257.180851936 # at t/basic.t line 17.
1444244257.182490110 # '1.51029825210571'
1444244257.183644056 # <
1444244257.186130047 # '0.99'
1444244257.309364080 ok 8 - 0 conforms
1444244257.323513985 ok 9 - 4 conforms
1444244257.354871988 ok 10 - 5 does not conform
1444244257.366426945 ok 11 - 4 no more conforms
1444244257.402510881 ok 12 - only 3 does
1444244257.449511051 ok 13 - ~3 tokens indeed
1444244257.456573963 ok 14 - ~0 tokens again
1444244257.466741085 ok 15 - 1.1 conforms no more
1444244257.470427990 ok 16 - -= 1000 drained bucket to 0
1444244259.323415995 ok 17 - 50 or less in 2 seconds
1444244259.325280905 ok 18 - state[0]
1444244259.327215910 ok 19 - state[1]
1444244259.328716040 ok 20 - state[2]
1444244259.330478907 ok 21 - state[3]
1444244259.332042933 ok 22 - An object of class 'Algorithm::TokenBucket' isa 'Algorithm::TokenBucket'
1444244259.333476067 ok 23 - restored bucket is almost empty
1444244259.437441111 ok 24 - restored bucket works
1444244259.438899994 ok 25 - no wait time for 1
1444244259.440474033 ok 26 - wait time
1444244259.442068100 ok 27 - bigger wait time for a bigger number
1444244259.443654060 ok 28 - until() is sort of accurate
1444244259.453411102 ok 29 - state is the same
1444244259.454673052 ok 30 - no warnings
1444244259.455193043 # Looks like you failed 1 test of 30.
On 2015-10-06 12:03:04, KAPPA wrote:
Show quoted text> Hi, Slaven.
>
> I still see failures for Algorithm::TokenBucket from your FreeBSD
> boxes.
>
> Could you please help me a little with this?
>
> Could you run those tests on those boxes by hand and preferable under
> "time"?
>
> My current idea is that your boxes are so overloaded that my time-
> sensitive tests fail. Since this is a real-time module, the tests may
> break if there are literally seconds between consecutive lines.
>
> So, are those testing boxes really under heavy load running thousands
> of tests simultaneously?
>
>
> 10 Nis 2011 Pzr, 07:40:10 tarihinde, SREZIC yazdı: