The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*- mode:perl -*-
use strict;
use Test::More;

BEGIN { use_ok 'Parallel::Benchmark' }

my $bm = Parallel::Benchmark->new(
    setup => sub {
        my ($self, $n) = @_;
        if ( $n == 1 ) {
            sleep 2;
            die "died on setup";
        }
    },
    benchmark => sub {
        my ($self, $n) = @_;
        die "died on benchmark" if $n == 2;
        $self->stash->{counter}++;
        1;
    },
    teardown => sub {
        my ($self, $n) = @_;
        die "died on teardown" if $n == 3;
    },
    debug       => 1,
    concurrency => 3,
    time        => 1,
);

my $result = $bm->run;
isa_ok $result => "HASH";
is $result->{stashes}->{1}->{counter}, undef, "1 counter";
is $result->{stashes}->{2}->{counter}, undef, "2 counter";
ok $result->{stashes}->{3}->{counter}, "3 counter";
note explain $result;

done_testing;