diff --git a/lib/Diskstats.pm b/lib/Diskstats.pm index d43a92c4..69dbf78a 100644 --- a/lib/Diskstats.pm +++ b/lib/Diskstats.pm @@ -93,29 +93,35 @@ sub new { # The next lot are accessors, plus some convenience functions. sub curr_ts { - my ($self, $val) = @_; - if ($val) { - $self->{_ts}->{curr} = $val; - } + my ($self) = @_; return $self->{_ts}->{curr} || 0; } -sub prev_ts { +sub set_curr_ts { my ($self, $val) = @_; - if ($val) { - $self->{_ts}->{prev} = $val; - } + $self->{_ts}->{curr} = $val || 0; +} + +sub prev_ts { + my ($self) = @_; return $self->{_ts}->{prev} || 0; } -sub first_ts { +sub set_prev_ts { my ($self, $val) = @_; - if ($val) { - $self->{_ts}->{first} = $val; - } + $self->{_ts}->{prev} = $val || 0; +} + +sub first_ts { + my ($self) = @_; return $self->{_ts}->{first} || 0; } +sub set_first_ts { + my ($self, $val) = @_; + $self->{_ts}->{first} = $val || 0; +} + sub filter_zeroed_rows { my ($self, $new_val) = @_; if ( defined($new_val) ) { @@ -306,7 +312,7 @@ sub _save_curr_as_prev { $self->{_prev_stats_for}->{$dev}->{sum_ios_in_progress} += $curr->{$dev}->{ios_in_progress}; } - $self->prev_ts($self->curr_ts()); + $self->set_prev_ts($self->curr_ts()); } return; @@ -321,7 +327,7 @@ sub _save_curr_as_first { # be enough. map { $_ => {%{$curr->{$_}}} } keys %$curr }; - $self->first_ts($self->curr_ts()); + $self->set_first_ts($self->curr_ts()); $self->{_first} = undef; } } @@ -627,7 +633,7 @@ sub _load { if ( $current_ts && %$new_cur ) { $self->_save_curr_as_prev( $self->stats_for() ); $self->_save_stats($new_cur); - $self->curr_ts($current_ts); + $self->set_curr_ts($current_ts); $self->_save_curr_as_first( $new_cur ); $new_cur = {}; } @@ -646,7 +652,7 @@ sub _load { if ( %{$new_cur} ) { $self->_save_curr_as_prev( $self->stats_for() ); $self->_save_stats($new_cur); - $self->curr_ts($current_ts); + $self->set_curr_ts($current_ts); $self->_save_curr_as_first( $new_cur ); $new_cur = {}; } diff --git a/lib/DiskstatsGroupByAll.pm b/lib/DiskstatsGroupByAll.pm index 526a6a64..a21bf804 100644 --- a/lib/DiskstatsGroupByAll.pm +++ b/lib/DiskstatsGroupByAll.pm @@ -64,7 +64,7 @@ sub group_by_all { }, map( { ($_ => $args{$_}) } qw(filehandle filename data) ), ); - if (!$self->prev_ts) { + if (!$self->prev_ts()) { seek $args{filehandle}, $orig, 0; } return; diff --git a/t/lib/Diskstats.t b/t/lib/Diskstats.t index 3e931358..4d7e4bb8 100644 --- a/t/lib/Diskstats.t +++ b/t/lib/Diskstats.t @@ -168,15 +168,16 @@ throws_ok( sub { $obj->design_print_formats( columns => {} ) }, qr/The columns argument to design_print_formats should be an arrayref/, "design_print_formats dies when passed an invalid columns argument"); -for my $meth ( qw( curr_ts prev_ts first_ts ) ) { - ok(!$obj->$meth(), "Diskstats->$meth is initially false"); +for my $method ( qw( curr_ts prev_ts first_ts ) ) { + my $setter = "set_$method"; + ok(!$obj->$method(), "Diskstats->$method is initially false"); - $obj->$meth(10); - is($obj->$meth(), 10, "Diskstats->$meth(10) sets it to 10"); + $obj->$setter(10); + is($obj->$method(), 10, "Diskstats->$setter(10) sets it to 10"); - $obj->$meth(20); + $obj->$setter(20); $obj->clear_ts(); - ok(!$obj->$meth(), "Diskstats->clear_ts does as advertized"); + ok(!$obj->$method(), "Diskstats->clear_ts does as advertized"); } is($obj->out_fh(), \*STDOUT, "by default, outputs to STDOUT"); @@ -371,9 +372,9 @@ EOF ); } - $obj->curr_ts(0); - $obj->prev_ts(0); - $obj->first_ts(0); + $obj->set_curr_ts(0); + $obj->set_prev_ts(0); + $obj->set_first_ts(0); throws_ok( sub { $obj->_calc_deltas() },