use Test; use Algorithm::TokenBucket; plan 8; my $bucket = new_bucket(rate => 4/1, burst_size => 4); is $bucket(), 4, 'info_rate init'; is $bucket(), 4, 'burst_size init'; # -- Note! This test may break if the OS suspends for > 0.3s or < 0.3s! sleep 1; ok $bucket(0), '0 conforms'; ok $bucket(4), '4 conforms'; ok !$bucket(5), '5 does not conform'; $bucket(1); ok !$bucket(4), '4 no more conforms'; ok $bucket(3), 'only 3 does'; $bucket(1); $bucket(1); $bucket(1); skip "skipping test depending on accurate time() and low system load"; #ok !$bucket(1), 'even 1 conforms no more';