Skip to content

Instantly share code, notes, and snippets.

@aklaswad
Created March 17, 2019 02:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aklaswad/d613d1bf9f0900664de3a4ac3735fa6a to your computer and use it in GitHub Desktop.
Save aklaswad/d613d1bf9f0900664de3a4ac3735fa6a to your computer and use it in GitHub Desktop.
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More tests => 10;
use Data::ObjectDriver::Driver::DBI;
use Parallel::ForkManager;
sub main {
# Init dbh and make sure it was connected in parent process
my $driver = Data::ObjectDriver::Driver::DBI->new(
dsn => 'dbi:mysql:database=test',
username => 'root'
);
my $dbh = $driver->rw_handle;
$dbh->do('SELECT 1');
# Prepare fork manager
my $pm = Parallel::ForkManager->new( 10 );
$pm->run_on_finish( sub {
my ($pid, $exit_code, $ident, $exit_signal, $core_dump, $data) = @_;
if (defined $data) {
my ($ret,$i) = @$data;
is( $ret, $i, "Can get client unique value from ${i}th child" );
}
});
for my $i (1..10) {
$pm->start and next;
my $dbh = $driver->rw_handle;
$dbh->do('SELECT LAST_INSERT_ID(' . $i . ');');
sleep 1;
my ($ret) = $dbh->selectrow_array('SELECT LAST_INSERT_ID();');
$pm->finish(0, [$ret,$i]);
}
$pm->wait_all_children;
}
main();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment