Async-Blackboard
view release on metacpan or search on metacpan
t/03_memory_leaks.t view on Meta::CPAN
$blackboard->put(foo => ++$i);
$blackboard->remove("foo");
! $blackboard->has("foo") or die "foo should have been removed";
$blackboard->put(foo => ++$i);
}
{
my $i = 0;
my $blackboard = Async::Blackboard->build(
watchers => [
foo => sub { shift eq $i or die "foo" },
],
)->clone;
# Make sure that we only dispatch one event.
$blackboard->replace(foo => ++$i) for 1 .. 2;
$blackboard->get("foo") eq 2
or die "get results in changed value after replace";
}
{
my $blackboard = Async::Blackboard->new;
$blackboard->watch(foo => sub {
my ($blackboard) = @_;
$blackboard->put(bar => "Cause Failure");
}
);
$blackboard->watch([qw( foo bar )] => sub { "Saw event for foo bar" });
$blackboard->put(foo => $blackboard);
$blackboard->clear;
$blackboard->hangup;
}
{
my $blackboard = Async::Blackboard->new();
$blackboard->watch(foo => sub { $blackboard->hangup });
$blackboard->watch(foo => sub { die "Expected hangup" });
$blackboard->put(foo => 1);
$blackboard->hungup or die "Blackboard was hung up";
$blackboard->hangup;
}
{
my $blackboard = Async::Blackboard->new();
$blackboard->put(blackboard => $blackboard);
$blackboard->weaken("blackboard");
}
}
=item Watcher in loop
Run most of the tests from t/01_watcher.t in a loop (not using the actual test
harness, that proved too problematic) some 20 times and verify that the
resident footprint and number of tracked objects did not change.
=cut
subtest "Watcher in loop" => sub {
no warnings "redefine";
run_extensive_tests for 1 .. 10;
# This will shut off some of the random output from Devel::Leak;
close STDERR;
my $handle;
BSD::Resource::getrusage->maxrss;
my $start_count = Devel::Leak::NoteSV($handle);
my $resident = BSD::Resource::getrusage->maxrss;
run_extensive_tests for 1 .. 20;
my $end_count = Devel::Leak::CheckSV($handle);
is $start_count, $end_count,
"Object counts are the same";
is BSD::Resource::getrusage->maxrss, $resident,
"We don't seem to leak";
};
=back
=cut
done_testing;
( run in 2.358 seconds using v1.01-cache-2.11-cpan-5c0b1e786e0 )