summaryrefslogtreecommitdiffstats
path: root/test/network/handler/report.rb
blob: fa55137bcafe3c4e399657f39986ea97ce73c5a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env ruby

require File.dirname(__FILE__) + '/../../lib/puppettest'

require 'puppettest'
require 'puppet/network/handler/report'
require 'puppettest/reporttesting'

class TestReportServer < Test::Unit::TestCase
    include PuppetTest
    include PuppetTest::Reporttesting

    Report = Puppet::Network::Handler.report
    Puppet::Util.logmethods(self)

    def mkserver
        server = nil
        assert_nothing_raised {
            server = Puppet::Network::Handler.report.new()
        }
        server
    end

    def mkclient(server = nil)
        server ||= mkserver()
        client = nil
        assert_nothing_raised {
            client = Puppet::Network::Client.report.new(:Report => server)
        }

        client
    end

    def test_process
        server = Puppet::Network::Handler.report.new

        # We have to run multiple reports to make sure there's no conflict
        reports = []
        $run = []
        2.times do |i|
            name = "processtest#{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(report))
        }

        reports.each do |name|
            assert($run.include?(name.intern), "Did not run #{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(report))
        }
    end

    def test_reports
        Puppet[:reports] = "myreport"

        # Create a server
        server = Puppet::Network::Handler.report.new

        {"myreport" => ["myreport"],
            " fake, another, yay " => ["fake", "another", "yay"]
        }.each do |str, ary|
            Puppet[:reports] = str
            assert_equal(ary, server.send(:reports))
        end
    end
end