1 #!/usr/bin/env ruby
2 # $Id: test.rb,v 1.2 2002/10/22 17:34:00 miles Exp $
3 # Driver does not carry cash.
5 $: << '/scratch/rrd12build/lib/ruby/1.8/i386-linux/'
7 require "RRD"
9 name = "test"
10 rrd = "#{name}.rrd"
11 start_time = Time.now.to_i
12 end_time = start_time.to_i + 300 * 300
14 puts "creating #{rrd}"
15 RRD.create(
16 rrd,
17 "--start", "#{start_time - 1}",
18 "--step", "300",
19 "DS:a:GAUGE:600:U:U",
20 "DS:b:GAUGE:600:U:U",
21 "RRA:AVERAGE:0.5:1:300")
22 puts
24 puts "updating #{rrd}"
25 start_time.step(end_time, 300) { |i|
26 RRD.update(rrd, "#{i}:#{rand(100)}:#{Math.sin(i / 800) * 50 + 50}")
27 }
28 puts
30 puts "fetching data from #{rrd}"
31 (fstart, fend, data) = RRD.fetch(rrd, "--start", start_time.to_s, "--end", end_time.to_s, "AVERAGE")
32 puts "got #{data.length} data points from #{fstart} to #{fend}"
33 puts
35 puts "generating graph #{name}.png"
36 RRD.graph(
37 "#{name}.png",
38 "--title", " RubyRRD Demo",
39 "--start", "#{start_time+3600}",
40 "--end", "start + 1000 min",
41 "--interlace",
42 "--imgformat", "PNG",
43 "--width=450",
44 "DEF:a=#{rrd}:a:AVERAGE",
45 "DEF:b=#{rrd}:b:AVERAGE",
46 "CDEF:line=TIME,2400,%,300,LT,a,UNKN,IF",
47 "AREA:b#00b6e4:beta",
48 "AREA:line#0022e9:alpha",
49 "LINE3:line#ff0000")
50 puts
52 # last method test
53 if end_time != RRD.last("#{rrd}").to_i
54 puts "last method expects #{Time.at(end_time)}."
55 puts " But #{RRD.last("#{rrd}")} returns."
56 end
57 puts
59 # xport method test
60 puts "xporting data from #{rrd}"
61 (fstart,fend,step,col,legend,data)=RRD.xport(
62 "--start", start_time.to_s,
63 "--end", (start_time + 300 * 300).to_s,
64 "--step", 10.to_s,
65 "DEF:A=#{rrd}:a:AVERAGE",
66 "DEF:B=#{rrd}:b:AVERAGE",
67 "XPORT:A:a",
68 "XPORT:B:b")
69 puts "Xported #{col} columns(#{legend.join(", ")}) with #{data.length} rows from #{fstart} to #{fend} and step #{step}\n"
71 print "This script has created #{name}.png in the current directory\n";
72 print "This demonstrates the use of the TIME and % RPN operators\n";