summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/lib/puppettest/reporttesting.rb18
-rwxr-xr-xtest/other/report.rb47
-rwxr-xr-xtest/server/report.rb174
-rwxr-xr-xtest/util/classgen.rb24
4 files changed, 183 insertions, 80 deletions
diff --git a/test/lib/puppettest/reporttesting.rb b/test/lib/puppettest/reporttesting.rb
new file mode 100644
index 000000000..fa9937ab9
--- /dev/null
+++ b/test/lib/puppettest/reporttesting.rb
@@ -0,0 +1,18 @@
+module PuppetTest::Reporttesting
+ def fakereport
+ # Create a bunch of log messages in an array.
+ report = Puppet::Transaction::Report.new
+
+ 3.times { |i|
+ log = Puppet.info("Report test message %s" % i)
+ log.tags = %w{a list of tags}
+ log.tags << "tag%s" % i
+
+ report.newlog(log)
+ }
+
+ return report
+ end
+end
+
+# $Id$
diff --git a/test/other/report.rb b/test/other/report.rb
index e31e97505..68381adfa 100755
--- a/test/other/report.rb
+++ b/test/other/report.rb
@@ -1,16 +1,15 @@
require 'puppet'
require 'puppet/transaction/report'
require 'puppettest'
+require 'puppettest/reporttesting'
class TestReports < Test::Unit::TestCase
include PuppetTest
+ include PuppetTest::Reporttesting
# Make sure we can use reports as log destinations.
def test_reports_as_log_destinations
- report = nil
- assert_nothing_raised {
- report = Puppet::Transaction::Report.new
- }
+ report = fakereport
assert_nothing_raised {
Puppet::Log.newdestination(report)
@@ -53,6 +52,33 @@ class TestReports < Test::Unit::TestCase
}
end
+ def test_store_report
+ # Create a bunch of log messages in an array.
+ report = Puppet::Transaction::Report.new
+
+ 10.times { |i|
+ log = Puppet.info("Report test message %s" % i)
+ log.tags = %w{a list of tags}
+ log.tags << "tag%s" % i
+
+ report.newlog(log)
+ }
+
+ assert_nothing_raised do
+ report.extend(Puppet::Server::Report.report(:store))
+ end
+
+ yaml = YAML.dump(report)
+
+ file = nil
+ assert_nothing_raised {
+ file = report.process(yaml)
+ }
+
+ assert(FileTest.exists?(file), "report file did not get created")
+ assert_equal(yaml, File.read(file), "File did not get written")
+ end
+
if Puppet::Metric.haverrd?
def test_rrdgraph_report
Puppet.config.use(:metrics)
@@ -81,15 +107,14 @@ class TestReports < Test::Unit::TestCase
trans.evaluate
}
- method = Puppet::Server::Report.report("rrdgraph")
- server = nil
- assert_nothing_raised {
- server = Puppet::Server::Report.new()
- }
-
report = trans.report
+
+ assert_nothing_raised do
+ report.extend(Puppet::Server::Report.report(:rrdgraph))
+ end
+
assert_nothing_raised {
- server.report_rrdgraph(report)
+ report.process
}
hostdir = File.join(Puppet[:rrddir], report.host)
diff --git a/test/server/report.rb b/test/server/report.rb
index f5f1c1412..f056de0b6 100755
--- a/test/server/report.rb
+++ b/test/server/report.rb
@@ -2,9 +2,13 @@ require 'puppet'
require 'puppet/server/report'
require 'puppet/client/reporter'
require 'puppettest'
+require 'puppettest/reporttesting'
class TestReportServer < Test::Unit::TestCase
include PuppetTest
+ include PuppetTest::Reporttesting
+
+ Report = Puppet::Server::Report
Puppet::Util.logmethods(self)
def mkserver
@@ -25,62 +29,6 @@ class TestReportServer < Test::Unit::TestCase
client
end
- def test_report
- # Create a bunch of log messages in an array.
- report = Puppet::Transaction::Report.new
-
- 10.times { |i|
- log = warning("Report test message %s" % i)
- log.tags = %w{a list of tags}
- log.tags << "tag%s" % i
-
- report.newlog(log)
- }
-
- # Now make our reporting client
- client = mkclient()
-
- # Now send the report
- file = nil
- assert_nothing_raised("Reporting failed") {
- file = client.report(report)
- }
-
- # And make sure our YAML file exists.
- assert(FileTest.exists?(file),
- "Report file did not get created")
-
- # And then try to reconstitute the report.
- newreport = nil
- assert_nothing_raised("Failed to load report file") {
- newreport = YAML.load(File.read(file))
- }
-
- # Make sure our report is valid and stuff.
- report.logs.zip(newreport.logs).each do |ol,nl|
- %w{level message time tags source}.each do |method|
- assert_equal(ol.send(method).to_s, nl.send(method).to_s,
- "%s got changed" % method)
- end
- end
- end
-
- # Make sure we don't have problems with calling mkclientdir multiple
- # times.
- def test_multiple_clients
- server ||= mkserver()
-
- %w{hostA hostB hostC}.each do |host|
- dir = tempfile()
- assert_nothing_raised("Could not create multiple host report dirs") {
- server.send(:mkclientdir, host, dir)
- }
-
- assert(FileTest.directory?(dir),
- "Directory was not created")
- end
- end
-
def test_report_autoloading
# Create a fake report
fakedir = tempfile()
@@ -93,9 +41,11 @@ class TestReportServer < Test::Unit::TestCase
$myreportrun = false
file = File.join(libdir, "myreport.rb")
File.open(file, "w") { |f| f.puts %{
- Puppet::Server::Report.newreport(:myreport) do |report|
- $myreportrun = true
- return report
+ Puppet::Server::Report.newreport(:myreport) do
+ def process(report)
+ $myreportrun = true
+ return report
+ end
end
}
}
@@ -104,30 +54,79 @@ class TestReportServer < Test::Unit::TestCase
# Create a server
server = Puppet::Server::Report.new
- method = nil
+ report = nil
assert_nothing_raised {
- method = Puppet::Server::Report.reportmethod(:myreport)
+ report = Puppet::Server::Report.report(:myreport)
}
- assert(method, "Did not get report method")
+ assert(report, "Did not get report")
+
+ end
- assert(! server.respond_to?(method),
- "Server already responds to report method")
+ def test_process
+ server = Puppet::Server::Report.new
+
+ # We have to run multiple reports to make sure there's no conflict
+ reports = []
+ $run = []
+ 5.times do |i|
+ name = "processtest%s" % i
+ reports << name
+
+ Report.newreport(name) do
+ def process
+ $run << self.report_name
+ end
+ end
+ end
+ Puppet[:reports] = reports.collect { |r| r.to_s }.join(",")
+
+ report = fakereport
retval = nil
assert_nothing_raised {
- retval = server.send(:process, YAML.dump("a string"))
+ retval = server.send(:process, YAML.dump(report))
}
- assert($myreportrun, "Did not run report")
- assert(server.respond_to?(method),
- "Server does not respond to report method")
+
+ reports.each do |name|
+ assert($run.include?(name.intern), "Did not run %s" % name)
+ end
# Now make sure our server doesn't die on missing reports
Puppet[:reports] = "fakereport"
assert_nothing_raised {
- retval = server.send(:process, YAML.dump("a string"))
+ retval = server.send(:process, YAML.dump(report))
}
end
+ # Make sure reports can specify whether to use yaml or not
+ def test_useyaml
+ server = Puppet::Server::Report.new
+
+ Report.newreport(:yamlyes, :useyaml => true) do
+ def process(report)
+ $yamlyes = :yesyaml
+ end
+ end
+
+ Report.newreport(:yamlno) do
+ def process
+ $yamlno = :noyaml
+ end
+ end
+
+ Puppet[:reports] = "yamlyes, yamlno"
+
+ report = fakereport
+ yaml = YAML.dump(report)
+
+ assert_nothing_raised do
+ server.send(:process, yaml)
+ end
+
+ assert_equal(:noyaml, $yamlno, "YAML was used for non-yaml report")
+ assert_equal(:yesyaml, $yamlyes, "YAML was not used for yaml report")
+ end
+
def test_reports
Puppet[:reports] = "myreport"
@@ -141,6 +140,43 @@ class TestReportServer < Test::Unit::TestCase
assert_equal(ary, server.send(:reports))
end
end
+
+ def test_newreport
+ name = :newreporttest
+ assert_nothing_raised do
+ Report.newreport(name) do
+ attr_accessor :processed
+
+ def process(report)
+ @processed = report
+ end
+ end
+ end
+
+ assert(Report.report(name), "Did not get report")
+ assert_instance_of(Module, Report.report(name))
+
+ obj = "yay"
+ obj.extend(Report.report(name))
+
+ assert_nothing_raised do
+ obj.process("yay")
+ end
+
+ assert_equal("yay", obj.processed)
+ end
+
+ # Make sure we get a list of all reports
+ def test_report_list
+ list = nil
+ assert_nothing_raised do
+ list = Puppet::Server::Report.reports
+ end
+
+ [:rrdgraph, :store, :tagmail].each do |name|
+ assert(list.include?(name), "Did not load %s" % name)
+ end
+ end
end
# $Id$
diff --git a/test/util/classgen.rb b/test/util/classgen.rb
index 160de7464..3c49f5ce9 100755
--- a/test/util/classgen.rb
+++ b/test/util/classgen.rb
@@ -115,6 +115,30 @@ class TestPuppetUtilClassGen < Test::Unit::TestCase
assert_nil(klass.three, "Class was initialized incorrectly")
end
+ def test_initclass_include_and_extend
+ sub, klass = testclasses("attributes")
+
+ incl = Module.new do
+ attr_accessor :included
+ end
+ self.class.const_set("Incl", incl)
+
+ ext = Module.new do
+ attr_accessor :extended
+ end
+ self.class.const_set("Ext", ext)
+
+ assert(! klass.respond_to?(:extended), "Class already responds to extended")
+ assert(! klass.new.respond_to?(:included), "Class already responds to included")
+
+ assert_nothing_raised do sub.send(:initclass, klass,
+ :include => incl, :extend => ext)
+ end
+
+ assert(klass.respond_to?(:extended), "Class did not get extended")
+ assert(klass.new.respond_to?(:included), "Class did not include")
+ end
+
def test_genclass
hash = {}
array = []