#!/usr/bin/perl use strict; use FindBin qw($Bin); use Test::More; $ENV{PERL5LIB} .= ":$Bin/../../Gearman/lib"; use lib "$Bin/../../Gearman/lib"; use lib "$Bin/../../../../server/lib"; use Gearman::Server; use Gearman::Client::Async; my $server = Gearman::Server->new(); $server->start_worker('t/worker.pl'); my $client = Gearman::Client::Async->new(job_servers => [ $server ]); my $good = 0; my $status; plan tests => 2; Danga::Socket->AddTimer(0, sub { $client->add_task( Gearman::Task->new( "sleep_for" => \ "2", { on_complete => sub { my $res = shift; $good++; }, on_status => sub { $status .= '2'; }, on_retry => sub { print "RETRY: [@_]\n"; }, on_fail => sub { print "FAIL: [@_]\n"; }, retry_count => 5, } ) ); $client->add_task( Gearman::Task->new( "sleep_for" => \ "1", { on_complete => sub { my $res = shift; $good++; }, on_status => sub { $status .= '1'; }, on_retry => sub { print "RETRY: [@_]\n"; }, on_fail => sub { fail(join "/", @_); print "FAIL: [@_]\n"; }, retry_count => 5, } ) ); }); Danga::Socket->AddTimer(4.0, sub { die "Timeout, test fails"; }); Danga::Socket->SetPostLoopCallback(sub { if ($good >= 2) { pass("Got both responses"); return 0; } return 1; }); Danga::Socket->EventLoop(); is(length $status, 14, "12 status messages"); # vim: filetype=perl