AnyEvent-ForkObject

 view release on metacpan or  search on metacpan

t/02_dbi.t  view on Meta::CPAN

                $dbh->do('INSERT INTO tbl (txt) VALUES (?)', undef, rand_str,
                    sub {
                        my ($s, $res) = @_;
                        unless ($s eq 'ok') {
                            diag explain \@_;
                            $ok = 0;
                        }

                        if (++$count == 50) {
                            ok $ok, '50 records were inserted';

                            $dbh->selectall_arrayref(
                                'SELECT * FROM tbl', { Slice => {} },
                                sub {
                                    my ($s, $res) = @_;
                                    ok $s eq 'ok', 'SELECT was done';
                                    ok @$res == 50, 'Fetched all rows';
                                    ok 'HASH' eq ref $res->[0],
                                        'Slice works properly';

                                    $cv->send;
                                }
                            );

                        }
                    }
                );

            }

        });
    }
);

$cv->recv;

$cv = condvar AnyEvent;
$dbh->prepare('SELECT * FROM tbl', sub {
    my ($s, $sth) = @_;
    ok $s eq 'ok', 'Prepare statement';
    $sth->execute(sub {
        my ($s, $rv) = @_;
        ok $s eq 'ok', 'Execute statement';

        my $ok = 1;
        async_repeat 50, sub {
            my ($guard, $index, $first, $last) = @_;

            $sth->fetchrow_hashref(sub {
                undef $guard;
                my ($s, $row) = @_;
                $ok = 0 unless $s eq 'ok';
                $ok = 0 unless 'HASH' eq ref $row;
                $ok = 0 unless $row->{id} == $index + 1;

                if ($last) {
                    ok $ok, 'All data fetched';
                    undef $sth;
                    undef $dbh;
                    my $t;
                    $t = AE::timer 0.5, 0 => sub {
                        undef $t;
                        $cv->send;
                    }
                }
            });

        };

    });
});

$cv->recv;


sub rand_str()
{
    my $letters = q!qwertyuiopasdfghjkl;'][zxcvbnm,./йцукенгшщзхъфывапролджэ!;
    my $str = '';
    $str .= substr $letters, int(rand length $letters), 1 for 0 .. 3 + rand 100;
    return $str;
}



( run in 0.606 second using v1.01-cache-2.11-cpan-85f18b9d64f )