3 require File.dirname(__FILE__) + '/../lib/puppettest'
6 require 'puppet/util/metric'
10 class TestMetric < PuppetTest::TestCase
11 confine "Missing RRDtool library" => Puppet.features.rrd?
20 types = [Puppet.type(:file), Puppet.type(:package), Puppet.type(:package)]
21 data = [:total, :managed, :outofsync, :changed, :totalchanges]
22 events = [:file_changed, :package_installed, :service_started]
24 # if this is the first set of data points...
25 typedata = Hash.new { |typehash,type|
26 typehash[type] = Hash.new(0)
28 eventdata = Hash.new(0)
30 typedata[:total] = rand(totalmax)
31 typedata[:managed] = rand(typedata[:total])
32 typedata[:outofsync] = rand(typedata[:managed])
33 typedata[:changed] = rand(typedata[:outofsync])
34 typedata[:totalchanges] = rand(changemax)
37 eventdata[event] = rand(eventmax)
40 return {:typedata => typedata, :eventdata => eventdata}
43 def rundata(report, time)
44 assert_nothing_raised {
45 gendata.each do |name, data|
46 report.newmetric(name, data)
48 report.metrics.each { |n, m| m.store(time) }
54 Puppet[:rrdgraph] = true
58 report = Puppet::Transaction::Report.new
67 report.metrics.each do |n, m| m.graph end
69 File.open(File.join(Puppet[:rrddir],"index.html"),"w") { |of|
70 of.puts "<html><body>"
71 report.metrics.each { |name, metric|
72 of.puts "<img src=%s.png><br>" % metric.name