#!/usr/bin/perl
use strict;
use Gearman::Client;
use Storable qw( freeze );
use Test::More;
use lib 't';
use TestGearman;
if (start_server(PORT)) {
plan tests => 8;
} else {
plan skip_all => "Can't find server to test with";
exit 0;
}
$NUM_SERVERS = 3;
for (1..($NUM_SERVERS-1)) {
start_server(PORT + $_)
}
start_worker(PORT, { prefix => 'prefix_a', num_servers => $NUM_SERVERS });
start_worker(PORT, { prefix => 'prefix_b', num_servers => $NUM_SERVERS });
my @job_servers = map { '127.0.0.1:' . (PORT + $_) } 0..$NUM_SERVERS;
my $client_a = Gearman::Client->new(prefix => 'prefix_a');
isa_ok($client_a, 'Gearman::Client');
$client_a->job_servers(@job_servers);
my $client_b = Gearman::Client->new(prefix => 'prefix_b');
isa_ok($client_b, 'Gearman::Client');
$client_b->job_servers(@job_servers);
# basic do_task test
is(${$client_a->do_task('echo_prefix', 'beep test')}, 'beep test from prefix_a',
'basic do_task() - prefix a');
is(${$client_b->do_task('echo_prefix', 'beep test')}, 'beep test from prefix_b',
'basic do_task() - prefix b');
is(${$client_a->do_task(Gearman::Task->new('echo_prefix', \('beep test')))}, 'beep test from prefix_a',
'Gearman::Task do_task() - prefix a');
is(${$client_b->do_task(Gearman::Task->new('echo_prefix', \('beep test')))}, 'beep test from prefix_b',
'Gearman::Task do_task() - prefix b');
my %tasks = (
a => $client_a->new_task_set,
b => $client_b->new_task_set,
);
my %out;
for my $k (keys %tasks) {
$out{$k} = '';
$tasks{$k}->add_task('echo_prefix' => "$k", { on_complete => sub { $out{$k} .= ${ $_[0] } } });
}
$tasks{$_}->wait for keys %tasks;
for my $k (sort keys %tasks) {
is($out{$k}, "$k from prefix_$k", "taskset from client_$k");
}
syntax highlighted by Code2HTML, v. 0.9.1