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,445 @@
1
+ #!/usr/bin/ruby -w
2
+
3
+ if __FILE__ == $0
4
+ $:.unshift '../../lib'
5
+ $:.unshift '..'
6
+ $puppetbase = "../.."
7
+ end
8
+
9
+ require 'puppet'
10
+ require 'puppet/parser/interpreter'
11
+ require 'puppet/parser/parser'
12
+ require 'puppet/client'
13
+ require 'puppet/server'
14
+ require 'test/unit'
15
+ require 'puppettest'
16
+
17
+ # so, what kind of things do we want to test?
18
+
19
+ # we don't need to test function, since we're confident in the
20
+ # library tests. We do, however, need to test how things are actually
21
+ # working in the language.
22
+
23
+ # so really, we want to do things like test that our ast is correct
24
+ # and test whether we've got things in the right scopes
25
+
26
+ class TestSnippets < Test::Unit::TestCase
27
+ include TestPuppet
28
+ $snippetbase = File.join($puppetbase, "examples", "code", "snippets")
29
+
30
+ def file2ast(file)
31
+ parser = Puppet::Parser::Parser.new()
32
+ parser.file = file
33
+ ast = parser.parse
34
+
35
+ return ast
36
+ end
37
+
38
+ def snippet2ast(text)
39
+ parser = Puppet::Parser::Parser.new()
40
+ parser.string = text
41
+ ast = parser.parse
42
+
43
+ return ast
44
+ end
45
+
46
+ def client
47
+ args = {
48
+ :Listen => false
49
+ }
50
+ Puppet::Client.new(args)
51
+ end
52
+
53
+ def ast2scope(ast)
54
+ interp = Puppet::Parser::Interpreter.new(
55
+ :ast => ast,
56
+ :client => client()
57
+ )
58
+ scope = Puppet::Parser::Scope.new()
59
+ ast.evaluate(scope)
60
+
61
+ return scope
62
+ end
63
+
64
+ def scope2objs(scope)
65
+ objs = scope.to_trans
66
+ end
67
+
68
+ def snippet2scope(snippet)
69
+ ast = snippet2ast(snippet)
70
+ scope = ast2scope(ast)
71
+ end
72
+
73
+ def snippet2objs(snippet)
74
+ ast = snippet2ast(snippet)
75
+ scope = ast2scope(ast)
76
+ objs = scope2objs(scope)
77
+ end
78
+
79
+ def states(type)
80
+ states = type.validstates
81
+ end
82
+
83
+ def metaparams(type)
84
+ mparams = []
85
+ Puppet::Type.eachmetaparam { |param|
86
+ mparams.push param
87
+ }
88
+
89
+ mparams
90
+ end
91
+
92
+ def params(type)
93
+ params = []
94
+ type.parameters.each { |name,state|
95
+ params.push name
96
+ }
97
+
98
+ params
99
+ end
100
+
101
+ def randthing(thing,type)
102
+ list = self.send(thing,type)
103
+ list[rand(list.length)]
104
+ end
105
+
106
+ def randeach(type)
107
+ [:states, :metaparams, :params].collect { |thing|
108
+ randthing(thing,type)
109
+ }
110
+ end
111
+
112
+ @@snippets = {
113
+ true => [
114
+ %{File { mode => 755 }}
115
+ ],
116
+ }
117
+
118
+ def disabled_test_defaults
119
+ Puppet::Type.eachtype { |type|
120
+ next if type.name == :puppet or type.name == :component
121
+
122
+ rands = randeach(type)
123
+
124
+ name = type.name.to_s.capitalize
125
+
126
+ [0..1, 0..2].each { |range|
127
+ params = rands[range]
128
+ paramstr = params.collect { |param|
129
+ "%s => fake" % param
130
+ }.join(", ")
131
+
132
+ str = "%s { %s }" % [name, paramstr]
133
+
134
+ scope = nil
135
+ assert_nothing_raised {
136
+ scope = snippet2scope(str)
137
+ }
138
+
139
+ defaults = nil
140
+ assert_nothing_raised {
141
+ defaults = scope.lookupdefaults(name)
142
+ }
143
+
144
+ p defaults
145
+
146
+ params.each { |param|
147
+ puts "%s => '%s'" % [name,param]
148
+ assert(defaults.include?(param))
149
+ }
150
+ }
151
+ }
152
+ end
153
+
154
+ # this is here in case no tests get defined; otherwise we get a warning
155
+ def test_nothing
156
+ end
157
+
158
+ def snippet_filecreate(trans)
159
+ %w{a b c d}.each { |letter|
160
+ file = "/tmp/create%stest" % letter
161
+ Puppet.info "testing %s" % file
162
+ assert(Puppet::Type::PFile[file], "File %s does not exist" % file)
163
+ assert(FileTest.exists?(file))
164
+ @@tmpfiles << file
165
+ }
166
+ %w{a b}.each { |letter|
167
+ file = "/tmp/create%stest" % letter
168
+ assert(File.stat(file).mode & 007777 == 0755)
169
+ }
170
+
171
+ assert_nothing_raised {
172
+ trans.rollback
173
+ }
174
+ %w{a b c d}.each { |letter|
175
+ file = "/tmp/create%stest" % letter
176
+ assert(! FileTest.exists?(file), "File %s still exists" % file)
177
+ }
178
+ end
179
+
180
+ def snippet_simpledefaults(trans)
181
+ file = "/tmp/defaulttest"
182
+ @@tmpfiles << file
183
+ assert(FileTest.exists?(file), "File %s does not exist" % file)
184
+ assert(File.stat(file).mode & 007777 == 0755)
185
+
186
+ assert_nothing_raised {
187
+ trans.rollback
188
+ }
189
+ assert(! FileTest.exists?(file))
190
+ end
191
+
192
+ def snippet_simpleselector(trans)
193
+ files = %w{a b c d}.collect { |letter|
194
+ "/tmp/snippetselect%stest" % letter
195
+ }
196
+ @@tmpfiles += files
197
+
198
+ files.each { |file|
199
+ assert(FileTest.exists?(file))
200
+ assert(File.stat(file).mode & 007777 == 0755)
201
+ @@tmpfiles << file
202
+ }
203
+
204
+ assert_nothing_raised {
205
+ trans.rollback
206
+ }
207
+ files.each { |file|
208
+ assert(! FileTest.exists?(file))
209
+ }
210
+ end
211
+
212
+ def snippet_classpathtest(trans)
213
+ file = "/tmp/classtest"
214
+ @@tmpfiles << file
215
+
216
+ assert(FileTest.exists?(file))
217
+
218
+ obj = nil
219
+ assert_nothing_raised {
220
+ obj = Puppet::Type::PFile[file]
221
+ }
222
+
223
+ assert_nothing_raised {
224
+ assert_equal(
225
+ "//testing/component[componentname]/file=/tmp/classtest",
226
+ obj.path)
227
+ #Puppet.err obj.path
228
+ }
229
+
230
+ assert_nothing_raised {
231
+ trans.rollback
232
+ }
233
+ assert(! FileTest.exists?(file))
234
+ end
235
+
236
+ def snippet_argumentdefaults(trans)
237
+ file1 = "/tmp/argumenttest1"
238
+ file2 = "/tmp/argumenttest2"
239
+ @@tmpfiles << file1
240
+ @@tmpfiles << file2
241
+
242
+ assert(FileTest.exists?(file1))
243
+ assert(File.stat(file1).mode & 007777 == 0755)
244
+
245
+ assert(FileTest.exists?(file2))
246
+ assert(File.stat(file2).mode & 007777 == 0644)
247
+ end
248
+
249
+ def snippet_casestatement(trans)
250
+ files = %w{
251
+ /tmp/existsfile
252
+ /tmp/existsfile2
253
+ /tmp/existsfile3
254
+ }
255
+
256
+ files.each { |file|
257
+ assert(FileTest.exists?(file), "File %s is missing" % file)
258
+ assert(File.stat(file).mode & 007777 == 0755, "File %s is not 755" % file)
259
+ }
260
+
261
+ assert_nothing_raised {
262
+ trans.rollback
263
+ }
264
+ end
265
+
266
+ def snippet_implicititeration(trans)
267
+ files = %w{a b c d e f g h}.collect { |l| "/tmp/iteration%stest" % l }
268
+
269
+ files.each { |file|
270
+ @@tmpfiles << file
271
+ assert(FileTest.exists?(file), "File %s does not exist" % file)
272
+ assert(File.stat(file).mode & 007777 == 0755,
273
+ "File %s is not 755" % file)
274
+
275
+ }
276
+
277
+ assert_nothing_raised {
278
+ trans.rollback
279
+ }
280
+
281
+ files.each { |file|
282
+ assert(! FileTest.exists?(file), "file %s still exists" % file)
283
+ }
284
+ end
285
+
286
+ def snippet_multipleinstances(trans)
287
+ files = %w{a b c}.collect { |l| "/tmp/multipleinstances%s" % l }
288
+
289
+ files.each { |file|
290
+ @@tmpfiles << file
291
+ assert(FileTest.exists?(file), "File %s does not exist" % file)
292
+ assert(File.stat(file).mode & 007777 == 0755,
293
+ "File %s is not 755" % file)
294
+
295
+ }
296
+
297
+ assert_nothing_raised {
298
+ trans.rollback
299
+ }
300
+
301
+ files.each { |file|
302
+ assert(! FileTest.exists?(file), "file %s still exists" % file)
303
+ }
304
+ end
305
+
306
+ def snippet_namevartest(trans)
307
+ file = "/tmp/testfiletest"
308
+ dir = "/tmp/testdirtest"
309
+ @@tmpfiles << file
310
+ @@tmpfiles << dir
311
+ assert(FileTest.file?(file), "File %s does not exist" % file)
312
+ assert(FileTest.directory?(dir), "Directory %s does not exist" % dir)
313
+ end
314
+
315
+ def snippet_scopetest(trans)
316
+ file = "/tmp/scopetest"
317
+ @@tmpfiles << file
318
+ assert(FileTest.file?(file), "File %s does not exist" % file)
319
+ assert(File.stat(file).mode & 007777 == 0755,
320
+ "File %s is not 755" % file)
321
+ end
322
+
323
+ def snippet_failmissingexecpath(trans)
324
+ file = "/tmp/exectesting1"
325
+ execfile = "/tmp/execdisttesting"
326
+ @@tmpfiles << file
327
+ @@tmpfiles << execfile
328
+ assert(!FileTest.exists?(execfile), "File %s exists" % execfile)
329
+ end
330
+
331
+ def snippet_selectorvalues(trans)
332
+ nums = %w{1 2 3}
333
+ files = nums.collect { |n|
334
+ "/tmp/selectorvalues%s" % n
335
+ }
336
+
337
+ files.each { |f|
338
+ @@tmpfiles << f
339
+ assert(FileTest.exists?(f), "File %s does not exist" % f)
340
+ assert(File.stat(f).mode & 007777 == 0755,
341
+ "File %s is not 755" % f)
342
+ }
343
+ end
344
+
345
+ def snippet_falsevalues(trans)
346
+ file = "/tmp/falsevaluesfalse"
347
+ @@tmpfiles << file
348
+ assert(FileTest.exists?(file), "File %s does not exist" % file)
349
+ end
350
+
351
+ def disabled_snippet_classargtest(trans)
352
+ [1,2].each { |num|
353
+ file = "/tmp/classargtest%s" % num
354
+ @@tmpfiles << file
355
+ assert(FileTest.file?(file), "File %s does not exist" % file)
356
+ assert(File.stat(file).mode & 007777 == 0755,
357
+ "File %s is not 755" % file)
358
+ }
359
+ end
360
+
361
+ def snippet_classheirarchy(trans)
362
+ [1,2,3].each { |num|
363
+ file = "/tmp/classheir%s" % num
364
+ @@tmpfiles << file
365
+ assert(FileTest.file?(file), "File %s does not exist" % file)
366
+ assert(File.stat(file).mode & 007777 == 0755,
367
+ "File %s is not 755" % file)
368
+ }
369
+ end
370
+
371
+ def snippet_classincludes(trans)
372
+ [1,2,3].each { |num|
373
+ file = "/tmp/classincludes%s" % num
374
+ @@tmpfiles << file
375
+ assert(FileTest.file?(file), "File %s does not exist" % file)
376
+ assert(File.stat(file).mode & 007777 == 0755,
377
+ "File %s is not 755" % file)
378
+ }
379
+ end
380
+
381
+ def disabled_snippet_dirchmod(trans)
382
+ dirs = %w{a b}.collect { |letter|
383
+ "/tmp/dirchmodtest%s" % letter
384
+ }
385
+
386
+ @@tmpfiles << dirs
387
+
388
+ dirs.each { |dir|
389
+ assert(FileTest.directory?(dir))
390
+ }
391
+
392
+ assert(File.stat("/tmp/dirchmodtesta").mode & 007777 == 0755)
393
+ assert(File.stat("/tmp/dirchmodtestb").mode & 007777 == 0700)
394
+
395
+ assert_nothing_raised {
396
+ trans.rollback
397
+ }
398
+ end
399
+
400
+ # XXX this is the answer
401
+ Dir.entries($snippetbase).sort.each { |file|
402
+ next if file =~ /^\./
403
+
404
+
405
+ mname = "snippet_" + file.sub(/\.pp$/, '')
406
+ if self.method_defined?(mname)
407
+ #eval("alias %s %s" % [testname, mname])
408
+ testname = ("test_" + mname).intern
409
+ self.send(:define_method, testname) {
410
+ # first parse the file
411
+ server = Puppet::Server::Master.new(
412
+ :File => File.join($snippetbase, file),
413
+ :Local => true
414
+ )
415
+ client = Puppet::Client::MasterClient.new(
416
+ :Master => server,
417
+ :Cache => false
418
+ )
419
+
420
+ assert(client.local)
421
+ assert_nothing_raised {
422
+ client.getconfig()
423
+ }
424
+ trans = nil
425
+ assert_nothing_raised {
426
+ trans = client.apply()
427
+ }
428
+
429
+ Puppet::Type.eachtype { |type|
430
+ type.each { |obj|
431
+ unless obj.name == "puppet[top]"
432
+ assert(obj.parent, "%s has no parent" % obj.name)
433
+ end
434
+ assert(obj.name)
435
+ }
436
+ }
437
+ assert_nothing_raised {
438
+ self.send(mname, trans)
439
+ }
440
+ }
441
+ mname = mname.intern
442
+ #eval("alias %s %s" % [testname, mname])
443
+ end
444
+ }
445
+ end
@@ -0,0 +1,111 @@
1
+ if __FILE__ == $0
2
+ $:.unshift '..'
3
+ $:.unshift '../../lib'
4
+ $puppetbase = "../../../../language/trunk"
5
+ end
6
+
7
+ require 'puppet'
8
+ require 'puppettest'
9
+ require 'test/unit'
10
+
11
+ # $Id: events.rb 724 2005-10-22 22:27:20Z luke $
12
+
13
+ class TestEvents < Test::Unit::TestCase
14
+ include TestPuppet
15
+ def teardown
16
+ super
17
+ Puppet::Event::Subscription.clear
18
+ end
19
+
20
+ def test_simplesubscribe
21
+ file = Puppet::Type::PFile.create(
22
+ :name => "/tmp/eventtestingA",
23
+ :create => true
24
+ )
25
+ exec = Puppet::Type::Exec.create(
26
+ :name => "echo true",
27
+ :path => "/usr/bin:/bin",
28
+ :refreshonly => true,
29
+ :subscribe => [[file.class.name, file.name]]
30
+ )
31
+
32
+ @@tmpfiles << "/tmp/eventtestingA"
33
+
34
+ comp = newcomp("eventtesting", file, exec)
35
+
36
+ trans = assert_events(comp, [:file_created], "events")
37
+
38
+ assert_equal(1, trans.triggered?(exec, :refresh))
39
+ end
40
+
41
+ def test_simplerequire
42
+ file = Puppet::Type::PFile.create(
43
+ :name => "/tmp/eventtestingA",
44
+ :create => true
45
+ )
46
+ exec = Puppet::Type::Exec.create(
47
+ :name => "echo true",
48
+ :path => "/usr/bin:/bin",
49
+ :refreshonly => true,
50
+ :require => [[file.class.name, file.name]]
51
+ )
52
+
53
+ @@tmpfiles << "/tmp/eventtestingA"
54
+
55
+ comp = Puppet::Type::Component.create(
56
+ :name => "eventtesting"
57
+ )
58
+ comp.push exec
59
+ trans = comp.evaluate
60
+ events = nil
61
+ assert_nothing_raised {
62
+ events = trans.evaluate
63
+ }
64
+
65
+ assert_equal(1, events.length)
66
+
67
+ assert_equal(0, trans.triggered?(exec, :refresh))
68
+ end
69
+
70
+ def test_zladderrequire
71
+ comps = {}
72
+ objects = {}
73
+ fname = "/tmp/eventtestfuntest"
74
+ [:a, :b].each { |l|
75
+ case l
76
+ when :a
77
+ name = "/tmp/eventtesting%s" % l
78
+ objects[l] = Puppet::Type::PFile.create(
79
+ :name => name,
80
+ :create => true
81
+ )
82
+ @@tmpfiles << name
83
+ when :b
84
+ objects[l] = Puppet::Type::Exec.create(
85
+ :name => "touch %s" % fname,
86
+ :path => "/usr/bin:/bin",
87
+ :refreshonly => true
88
+ )
89
+ @@tmpfiles << fname
90
+ end
91
+
92
+
93
+ comps[l] = Puppet::Type::Component.create(
94
+ :name => "eventtesting%s" % l
95
+ )
96
+
97
+ comps[l].push objects[l]
98
+ }
99
+
100
+ comps[:b][:subscribe] = [[comps[:a].class.name, comps[:a].name]]
101
+
102
+ trans = comps[:a].evaluate
103
+ events = nil
104
+ assert_nothing_raised {
105
+ events = trans.evaluate
106
+ }
107
+
108
+ assert(FileTest.exists?(fname))
109
+ #assert_equal(events.length, trans.triggered?(objects[:b], :refresh))
110
+ end
111
+ end