File Coverage

blib/lib/IBM/StorageSystem/Statistic.pm
Criterion Covered Total %
statement 15 44 34.0
branch 0 4 0.0
condition n/a
subroutine 5 14 35.7
pod 2 3 66.6
total 22 65 33.8


line stmt bran cond sub pod time code
1             package IBM::StorageSystem::Statistic;
2              
3 1     1   5 use strict;
  1         1  
  1         37  
4 1     1   6 use warnings;
  1         3  
  1         28  
5              
6 1     1   5 use Carp qw(croak);
  1         2  
  1         46  
7 1     1   6 use Scalar::Util qw(weaken);
  1         3  
  1         94  
8              
9             our $VERSION = '0.01';
10             our @ATTR = qw(name epoch current peak peak_time peak_epoch);
11              
12             foreach my $attr ( @ATTR ) {
13             {
14 1     1   4 no strict 'refs';
  1         3  
  1         493  
15             *{ __PACKAGE__ .'::'. $attr } = sub {
16 0     0     my( $self, $val ) = @_;
        0      
        0      
        0      
        0      
        0      
17 0 0         $self->{$attr} = $val if $val;
18 0           return $self->{$attr}
19             }
20             }
21             }
22              
23             sub new {
24 0     0 0   my( $class, $ibm, %args ) = @_;
25 0           my $self = bless {}, $class;
26 0           weaken( $self->{__ibm} = $ibm );
27 0           foreach my $attr ( keys %args ) { $self->{$attr} = $args{$attr} }
  0            
28 0           $self->{ts} = time;
29 0           return $self;
30             }
31              
32             sub refresh {
33 0     0 1   my $self = shift;
34              
35 0           foreach my $stat ( splice @{ [ split /\n/, $self->{__ibm}->__cmd( 'lssystemstats -gui -delim :' ) ] }, 1 ) {
  0            
36 0           my ( $name, $epoch, $current, $peak, $peak_time, $peak_epoch ) = split /:/, $stat;
37 0 0         next unless $name eq $self->name;
38 0           $self->epoch( $epoch );
39 0           $self->current( $current );
40 0           $self->peak( $peak );
41 0           $self->peak_time( $peak_time );
42 0           $self->peak_epoch( $peak_epoch )
43             }
44              
45 0           $self->{ts} = time;
46 0           return $self
47             }
48              
49             sub history {
50 0     0 1   my $self = shift;
51 0           my @res;
52            
53 0           foreach my $stat (splice @{ [split /\n/, $self->{__ibm}->__cmd( "lssystemstats -history $self->{name} -delim :")] }, 1) {
  0            
54 0           my ( $time, $name, $value ) = split /:/, $stat;
55 0           push @res, { time => $time, value => $value };
56             }
57              
58 0           return reverse @res;
59             }
60              
61             1;
62              
63             __END__