#!/usr/bin/perl
use strict;
use Gearman::Client;
use Storable qw( freeze );
use Test::More;
use Time::HiRes qw(time);
use lib 't';
use TestGearman;
# This is testing the MAXQUEUE feature of gearmand. There's no direct
# support for it in Gearman::Worker yet, so we connect directly to
# gearmand to configure it for the test.
if (start_server(PORT)) {
plan tests => 3;
} else {
plan skip_all => "Can't find server to test with";
exit 0;
}
wait_for_port(PORT);
start_worker(PORT);
my $client = Gearman::Client->new;
isa_ok($client, 'Gearman::Client');
$client->job_servers('127.0.0.1:' . PORT);
my $tasks = $client->new_task_set;
isa_ok($tasks, 'Gearman::Taskset');
my $failed = 0;
my $completed = 0;
my %handles; # handle => iter
# For a total of 5 events, that will be 20 seconds; till they complete.
foreach my $iter (1..5) {
my $handle;
$handle = $tasks->add_task('long', $iter, {
uniq => $iter,
on_complete => sub {
$completed++;
delete $handles{$handle};
diag "Got result for $iter";
},
on_fail => sub {
$failed++
},
});
$handles{$handle} = $iter;
}
$tasks->wait(timeout => 11);
my $late_tasks = $client->new_task_set;
isa_ok($tasks, 'Gearman::Taskset');
# vim: filetype=perl
syntax highlighted by Code2HTML, v. 0.9.1