Gearman
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
t/02-client.t view on Meta::CPAN
use strict;
use warnings;
# OK gearmand v1.0.6
# OK Gearman::Server v1.130.2
use Test::More;
use Test::Exception;
use lib '.';
use t::Server ();
my $mn = "Gearman::Client";
use_ok($mn);
can_ok(
$mn, qw/
_get_js_sock
_get_random_js_sock
_get_task_from_args
_job_server_status_command
_option_request
add_hook
dispatch_background
do_task
get_job_server_clients
get_job_server_jobs
get_job_server_status
get_status
new_task_set
run_hook
/
);
subtest "new", sub {
my $c = new_ok($mn);
isa_ok($c, "Gearman::Objects");
is($c->{backoff_max}, 90, join "->", $mn, "{backoff_max}");
is($c->{command_timeout}, 30, join "->", $mn, "{command_timeout}");
is($c->{exceptions}, 0, join "->", $mn, "{exceptions}");
is($c->{js_count}, 0, "js_count");
is(keys(%{ $c->{hooks} }), 0, join "->", $mn, "{hooks}");
is(keys(%{ $c->{sock_cache} }), 0, join "->", $mn, "{sock_cache}");
};
subtest "new_task_set", sub {
my $c = new_ok($mn);
my $h = "new_task_set";
my $cb = sub { pass("$h cb") };
ok($c->add_hook($h, $cb), "add_hook($h, cb)");
is($c->{hooks}->{$h}, $cb, "$h eq cb");
isa_ok($c->new_task_set(), "Gearman::Taskset");
ok($c->add_hook($h), "add_hook($h)");
is($c->{hooks}->{$h}, undef, "no hook $h");
};
subtest "js socket", sub {
my $gts = t::Server->new();
my @job_servers = $gts->job_servers();
@job_servers || plan skip_all => $t::Server::ERROR;
my $gc = new_ok($mn, [job_servers => [@job_servers]]);
foreach ($gc->job_servers()) {
ok(my $s = $gc->_get_js_sock($_), "_get_js_sock($_)") || next;
isa_ok($s, "IO::Socket::IP");
}
ok($gc->_get_random_js_sock());
};
subtest 'Client: "on_fail" handler is triggered on timeout' => sub {
my $gts = t::Server->new();
my @job_servers = $gts->job_servers();
@job_servers || plan skip_all => $t::Server::ERROR;
my ($reason, $now, $then) = (q(NO REASON), time);
my $c = new_ok($mn, [job_servers => [@job_servers]]);
my $timeout = 2;
my $initial_error = '"on_fail" was NOT triggered';
my $expected_error = '"on_fail" was triggered';
my $error = $initial_error;
my $res_ref = $c->do_task(
task_that_does_not_exist => '',
{
timeout => $timeout,
on_fail => sub {
## keep the given reason
($reason) = @_;
$then = time;
$error = $expected_error;
},
on_complete => sub {
die '"on_complete" handler was called unexpectedly';
},
}
);
lives_and { is($error, $expected_error) }
'"on_fail" callback was triggered on timeout';
ok(
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.551 second using v1.00-cache-2.02-grep-82fe00e-cpan-1310916c57ae )