File Coverage

blib/lib/Schedule/Load/Hosts/Proc.pm
Criterion Covered Total %
statement 31 51 60.7
branch 6 18 33.3
condition 2 12 16.6
subroutine 9 19 47.3
pod 5 13 38.4
total 53 113 46.9


line stmt bran cond sub pod time code
1             # Schedule::Load::Hosts::Proc.pm -- Process information
2             # See copyright, etc in below POD section.
3             ######################################################################
4              
5             package Schedule::Load::Hosts::Proc;
6             require 5.004;
7             require Exporter;
8             require AutoLoader;
9             @ISA = qw(Exporter AutoLoader);
10              
11 1     1   5 use Schedule::Load;
  1         1  
  1         35  
12              
13 1     1   4 use strict;
  1         2  
  1         29  
14 1     1   5 use vars qw($VERSION $AUTOLOAD);
  1         2  
  1         55  
15 1     1   4 use Carp;
  1         2  
  1         564  
16              
17             ######################################################################
18             #### Configuration Section
19              
20             # Other configurable settings.
21             $VERSION = '3.064';
22              
23             ######################################################################
24             #### Globals
25              
26             ######################################################################
27             #### Special accessors
28              
29             sub fields {
30 0 0 0 0 1 0 my $self = shift; ($self && ref($self)) or croak 'usage: '.__PACKAGE__.'->hosts)';
  0         0  
31 0         0 return (keys %{$self});
  0         0  
32             }
33              
34             sub exists {
35 1 50 33 1 1 2 my $self = shift; ($self && ref($self)) or croak 'usage: '.__PACKAGE__.'->get(field))';
  1         16  
36 1         2 my $field = shift;
37 1         12 return (exists ($self->{$field}));
38             }
39              
40             sub get {
41 0 0 0 0 1 0 my $self = shift; ($self && ref($self)) or croak 'usage: '.__PACKAGE__.'->get(field))';
  0         0  
42 0         0 my $field = shift;
43 0 0       0 if (exists ($self->{$field})) {
44 0         0 return $self->{$field};
45             } else {
46 0         0 croak __PACKAGE__.'->get($field): Unknown field';
47             }
48             }
49              
50             sub time_hhmm {
51 1 50 33 1 1 2 my $self = shift; ($self && ref($self)) or croak 'usage: '.__PACKAGE__.'->get(field))';
  1         11  
52 1 50       4 return undef if (!defined $self->{time});
53 1         9 return $self->format_hhmm($self->time);
54             }
55              
56             sub format_hhmm {
57 1     1 0 2 my $self = shift;
58 1         2 my $runtime = shift;
59 1 50       5 if ($runtime >= 2*3600) {
60 0         0 return sprintf "%3.1fH", int($runtime/360)/10;
61             } else {
62 1         29 return sprintf "%3d:%02d", int($runtime/60), $runtime%60;
63             }
64             }
65              
66             ######################################################################
67             #### Accessors
68              
69             sub AUTOLOAD {
70 8     8   11 my $self = shift;
71 8 50       19 my $type = ref($self) or croak "$self is not an ".__PACKAGE__." object";
72              
73 8         44 (my $field = $AUTOLOAD) =~ s/.*://; # Remove package
74 8 50       18 if (exists ($self->{$field})) {
75 8     0 0 392 eval "sub $field { return \$_[0]->{$field}; }";
  0     0 1 0  
  0     1 0 0  
  1     0 0 32  
  0     0 0    
  0     0 0    
  0     0 0    
  0     0 0    
  0            
76 8         102 return $self->{$field};
77             } else {
78 0         0 croak "$type->$field: Unknown ".__PACKAGE__." field $field";
79             }
80             }
81 0     0     sub DESTROY {}
82              
83             ######################################################################
84             #### Package return
85             1;
86              
87             ######################################################################
88             __END__