File Coverage

blib/lib/Proc/JobQueue/BackgroundQueue.pm
Criterion Covered Total %
statement 31 41 75.6
branch 4 10 40.0
condition n/a
subroutine 6 6 100.0
pod 1 2 50.0
total 42 59 71.1


line stmt bran cond sub pod time code
1              
2             package Proc::JobQueue::BackgroundQueue;
3              
4 4     4   162868 use strict;
  4         11  
  4         141  
5 4     4   21 use warnings;
  4         5  
  4         118  
6 4     4   20 use Carp qw(confess);
  4         14  
  4         303  
7 4     4   3838 use Time::HiRes qw(sleep);
  4         7917  
  4         19  
8             require Proc::JobQueue;
9              
10             our @ISA = qw(Proc::JobQueue);
11              
12             our $debug = $Proc::JobQueue::debug;
13              
14             sub new
15             {
16 2     2 1 2604 my ($pkg, %params) = @_;
17 2         28 my $queue = $pkg->SUPER::new(sleeptime => 2, %params);
18             }
19              
20             sub finish
21             {
22 2     2 0 110 my $queue = shift;
23 2         20 for(;;) {
24 58         3036 $queue->checkjobs();
25 58 100       566 return if $queue->startmore();
26              
27 56         988 my $running = 0;
28 56         81 my $queued = keys %{$queue->{queue}};
  56         395  
29 56         113 for my $host (@{$queue->{hosts}}) {
  56         484  
30 56         151 my $hr = $queue->{status}{$host};
31 56         87 $running += keys %{$hr->{running}};
  56         204  
32 56         81 $queued += keys %{$hr->{queue}};
  56         185  
33             }
34              
35 56 50       194 if ($debug > 2) {
36 0         0 print STDERR "Finish loop top: $running running, $queued queued\n";
37 0         0 for my $host (@{$queue->{hosts}}) {
  0         0  
38 0         0 my $hr = $queue->{status}{$host};
39 0 0       0 print "running: " . join(", ", map { $_ . ": " . $hr->{running}{$_}{desc} } keys %{$hr->{running}} ) . "\n" if $running;
  0         0  
  0         0  
40 0 0       0 print "queued: " . join(", ", map { $_ . ": " . $hr->{running}{$_}{desc} } keys %{$hr->{queue}} ) . "\n" if $queued;
  0         0  
  0         0  
41             }
42             }
43              
44 56 50       180 print "Jobs are waiting to be run, but none are running\n" unless $running;
45 56         614560 sleep($queue->{sleeptime});
46             }
47             }
48              
49             1;
50              
51             __END__