#!/usr/bin/perl
#############################
# rrdtest - Feed test data
# Mike Schilli, 2004
# (m@perlmeister.com)
#############################
use warnings;
use strict;

use RRDs;

my $DB   = "/tmp/mydemo.rrd";
my $start= 1080460200;
my $dst  = "MAX";
my $nof_iterations = 40;
my $end  = $start + 
        $nof_iterations * 60;

RRDs::create(
  $DB, "--step=60",
  "--start=" . ($start-10),
  "DS:load:GAUGE:90:0:10.0",
  "RRA:$dst:0.5:1:5",
  "RRA:$dst:0.5:5:10",
) or die "Cannot create " .
     "rrd ($RRDs::error)";

for(0..$nof_iterations) {
  my $time = $start + $_ *60;
  my $value = 2 + $_ * 0.1;

  RRDs::update(
    $DB, "$time:$value") or
      die "Can't update rrd".
          " ($!)";
}

print "Last 5 minutes:\n";
fetch($end - 5*60, 
      $end, $dst);

print "Last 30 minutes:\n";
fetch($end - 30*60, 
      $end, $dst);

#############################
sub fetch {
#############################
  my($start,$end, $dst) = @_;

  my ($dbstart, $step,
      $names, $data) =
    RRDs::fetch($DB, 
      "--start=$start", 
      "--end=$end", $dst);

  foreach my $row (@$data) {
    print "$start: ";
    $start += $step;
    foreach my $val (@$row) {
      $val = "N/A" 
         unless defined $val;
      print "$val\n";
    }
  }
}