#!/usr/bin/perl -w
use Test; BEGIN { plan tests => 81 };
use lib '../lib'; if (-d 't') { chdir 't'; }
use IPC::DirQueue;
mkdir ("log");
mkdir ("log/qdir");
my $bq = IPC::DirQueue->new({ dir => 'log/qdir' });
ok ($bq);
my $COUNT = 10;
my $tmpf = "/tmp/enqdata.$$";
open (OUT, ">$tmpf") or die "cannot write $tmpf";
print OUT "Hi There World!\n";
close OUT or die "cannot write $tmpf";
start_writer();
start_worker();
unlink $tmpf;
exit;
sub start_writer {
for my $j (1 .. $COUNT) {
my $counter = 0;
open (IN, "<$tmpf") or die "cannot read $tmpf";
ok ($bq->enqueue_fh (\*IN, { foo => "bar $$" }));
close IN;
}
}
sub start_worker {
my $k = 0;
while (1) {
my $job = $bq->wait_for_queued_job();
if (!$job) { next; }
# Traditional
ok ($job->get_data_path());
ok (open (IN, "<".$job->get_data_path()));
my $str = <IN>;
ok (close IN);
ok ($str =~ /^Hi There World!$/)
or warn "got: [$str]";
# With get_data()
my $data = $job->get_data();
ok ($data =~ /^Hi There World!$/)
or warn "got: [$data]";
ok ($job->{metadata}->{foo});
ok ($job->{metadata}->{foo} =~ /^bar \d+$/)
or warn "got: [$job->{metadata}->{foo}]";
$job->finish();
$k++;
print "finished $k\n";
exit if ($k == $COUNT);
}
}
syntax highlighted by Code2HTML, v. 0.9.1