puppet 0.9.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (182) hide show
  1. data/CHANGELOG +0 -0
  2. data/COPYING +340 -0
  3. data/LICENSE +17 -0
  4. data/README +24 -0
  5. data/Rakefile +294 -0
  6. data/TODO +4 -0
  7. data/bin/cf2puppet +186 -0
  8. data/bin/puppet +176 -0
  9. data/bin/puppetca +213 -0
  10. data/bin/puppetd +246 -0
  11. data/bin/puppetdoc +184 -0
  12. data/bin/puppetmasterd +258 -0
  13. data/examples/code/allatonce +13 -0
  14. data/examples/code/assignments +11 -0
  15. data/examples/code/classing +35 -0
  16. data/examples/code/components +73 -0
  17. data/examples/code/execs +16 -0
  18. data/examples/code/failers/badclassnoparam +10 -0
  19. data/examples/code/failers/badclassparam +10 -0
  20. data/examples/code/failers/badcompnoparam +9 -0
  21. data/examples/code/failers/badcompparam +9 -0
  22. data/examples/code/failers/badtypeparam +3 -0
  23. data/examples/code/file.bl +11 -0
  24. data/examples/code/filedefaults +10 -0
  25. data/examples/code/fileparsing +116 -0
  26. data/examples/code/filerecursion +15 -0
  27. data/examples/code/functions +3 -0
  28. data/examples/code/groups +7 -0
  29. data/examples/code/head +30 -0
  30. data/examples/code/importing +8 -0
  31. data/examples/code/nodes +20 -0
  32. data/examples/code/one +8 -0
  33. data/examples/code/relationships +34 -0
  34. data/examples/code/selectors +28 -0
  35. data/examples/code/simpletests +11 -0
  36. data/examples/code/snippets/argumentdefaults +14 -0
  37. data/examples/code/snippets/casestatement +39 -0
  38. data/examples/code/snippets/classheirarchy.pp +15 -0
  39. data/examples/code/snippets/classincludes.pp +17 -0
  40. data/examples/code/snippets/classpathtest +11 -0
  41. data/examples/code/snippets/dirchmod +19 -0
  42. data/examples/code/snippets/failmissingexecpath.pp +13 -0
  43. data/examples/code/snippets/falsevalues.pp +3 -0
  44. data/examples/code/snippets/filecreate +11 -0
  45. data/examples/code/snippets/implicititeration +15 -0
  46. data/examples/code/snippets/multipleinstances +7 -0
  47. data/examples/code/snippets/namevartest +9 -0
  48. data/examples/code/snippets/scopetest +13 -0
  49. data/examples/code/snippets/selectorvalues.pp +22 -0
  50. data/examples/code/snippets/simpledefaults +5 -0
  51. data/examples/code/snippets/simpleselector +38 -0
  52. data/examples/code/svncommit +13 -0
  53. data/examples/root/bin/sleeper +69 -0
  54. data/examples/root/etc/configfile +0 -0
  55. data/examples/root/etc/debian-passwd +29 -0
  56. data/examples/root/etc/debian-syslog.conf +71 -0
  57. data/examples/root/etc/init.d/sleeper +65 -0
  58. data/examples/root/etc/otherfile +0 -0
  59. data/examples/root/etc/puppet/fileserver.conf +3 -0
  60. data/examples/root/etc/puppet/puppetmasterd.conf +10 -0
  61. data/ext/module:puppet +195 -0
  62. data/install.rb +270 -0
  63. data/lib/puppet.rb +249 -0
  64. data/lib/puppet/base64.rb +19 -0
  65. data/lib/puppet/client.rb +519 -0
  66. data/lib/puppet/config.rb +49 -0
  67. data/lib/puppet/daemon.rb +208 -0
  68. data/lib/puppet/element.rb +71 -0
  69. data/lib/puppet/event.rb +259 -0
  70. data/lib/puppet/log.rb +321 -0
  71. data/lib/puppet/metric.rb +250 -0
  72. data/lib/puppet/parsedfile.rb +38 -0
  73. data/lib/puppet/parser/ast.rb +1560 -0
  74. data/lib/puppet/parser/interpreter.rb +150 -0
  75. data/lib/puppet/parser/lexer.rb +226 -0
  76. data/lib/puppet/parser/parser.rb +1354 -0
  77. data/lib/puppet/parser/scope.rb +755 -0
  78. data/lib/puppet/server.rb +170 -0
  79. data/lib/puppet/server/authstore.rb +227 -0
  80. data/lib/puppet/server/ca.rb +140 -0
  81. data/lib/puppet/server/filebucket.rb +147 -0
  82. data/lib/puppet/server/fileserver.rb +477 -0
  83. data/lib/puppet/server/logger.rb +43 -0
  84. data/lib/puppet/server/master.rb +103 -0
  85. data/lib/puppet/server/servlet.rb +247 -0
  86. data/lib/puppet/sslcertificates.rb +737 -0
  87. data/lib/puppet/statechange.rb +150 -0
  88. data/lib/puppet/storage.rb +95 -0
  89. data/lib/puppet/transaction.rb +179 -0
  90. data/lib/puppet/transportable.rb +151 -0
  91. data/lib/puppet/type.rb +1354 -0
  92. data/lib/puppet/type/component.rb +141 -0
  93. data/lib/puppet/type/cron.rb +543 -0
  94. data/lib/puppet/type/exec.rb +316 -0
  95. data/lib/puppet/type/group.rb +152 -0
  96. data/lib/puppet/type/nameservice.rb +3 -0
  97. data/lib/puppet/type/nameservice/netinfo.rb +173 -0
  98. data/lib/puppet/type/nameservice/objectadd.rb +146 -0
  99. data/lib/puppet/type/nameservice/posix.rb +200 -0
  100. data/lib/puppet/type/package.rb +420 -0
  101. data/lib/puppet/type/package/apt.rb +70 -0
  102. data/lib/puppet/type/package/dpkg.rb +108 -0
  103. data/lib/puppet/type/package/rpm.rb +81 -0
  104. data/lib/puppet/type/package/sun.rb +117 -0
  105. data/lib/puppet/type/package/yum.rb +58 -0
  106. data/lib/puppet/type/pfile.rb +569 -0
  107. data/lib/puppet/type/pfile/checksum.rb +219 -0
  108. data/lib/puppet/type/pfile/create.rb +108 -0
  109. data/lib/puppet/type/pfile/group.rb +129 -0
  110. data/lib/puppet/type/pfile/mode.rb +131 -0
  111. data/lib/puppet/type/pfile/source.rb +264 -0
  112. data/lib/puppet/type/pfile/type.rb +31 -0
  113. data/lib/puppet/type/pfile/uid.rb +166 -0
  114. data/lib/puppet/type/pfilebucket.rb +80 -0
  115. data/lib/puppet/type/pprocess.rb +97 -0
  116. data/lib/puppet/type/service.rb +347 -0
  117. data/lib/puppet/type/service/base.rb +17 -0
  118. data/lib/puppet/type/service/debian.rb +50 -0
  119. data/lib/puppet/type/service/init.rb +145 -0
  120. data/lib/puppet/type/service/smf.rb +29 -0
  121. data/lib/puppet/type/state.rb +182 -0
  122. data/lib/puppet/type/symlink.rb +183 -0
  123. data/lib/puppet/type/tidy.rb +183 -0
  124. data/lib/puppet/type/typegen.rb +149 -0
  125. data/lib/puppet/type/typegen/filerecord.rb +243 -0
  126. data/lib/puppet/type/typegen/filetype.rb +316 -0
  127. data/lib/puppet/type/user.rb +290 -0
  128. data/lib/puppet/util.rb +138 -0
  129. data/test/certmgr/certmgr.rb +265 -0
  130. data/test/client/client.rb +203 -0
  131. data/test/executables/puppetbin.rb +53 -0
  132. data/test/executables/puppetca.rb +79 -0
  133. data/test/executables/puppetd.rb +71 -0
  134. data/test/executables/puppetmasterd.rb +153 -0
  135. data/test/executables/puppetmodule.rb +60 -0
  136. data/test/language/ast.rb +412 -0
  137. data/test/language/interpreter.rb +71 -0
  138. data/test/language/scope.rb +412 -0
  139. data/test/language/snippets.rb +445 -0
  140. data/test/other/events.rb +111 -0
  141. data/test/other/log.rb +195 -0
  142. data/test/other/metrics.rb +92 -0
  143. data/test/other/overrides.rb +115 -0
  144. data/test/other/parsedfile.rb +31 -0
  145. data/test/other/relationships.rb +113 -0
  146. data/test/other/state.rb +106 -0
  147. data/test/other/storage.rb +39 -0
  148. data/test/other/transactions.rb +235 -0
  149. data/test/parser/lexer.rb +120 -0
  150. data/test/parser/parser.rb +180 -0
  151. data/test/puppet/conffiles.rb +104 -0
  152. data/test/puppet/defaults.rb +100 -0
  153. data/test/puppet/error.rb +23 -0
  154. data/test/puppet/utiltest.rb +120 -0
  155. data/test/puppettest.rb +774 -0
  156. data/test/server/authstore.rb +209 -0
  157. data/test/server/bucket.rb +227 -0
  158. data/test/server/ca.rb +201 -0
  159. data/test/server/fileserver.rb +710 -0
  160. data/test/server/logger.rb +175 -0
  161. data/test/server/master.rb +150 -0
  162. data/test/server/server.rb +130 -0
  163. data/test/tagging/tagging.rb +80 -0
  164. data/test/test +51 -0
  165. data/test/types/basic.rb +119 -0
  166. data/test/types/component.rb +272 -0
  167. data/test/types/cron.rb +261 -0
  168. data/test/types/exec.rb +273 -0
  169. data/test/types/file.rb +616 -0
  170. data/test/types/filebucket.rb +167 -0
  171. data/test/types/fileignoresource.rb +287 -0
  172. data/test/types/filesources.rb +587 -0
  173. data/test/types/filetype.rb +162 -0
  174. data/test/types/group.rb +271 -0
  175. data/test/types/package.rb +205 -0
  176. data/test/types/query.rb +101 -0
  177. data/test/types/service.rb +100 -0
  178. data/test/types/symlink.rb +93 -0
  179. data/test/types/tidy.rb +124 -0
  180. data/test/types/type.rb +135 -0
  181. data/test/types/user.rb +371 -0
  182. metadata +243 -0
@@ -0,0 +1,195 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = "../.."
5
+ end
6
+
7
+ require 'puppet/log'
8
+ require 'puppet'
9
+ require 'puppettest'
10
+ require 'test/unit'
11
+
12
+ # $Id: log.rb 740 2005-11-01 20:22:19Z luke $
13
+
14
+ class TestLog < Test::Unit::TestCase
15
+ include TestPuppet
16
+
17
+ def teardown
18
+ super
19
+ Puppet::Log.close
20
+ end
21
+
22
+ def getlevels
23
+ levels = nil
24
+ assert_nothing_raised() {
25
+ levels = []
26
+ Puppet::Log.eachlevel { |level| levels << level }
27
+ }
28
+ # Don't test the top levels; too annoying
29
+ return levels.reject { |level| level == :emerg or level == :crit }
30
+ end
31
+
32
+ def mkmsgs(levels)
33
+ levels.collect { |level|
34
+ assert_nothing_raised() {
35
+ Puppet::Log.new(
36
+ :level => level,
37
+ :source => "Test",
38
+ :message => "Unit test for %s" % level
39
+ )
40
+ }
41
+ }
42
+ end
43
+
44
+ def test_logfile
45
+ fact = nil
46
+ levels = nil
47
+ levels = getlevels
48
+ logfile = tempfile()
49
+ assert_nothing_raised() {
50
+ Puppet::Log.newdestination(logfile)
51
+ }
52
+ msgs = mkmsgs(levels)
53
+ assert(msgs.length == levels.length)
54
+ Puppet::Log.close
55
+ count = 0
56
+ assert_nothing_raised() {
57
+ File.open(logfile) { |of|
58
+ count = of.readlines.length
59
+ }
60
+ }
61
+ assert(count == levels.length)
62
+ end
63
+
64
+ def test_syslog
65
+ levels = nil
66
+ assert_nothing_raised() {
67
+ levels = getlevels.reject { |level|
68
+ level == :emerg || level == :crit
69
+ }
70
+ }
71
+ assert_nothing_raised() {
72
+ Puppet::Log.newdestination("syslog")
73
+ }
74
+ # there's really no way to verify that we got syslog messages...
75
+ msgs = mkmsgs(levels)
76
+ assert(msgs.length == levels.length)
77
+ end
78
+
79
+ def test_consolelog
80
+ Puppet[:debug] = true if __FILE__ == $0
81
+ fact = nil
82
+ levels = getlevels
83
+ assert_nothing_raised() {
84
+ Puppet::Log.newdestination(:console)
85
+ }
86
+ msgs = mkmsgs(levels)
87
+ assert(msgs.length == levels.length)
88
+ Puppet::Log.close
89
+ end
90
+
91
+ def test_levelmethods
92
+ assert_nothing_raised() {
93
+ Puppet::Log.newdestination("/dev/null")
94
+ }
95
+ getlevels.each { |level|
96
+ assert_nothing_raised() {
97
+ Puppet.send(level,"Testing for %s" % level)
98
+ }
99
+ }
100
+ end
101
+
102
+ def test_output
103
+ Puppet[:debug] = false
104
+ assert(Puppet.err("This is an error").is_a?(Puppet::Log))
105
+ assert(Puppet.debug("This is debugging").nil?)
106
+ Puppet[:debug] = true
107
+ assert(Puppet.err("This is an error").is_a?(Puppet::Log))
108
+ assert(Puppet.debug("This is debugging").is_a?(Puppet::Log))
109
+ end
110
+
111
+ def test_creatingdirs
112
+ Puppet[:logdest] = "/tmp/logtesting/logfile"
113
+ Puppet.info "testing logs"
114
+ assert(FileTest.directory?("/tmp/logtesting"))
115
+ assert(FileTest.file?("/tmp/logtesting/logfile"))
116
+
117
+ system("rm -rf /tmp/logtesting")
118
+ end
119
+
120
+ def test_logtags
121
+ path = tempfile
122
+ File.open(path, "w") { |f| f.puts "yayness" }
123
+
124
+ file = Puppet::Type::PFile.create(
125
+ :path => path,
126
+ :check => [:owner, :group, :mode, :checksum]
127
+ )
128
+ file.tags = %w{this is a test}
129
+
130
+ log = nil
131
+ assert_nothing_raised {
132
+ log = Puppet::Log.new(
133
+ :level => :info,
134
+ :source => file,
135
+ :message => "A test message"
136
+ )
137
+ }
138
+
139
+ assert(log.tags, "Got no tags")
140
+
141
+ assert_equal(log.tags, file.tags, "Tags were not equal")
142
+ assert_equal(log.source, file.path, "Source was not set correctly")
143
+ end
144
+
145
+ # Verify that we can pass strings that match printf args
146
+ def test_percentlogs
147
+ Puppet[:logdest] = :syslog
148
+
149
+ assert_nothing_raised {
150
+ Puppet::Log.new(
151
+ :level => :info,
152
+ :message => "A message with %s in it"
153
+ )
154
+ }
155
+ end
156
+
157
+ # Verify that the error and source are always strings
158
+ def test_argsAreStrings
159
+ msg = nil
160
+ file = Puppet::Type::PFile.create(
161
+ :path => tempfile(),
162
+ :check => %w{owner group}
163
+ )
164
+ assert_nothing_raised {
165
+ msg = Puppet::Log.new(:level => :info, :message => "This is a message")
166
+ }
167
+ assert_nothing_raised {
168
+ msg.source = file
169
+ }
170
+
171
+ assert_instance_of(String, msg.to_s)
172
+ assert_instance_of(String, msg.source)
173
+ end
174
+
175
+ # Verify that loglevel behaves as one expects
176
+ def test_loglevel
177
+ path = tempfile()
178
+ file = Puppet::Type::PFile.create(
179
+ :path => path,
180
+ :create => true
181
+ )
182
+
183
+ assert_nothing_raised {
184
+ assert_equal(:notice, file[:loglevel])
185
+ }
186
+
187
+ assert_nothing_raised {
188
+ file[:loglevel] = "warning"
189
+ }
190
+
191
+ assert_nothing_raised {
192
+ assert_equal(:warning, file[:loglevel])
193
+ }
194
+ end
195
+ end
@@ -0,0 +1,92 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = "../.."
5
+ end
6
+
7
+ require 'puppet/metric'
8
+ require 'puppet'
9
+ require 'puppet/type'
10
+ require 'test/unit'
11
+
12
+ $haverrd = true
13
+ begin
14
+ require 'RRD'
15
+ rescue LoadError
16
+ $haverrd = false
17
+ end
18
+
19
+ if $haverrd
20
+ class TestMetric < Test::Unit::TestCase
21
+
22
+ def gendata
23
+ totalmax = 1000
24
+ changemax = 1000
25
+ eventmax = 10
26
+ maxdiff = 10
27
+
28
+ types = [Puppet::Type::PFile, Puppet::Type::Package, Puppet::Type::Service]
29
+ data = [:total, :managed, :outofsync, :changed, :totalchanges]
30
+ events = [:file_changed, :package_installed, :service_started]
31
+
32
+ # if this is the first set of data points...
33
+ typedata = Hash.new { |typehash,type|
34
+ typehash[type] = Hash.new(0)
35
+ }
36
+ eventdata = Hash.new(0)
37
+ types.each { |type|
38
+ name = type.name
39
+ typedata[type] = {}
40
+ typedata[type][:total] = rand(totalmax)
41
+ typedata[type][:managed] = rand(typedata[type][:total])
42
+ typedata[type][:outofsync] = rand(typedata[type][:managed])
43
+ typedata[type][:changed] = rand(typedata[type][:outofsync])
44
+ typedata[type][:totalchanges] = rand(changemax)
45
+ }
46
+
47
+ events.each { |event|
48
+ eventdata[event] = rand(eventmax)
49
+ }
50
+
51
+ return [typedata,eventdata]
52
+ end
53
+
54
+ def setup
55
+ Puppet[:rrddir] = File.join(Puppet[:puppetvar], "rrdtesting")
56
+ Puppet[:rrdgraph] = true
57
+ Puppet[:loglevel] = :debug if __FILE__ == $0
58
+ end
59
+
60
+ def teardown
61
+ system("rm -rf %s" % Puppet[:rrddir])
62
+ end
63
+
64
+ def test_fakedata
65
+ assert_nothing_raised { Puppet::Metric.init }
66
+ time = Time.now.to_i
67
+ start = time
68
+ 10.times {
69
+ assert_nothing_raised { Puppet::Metric.load(gendata) }
70
+ assert_nothing_raised { Puppet::Metric.tally }
71
+ assert_nothing_raised { Puppet::Metric.store(time) }
72
+ assert_nothing_raised { Puppet::Metric.clear }
73
+ time += 300
74
+ }
75
+ assert_nothing_raised { Puppet::Metric.load(gendata) }
76
+ assert_nothing_raised { Puppet::Metric.tally }
77
+ assert_nothing_raised { Puppet::Metric.store(time) }
78
+ assert_nothing_raised { Puppet::Metric.graph([start,time]) }
79
+
80
+ File.open(File.join(Puppet[:rrddir],"index.html"),"w") { |of|
81
+ of.puts "<html><body>"
82
+ Puppet::Metric.each { |metric|
83
+ of.puts "<img src=%s.png><br>" % metric.name
84
+ }
85
+ }
86
+ end
87
+ end
88
+ else
89
+ $stderr.puts "Missing RRD library -- skipping metric tests"
90
+ end
91
+
92
+ # $Id: metrics.rb 724 2005-10-22 22:27:20Z luke $
@@ -0,0 +1,115 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = "../.."
5
+ end
6
+
7
+ require 'puppet'
8
+ require 'puppettest'
9
+ require 'test/unit'
10
+
11
+ class TestOverrides < Test::Unit::TestCase
12
+ include TestPuppet
13
+ def mksubdirs(basedir, level)
14
+ @@tmpfiles << basedir
15
+ dir = basedir.dup
16
+
17
+ (level + 1).times { |index|
18
+ Dir.mkdir(dir)
19
+ path = File.join(dir, "file")
20
+ File.open(path, "w") { |f| f.puts "yayness" }
21
+ dir = File.join(dir, index.to_s)
22
+ }
23
+ end
24
+
25
+ def test_simpleoverride
26
+ basedir = File.join(tmpdir(), "overridetesting")
27
+ mksubdirs(basedir, 1)
28
+
29
+ baseobj = nil
30
+ basefile = File.join(basedir, "file")
31
+ assert_nothing_raised("Could not create base obj") {
32
+ baseobj = Puppet::Type::PFile.create(
33
+ :path => basedir,
34
+ :recurse => true,
35
+ :mode => "755"
36
+ )
37
+ }
38
+
39
+ subobj = nil
40
+ subdir = File.join(basedir, "0")
41
+ subfile = File.join(subdir, "file")
42
+ assert_nothing_raised("Could not create sub obj") {
43
+ subobj = Puppet::Type::PFile.create(
44
+ :path => subdir,
45
+ :recurse => true,
46
+ :mode => "644"
47
+ )
48
+ }
49
+
50
+ comp = newcomp("overrides", baseobj, subobj)
51
+ assert_nothing_raised("Could not eval component") {
52
+ trans = comp.evaluate
53
+ trans.evaluate
54
+ }
55
+
56
+ assert(File.stat(basefile).mode & 007777 == 0755)
57
+ assert(File.stat(subfile).mode & 007777 == 0644)
58
+ end
59
+
60
+ def test_zdeepoverride
61
+ basedir = File.join(tmpdir(), "deepoverridetesting")
62
+ mksubdirs(basedir, 10)
63
+
64
+ baseobj = nil
65
+ assert_nothing_raised("Could not create base obj") {
66
+ baseobj = Puppet::Type::PFile.create(
67
+ :path => basedir,
68
+ :recurse => true,
69
+ :mode => "755"
70
+ )
71
+ }
72
+
73
+ children = []
74
+ files = {}
75
+ subdir = basedir.dup
76
+ mode = nil
77
+ 10.times { |index|
78
+ next unless index % 3
79
+ subdir = File.join(subdir, index.to_s)
80
+ path = File.join(subdir, "file")
81
+ if index % 2
82
+ mode = "644"
83
+ files[path] = 0644
84
+ else
85
+ mode = "750"
86
+ files[path] = 0750
87
+ end
88
+
89
+ assert_nothing_raised("Could not create sub obj") {
90
+ children << Puppet::Type::PFile.create(
91
+ :path => subdir,
92
+ :recurse => true,
93
+ :mode => mode
94
+ )
95
+ }
96
+ }
97
+
98
+ comp = newcomp("overrides", baseobj)
99
+ children.each { |child| comp.push child }
100
+
101
+ assert_nothing_raised("Could not eval component") {
102
+ trans = comp.evaluate
103
+ trans.evaluate
104
+ }
105
+
106
+ files.each { |path, mode|
107
+ assert(FileTest.exists?(path), "File %s does not exist" % path)
108
+ curmode = File.stat(path).mode & 007777
109
+ assert(curmode == mode,
110
+ "File %s was incorrect mode %o instead of %o" % [path, curmode, mode])
111
+ }
112
+ end
113
+ end
114
+
115
+ # $Id: overrides.rb 724 2005-10-22 22:27:20Z luke $
@@ -0,0 +1,31 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = "../.."
5
+ end
6
+
7
+ require 'puppet'
8
+ require 'puppet/parsedfile'
9
+ require 'puppettest'
10
+ require 'test/unit'
11
+
12
+ class TestParsedFile < Test::Unit::TestCase
13
+ include TestPuppet
14
+ def test_file
15
+ file = nil
16
+ path = tempfile()
17
+ File.open(path, "w") { |f| f.puts "yayness" }
18
+ assert_nothing_raised {
19
+ file = Puppet::ParsedFile.new(path)
20
+ }
21
+
22
+ assert(!file.changed?, "File incorrectly returned changed")
23
+
24
+ sleep(1)
25
+ File.open(path, "w") { |f| f.puts "booness" }
26
+
27
+ assert(file.changed?, "File did not catch change")
28
+ end
29
+ end
30
+
31
+ # $Id: parsedfile.rb 724 2005-10-22 22:27:20Z luke $
@@ -0,0 +1,113 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = "../.."
5
+ end
6
+
7
+ require 'puppet'
8
+ require 'puppettest'
9
+ require 'test/unit'
10
+
11
+ class TestRelationships < Test::Unit::TestCase
12
+ include TestPuppet
13
+ def newfile
14
+ assert_nothing_raised() {
15
+ return Puppet::Type::PFile.create(
16
+ :path => tempfile,
17
+ :check => [:mode, :owner, :group]
18
+ )
19
+ }
20
+ end
21
+
22
+ def test_simplerel
23
+ file1 = newfile()
24
+ file2 = newfile()
25
+ assert_nothing_raised {
26
+ file1[:require] = [file2.class.name, file2.name]
27
+ }
28
+
29
+ deps = []
30
+ assert_nothing_raised {
31
+ file1.eachdependency { |obj|
32
+ deps << obj
33
+ }
34
+ }
35
+
36
+ assert_equal(1, deps.length, "Did not get dependency")
37
+
38
+ assert_nothing_raised {
39
+ file1.unsubscribe(file2)
40
+ }
41
+
42
+ deps = []
43
+ assert_nothing_raised {
44
+ file1.eachdependency { |obj|
45
+ deps << obj
46
+ }
47
+ }
48
+
49
+ assert_equal(0, deps.length, "Still have dependency")
50
+ end
51
+
52
+ def test_newsub
53
+ file1 = newfile()
54
+ file2 = newfile()
55
+
56
+ sub = nil
57
+ assert_nothing_raised("Could not create subscription") {
58
+ sub = Puppet::Event::Subscription.new(
59
+ :source => file1,
60
+ :target => file2,
61
+ :event => :ALL_EVENTS,
62
+ :callback => :refresh
63
+ )
64
+ }
65
+
66
+ subs = nil
67
+
68
+ assert_nothing_raised {
69
+ subs = Puppet::Event::Subscription.subscribers(file1)
70
+ }
71
+ assert_equal(1, subs.length, "Got incorrect number of subs")
72
+ assert_equal(sub.target, subs[0], "Got incorrect sub")
73
+
74
+ deps = nil
75
+ assert_nothing_raised {
76
+ deps = Puppet::Event::Subscription.dependencies(file2)
77
+ }
78
+ assert_equal(1, deps.length, "Got incorrect number of deps")
79
+ assert_equal(sub, deps[0], "Got incorrect dep")
80
+ end
81
+
82
+ def test_eventmatch
83
+ file1 = newfile()
84
+ file2 = newfile()
85
+
86
+ sub = nil
87
+ assert_nothing_raised("Could not create subscription") {
88
+ sub = Puppet::Event::Subscription.new(
89
+ :source => file1,
90
+ :target => file2,
91
+ :event => :ALL_EVENTS,
92
+ :callback => :refresh
93
+ )
94
+ }
95
+
96
+ assert(sub.match?(:anything), "ALL_EVENTS did not match")
97
+ assert(! sub.match?(:NONE), "ALL_EVENTS matched :NONE")
98
+
99
+ sub.event = :file_created
100
+
101
+ assert(sub.match?(:file_created), "event did not match")
102
+ assert(sub.match?(:ALL_EVENTS), "ALL_EVENTS did not match")
103
+ assert(! sub.match?(:NONE), "ALL_EVENTS matched :NONE")
104
+
105
+ sub.event = :NONE
106
+
107
+ assert(! sub.match?(:file_created), "Invalid match")
108
+ assert(! sub.match?(:ALL_EVENTS), "ALL_EVENTS matched")
109
+ assert(! sub.match?(:NONE), "matched :NONE")
110
+ end
111
+ end
112
+
113
+ # $Id: relationships.rb 724 2005-10-22 22:27:20Z luke $