Algorithm-TokenBucket
view release on metacpan or search on metacpan
cmp_ok(my $t = $bucket1->until(500), '>=', 5, 'wait time');
cmp_ok(my $t2 = $bucket1->until(1000), '>=', $t, 'bigger wait time for a bigger number');
cmp_ok( ( ( $t2 - $t ) - ( 500 / 25 ) ), '<=', 1, 'until() is sort of accurate');
SKIP: {
skip "no Storable", 1 unless eval { require Storable };
my $bucket1_clone = Storable::thaw(Storable::freeze($bucket1));
is_deeply(
# allows for some error margin due to serialization
[ map { (int($_ * 100)/100) } $bucket1->state ],
[ map { (int($_ * 100)/100) } $bucket1_clone->state ],
"state is the same"
);
}
( run in 0.693 second using v1.01-cache-2.11-cpan-65fba6d93b7 )