AnyEvent-Gearman-WorkerPool

 view release on metacpan or  search on metacpan

lib/AnyEvent/Gearman/WorkerPool.pm  view on Meta::CPAN

    DEBUG __PACKAGE__." start";
    my $self = shift;
    foreach my $key (keys %{$self->slotmap}){
        my $slots = $self->slots($key);
        my $conf = $self->conf($key);
        my $min = $conf->{min};
        foreach my $i ( 0 .. $min-1 ){
            $slots->[$i]->start();
        }
    }
    my $iw = AE::timer 0,5, sub{$self->on_idle;};
    $self->idle_watcher($iw);
}

sub on_idle{
    my $self = shift;
    DEBUG "ON_IDLE";
    foreach my $key (keys %{$self->slotmap}){
        my @slots = @{$self->slots($key)};
        my %conf = %{$self->conf($key)};
        my $idle = 0;

lib/AnyEvent/Gearman/WorkerPool.pm  view on Meta::CPAN

	Log::Log4perl->easy_init($DEBUG);

	use Moose;

	extends 'AnyEvent::Gearman::WorkerPool::Worker';

	sub slowreverse{
        DEBUG 'slowreverse';
        my $self = shift;
        my $job = shift;
        my t = AE::timer 1,0, sub{
            my $res = reverse($job->workload);
            $job->complete( $res );
        };
    }
    sub reverse{
        DEBUG 'reverse';
        my $self = shift;
        my $job = shift;
        my $res = reverse($job->workload);
        DEBUG $res;

lib/AnyEvent/Gearman/WorkerPool/Worker.pm  view on Meta::CPAN

make TestWorker.pm

    package TestWorker;
    use Any::Moose;
    extends 'AnyEvent::Gearman::WorkerPool::Worker';

    sub slowreverse{
        DEBUG 'slowreverse';
        my $self = shift;
        my $job = shift;
        my t = AE::timer 1,0, sub{
            my $res = reverse($job->workload);
            $job->complete( $res );
        };
    }
    sub reverse{
        my $self = shift;
        my $job = shift;
        my $res = reverse($job->workload);
        $job->complete( $res );
    }

t/00-SlotWorker.t  view on Meta::CPAN

use AnyEvent;
use AnyEvent::Gearman;
use TestWorker;
use Log::Log4perl qw(:easy);
# Log::Log4perl->easy_init($DEBUG);

my $port = '9955';
my @js = ("localhost:$port");

my $cv = AE::cv;
my $t = AE::timer 10,0,sub{ $cv->send('timeout')};

use_ok('Gearman::Server');
gstart($port);

my $w = TestWorker->new(job_servers=>\@js, cv => AE::cv, channel=>'test');


my $c = gearman_client @js;

$cv->begin(sub{$cv->send});

t/01-SlotWorkerOverwork.t  view on Meta::CPAN

use AnyEvent;
use AnyEvent::Gearman;
use TestWorker;
use Log::Log4perl qw(:easy);
# Log::Log4perl->easy_init($DEBUG);

my $port = '9955';
my @js = ("localhost:$port");
my $cv = AE::cv;

my $t = AE::timer 10,0,sub{ $cv->send('timeout')};

use_ok('Gearman::Server');
gstart($port);

my $w = TestWorker->new(job_servers=>\@js,cv=>AE::cv,boss_channel=>'', channel=>'test',workleft=>2);


my $c = gearman_client @js;

$cv->begin(sub{

t/02-Slot.t  view on Meta::CPAN

# Log::Log4perl->easy_init($DEBUG);
use Gear;
use AnyEvent;
use AnyEvent::Gearman;
use AnyEvent::Gearman::WorkerPool::Slot;
use Scalar::Util qw(weaken);
my $port = '9955';
my @js = ("localhost:$port");
my $cv = AE::cv;

my $t = AE::timer 10,0,sub{ $cv->send('timeout')};

use_ok('Gearman::Server');
gstart($port);

my $slot = AnyEvent::Gearman::WorkerPool::Slot->new(
    job_servers=>\@js,
    libs=>['t/lib','./lib'],
    workleft=>3,
    worker_package=>'TestWorker',
    worker_channel=>'child',
);

$slot->start();

my $tt = AE::timer 5,0,sub{ 
    $slot->stop();
    is $slot->is_stopped, 1;
    $cv->send;
};

my $res = $cv->recv;
isnt $res,'timeout','ends successfully';
undef($t);
undef($tt);
undef($slot);

t/03-SlotOverwork.t  view on Meta::CPAN

use Gear;
use AnyEvent;
use AnyEvent::Gearman;
use AnyEvent::Gearman::WorkerPool::Slot;
use Scalar::Util qw(weaken);

my $port = '9955';
my @js = ("localhost:$port");
my $cv = AE::cv;

my $t = AE::timer 15,0,sub{ $cv->send('timeout')};

use_ok('Gearman::Server');
gstart($port);

my $slot = AnyEvent::Gearman::WorkerPool::Slot->new(
    job_servers=>\@js,
    libs=>['t/lib','./lib'],
    workleft=>1,
    worker_package=>'TestWorker',
    worker_channel=>'child',

t/04-SlotManager.t  view on Meta::CPAN

use Gear;
use AnyEvent;
use AnyEvent::Gearman;
use AnyEvent::Gearman::WorkerPool;

use Scalar::Util qw(weaken);
my $port = '9955';
my @js = ("localhost:$port");
my $cv = AE::cv;

my $t = AE::timer 10,0,sub{ $cv->send('timeout')};

use_ok('Gearman::Server');
gstart($port);

my $slotman = AnyEvent::Gearman::WorkerPool->new(
    config=>
    {
        global=>{
            job_servers=>\@js,
            libs=>['t/lib','./lib'],
            max=>3,
            },
        slots=>{
            'TestWorker'=>{}
        }
    },
    port=>55595,
);

my $tt = AE::timer 5,0,sub{ 
#    $slot->stop();
#    is $slot->is_stopped, 1;
    $cv->send;
};

my $res = $cv->recv;
isnt $res,'timeout','ends successfully';
undef($tt);
undef($slotman);
gstop();

t/05-SlotManagerWork.t  view on Meta::CPAN

use_ok('Gearman::Server');
gstart($port);

my $cv = AE::cv;

my $sig = AE::signal 'INT'=> sub{ 
DEBUG "TERM!!";
    $cv->send;
};

my $t = AE::timer 10,0,sub{ $cv->send('timeout')};


my $slotman = AnyEvent::Gearman::WorkerPool->new(
    config=>
    {
        global=>{
            job_servers=>\@js,
            libs=>['t/lib','./lib'],
            max=>3,
            },

t/lib/TestWorker.pm  view on Meta::CPAN

use AnyEvent;
use Moose;

extends 'AnyEvent::Gearman::WorkerPool::Worker';

my $t;
sub slowreverse{
    DEBUG 'slowreverse';
    my $self = shift;
    my $job = shift;
    $t = AE::timer 1,0, sub{
        my $res = reverse($job->workload);
        $job->complete( $res );
        undef($t);
    };
}

sub reverse{
    DEBUG 'reverse';
    my $self = shift;
    my $job = shift;



( run in 3.352 seconds using v1.01-cache-2.11-cpan-49f99fa48dc )