The code made assumptions about report structure that weren't valid for
2.6.x.  The change has been verified to work with 0.25.x and 2.6.x
report formats.

Paired with: Rein Henrichs

Signed-off-by: Matt Robinson <[email protected]>
---
 lib/puppet/reports/rrdgraph.rb                  |    2 +-
 spec/fixtures/yaml/report0.25.x.yaml            |   64 ++++++++
 spec/fixtures/yaml/report2.6.x.yaml             |  190 +++++++++++++++++++++++
 spec/lib/puppet_spec/files.rb                   |    1 +
 spec/spec_helper.rb                             |    1 +
 spec/unit/indirector/node/active_record_spec.rb |    1 -
 spec/unit/reports/rrdgraph_spec.rb              |   29 ++++
 7 files changed, 286 insertions(+), 2 deletions(-)
 create mode 100644 spec/fixtures/yaml/report0.25.x.yaml
 create mode 100644 spec/fixtures/yaml/report2.6.x.yaml
 create mode 100644 spec/unit/reports/rrdgraph_spec.rb

diff --git a/lib/puppet/reports/rrdgraph.rb b/lib/puppet/reports/rrdgraph.rb
index 2357e23..517fa8f 100644
--- a/lib/puppet/reports/rrdgraph.rb
+++ b/lib/puppet/reports/rrdgraph.rb
@@ -122,7 +122,7 @@ Puppet::Reports.register_report(:rrdgraph) do
   # that means we record the total time, the config time, and that's about
   # it.  We should probably send each type's time as a separate metric.
   def timeclean(metric)
-    metric.values = metric.values.find_all { |name, label, value| [:total, 
:config_retrieval].include?(name) }
+    metric.values = metric.values.find_all { |name, label, value| ['total', 
'config_retrieval'].include?(name.to_s) }
   end
 end
 
diff --git a/spec/fixtures/yaml/report0.25.x.yaml 
b/spec/fixtures/yaml/report0.25.x.yaml
new file mode 100644
index 0000000..ce6a642
--- /dev/null
+++ b/spec/fixtures/yaml/report0.25.x.yaml
@@ -0,0 +1,64 @@
+--- !ruby/object:Puppet::Transaction::Report
+  host: mattmac.local
+  logs: 
+    - !ruby/object:Puppet::Util::Log
+      level: !ruby/sym info
+      message: Applying configuration version '1285283846'
+      source: Puppet
+      tags: 
+        - info
+      time: 2010-09-23 16:17:26.977750 -07:00
+  metrics: 
+    time: !ruby/object:Puppet::Util::Metric
+      label: Time
+      name: time
+      values: 
+        - - !ruby/sym config_retrieval
+          - Config retrieval
+          - 0.955046892166138
+        - - !ruby/sym schedule
+          - Schedule
+          - 0.00123691558837891
+        - - !ruby/sym total
+          - Total
+          - 0.956486701965332
+        - - !ruby/sym filebucket
+          - Filebucket
+          - 0.00020289421081543
+    resources: !ruby/object:Puppet::Util::Metric
+      label: Resources
+      name: resources
+      values: 
+        - - !ruby/sym skipped
+          - Skipped
+          - 0
+        - - !ruby/sym scheduled
+          - Scheduled
+          - 7
+        - - !ruby/sym applied
+          - Applied
+          - 0
+        - - !ruby/sym restarted
+          - Restarted
+          - 0
+        - - !ruby/sym total
+          - Total
+          - 10
+        - - !ruby/sym failed_restarts
+          - Failed restarts
+          - 0
+        - - !ruby/sym out_of_sync
+          - Out of sync
+          - 0
+        - - !ruby/sym failed
+          - Failed
+          - 0
+    changes: !ruby/object:Puppet::Util::Metric
+      label: Changes
+      name: changes
+      values: 
+        - - !ruby/sym total
+          - Total
+          - 0
+  records: {}
+  time: 2010-09-23 16:17:26.987789 -07:00
\ No newline at end of file
diff --git a/spec/fixtures/yaml/report2.6.x.yaml 
b/spec/fixtures/yaml/report2.6.x.yaml
new file mode 100644
index 0000000..dd4c381
--- /dev/null
+++ b/spec/fixtures/yaml/report2.6.x.yaml
@@ -0,0 +1,190 @@
+--- !ruby/object:Puppet::Transaction::Report
+  external_times: 
+    !ruby/sym config_retrieval: 0.170313835144043
+  host: ubuntu1004desktop.localdomain
+  logs: 
+    - !ruby/object:Puppet::Util::Log
+      level: !ruby/sym debug
+      message: Using cached certificate for ca
+      source: Puppet
+      tags: 
+        - debug
+      time: 2010-09-23 15:44:06.244173 -07:00
+      version: &id001 2.6.1
+    - !ruby/object:Puppet::Util::Log
+      level: !ruby/sym debug
+      message: Using cached certificate for ubuntu1004desktop.localdomain
+      source: Puppet
+      tags: 
+        - debug
+      time: 2010-09-23 15:44:06.244764 -07:00
+      version: *id001
+    - !ruby/object:Puppet::Util::Log
+      level: !ruby/sym debug
+      message: Using cached certificate_revocation_list for ca
+      source: Puppet
+      tags: 
+        - debug
+      time: 2010-09-23 15:44:06.245677 -07:00
+      version: *id001
+    - !ruby/object:Puppet::Util::Log
+      level: !ruby/sym debug
+      message: "catalog supports formats: b64_zlib_yaml dot marshal pson raw 
yaml; using pson"
+      source: Puppet
+      tags: 
+        - debug
+      time: 2010-09-23 15:44:06.247069 -07:00
+      version: *id001
+    - !ruby/object:Puppet::Util::Log
+      level: !ruby/sym info
+      message: Caching catalog for ubuntu1004desktop.localdomain
+      source: Puppet
+      tags: 
+        - info
+      time: 2010-09-23 15:44:06.409109 -07:00
+      version: *id001
+    - !ruby/object:Puppet::Util::Log
+      level: !ruby/sym debug
+      message: Creating default schedules
+      source: Puppet
+      tags: 
+        - debug
+      time: 2010-09-23 15:44:06.418755 -07:00
+      version: *id001
+    - !ruby/object:Puppet::Util::Log
+      level: !ruby/sym debug
+      message: Loaded state in 0.00 seconds
+      source: Puppet
+      tags: 
+        - debug
+      time: 2010-09-23 15:44:06.427441 -07:00
+      version: *id001
+    - !ruby/object:Puppet::Util::Log
+      level: !ruby/sym info
+      message: Applying configuration version '1285281846'
+      source: Puppet
+      tags: 
+        - info
+      time: 2010-09-23 15:44:06.429532 -07:00
+      version: *id001
+  metrics: 
+    time: !ruby/object:Puppet::Util::Metric
+      label: Time
+      name: time
+      values: 
+        - - config_retrieval
+          - Config retrieval
+          - 0.170313835144043
+        - - schedule
+          - Schedule
+          - 0.00077
+        - - filebucket
+          - Filebucket
+          - 0.000166
+    resources: !ruby/object:Puppet::Util::Metric
+      label: Resources
+      name: resources
+      values: 
+        - - !ruby/sym total
+          - Total
+          - 7
+    events: !ruby/object:Puppet::Util::Metric
+      label: Events
+      name: events
+      values: 
+        - - !ruby/sym total
+          - Total
+          - 0
+    changes: !ruby/object:Puppet::Util::Metric
+      label: Changes
+      name: changes
+      values: 
+        - - !ruby/sym total
+          - Total
+          - 0
+  resource_statuses: 
+    "Schedule[monthly]": !ruby/object:Puppet::Resource::Status
+      evaluation_time: 0.000121
+      events: []
+      file: 
+      line: 
+      resource: "Schedule[monthly]"
+      source_description: "/Schedule[monthly]"
+      tags: 
+        - schedule
+        - monthly
+      time: 2010-09-23 15:44:06.430577 -07:00
+      version: 1285281846
+    "Filebucket[puppet]": !ruby/object:Puppet::Resource::Status
+      evaluation_time: 0.000166
+      events: []
+      file: 
+      line: 
+      resource: "Filebucket[puppet]"
+      source_description: "/Filebucket[puppet]"
+      tags: 
+        - filebucket
+        - puppet
+      time: 2010-09-23 15:44:06.430998 -07:00
+      version: 1285281846
+    "Schedule[never]": !ruby/object:Puppet::Resource::Status
+      evaluation_time: 0.000119
+      events: []
+      file: 
+      line: 
+      resource: "Schedule[never]"
+      source_description: "/Schedule[never]"
+      tags: 
+        - schedule
+        - never
+      time: 2010-09-23 15:44:06.433034 -07:00
+      version: 1285281846
+    "Schedule[weekly]": !ruby/object:Puppet::Resource::Status
+      evaluation_time: 0.000118
+      events: []
+      file: 
+      line: 
+      resource: "Schedule[weekly]"
+      source_description: "/Schedule[weekly]"
+      tags: 
+        - schedule
+        - weekly
+      time: 2010-09-23 15:44:06.431443 -07:00
+      version: 1285281846
+    "Schedule[puppet]": !ruby/object:Puppet::Resource::Status
+      evaluation_time: 0.000129
+      events: []
+      file: 
+      line: 
+      resource: "Schedule[puppet]"
+      source_description: "/Schedule[puppet]"
+      tags: 
+        - schedule
+        - puppet
+      time: 2010-09-23 15:44:06.432626 -07:00
+      version: 1285281846
+    "Schedule[daily]": !ruby/object:Puppet::Resource::Status
+      evaluation_time: 0.000154
+      events: []
+      file: 
+      line: 
+      resource: "Schedule[daily]"
+      source_description: "/Schedule[daily]"
+      tags: 
+        - schedule
+        - daily
+      time: 2010-09-23 15:44:06.430130 -07:00
+      version: 1285281846
+    "Schedule[hourly]": !ruby/object:Puppet::Resource::Status
+      evaluation_time: 0.000129
+      events: []
+      file: 
+      line: 
+      resource: "Schedule[hourly]"
+      source_description: "/Schedule[hourly]"
+      tags: 
+        - schedule
+        - hourly
+      time: 2010-09-23 15:44:06.432185 -07:00
+      version: 1285281846
+  time: 2010-09-23 15:44:05.894401 -07:00
\ No newline at end of file
diff --git a/spec/lib/puppet_spec/files.rb b/spec/lib/puppet_spec/files.rb
index cab4a1e..52ed903 100644
--- a/spec/lib/puppet_spec/files.rb
+++ b/spec/lib/puppet_spec/files.rb
@@ -1,4 +1,5 @@
 require 'fileutils'
+require 'tempfile'
 
 # A support module for testing files.
 module PuppetSpec::Files
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 2fe0c36..b5b2738 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -20,6 +20,7 @@ module PuppetSpec
   FIXTURE_DIR = File.join(dir = File.expand_path(File.dirname(__FILE__)), 
"fixtures") unless defined?(FIXTURE_DIR)
 end
 
+require 'spec/lib/puppet_spec/files'
 require 'monkey_patches/alias_should_to_must'
 require 'monkey_patches/add_confine_and_runnable_to_rspec_dsl'
 require 'monkey_patches/publicize_methods'
diff --git a/spec/unit/indirector/node/active_record_spec.rb 
b/spec/unit/indirector/node/active_record_spec.rb
index 6cc3f51..3540ef7 100755
--- a/spec/unit/indirector/node/active_record_spec.rb
+++ b/spec/unit/indirector/node/active_record_spec.rb
@@ -3,7 +3,6 @@
 require File.dirname(__FILE__) + '/../../../spec_helper'
 
 require 'puppet/node'
-require 'spec/lib/puppet_spec/files.rb'
 
 describe "Puppet::Node::ActiveRecord" do
   include PuppetSpec::Files
diff --git a/spec/unit/reports/rrdgraph_spec.rb 
b/spec/unit/reports/rrdgraph_spec.rb
new file mode 100644
index 0000000..06c8e2c
--- /dev/null
+++ b/spec/unit/reports/rrdgraph_spec.rb
@@ -0,0 +1,29 @@
+#!/usr/bin/env ruby
+
+Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? 
require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
+
+require 'puppet/reports'
+
+processor = Puppet::Reports.report(:rrdgraph)
+
+describe processor do
+  include PuppetSpec::Files
+  before do
+    Puppet[:rrddir] = tmpdir('rrdgraph')
+    Puppet.settings.use :master
+  end
+
+  after do
+    FileUtils.rm_rf(Puppet[:rrddir])
+  end
+
+  it "should not error on 0.25.x report format" do
+    report = YAML.load_file(File.join(PuppetSpec::FIXTURE_DIR, 
'yaml/report0.25.x.yaml')).extend processor
+    lambda{ report.process }.should_not raise_error
+  end
+
+  it "should not error on 2.6.x report format" do
+    report = YAML.load_file(File.join(PuppetSpec::FIXTURE_DIR, 
'yaml/report2.6.x.yaml')).extend processor
+    lambda{ report.process }.should_not raise_error
+  end
+end
-- 
1.7.1

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to