beaker 0.0.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +8 -8
  2. data/.travis.yml +8 -0
  3. data/README.md +6 -6
  4. data/beaker.gemspec +6 -2
  5. data/lib/beaker.rb +1 -1
  6. data/lib/beaker/answers.rb +34 -7
  7. data/lib/beaker/answers/version20.rb +124 -0
  8. data/lib/beaker/answers/version28.rb +21 -0
  9. data/lib/beaker/answers/version30.rb +24 -5
  10. data/lib/beaker/cli.rb +55 -41
  11. data/lib/beaker/command.rb +2 -2
  12. data/lib/beaker/dsl/helpers.rb +320 -106
  13. data/lib/beaker/dsl/install_utils.rb +202 -81
  14. data/lib/beaker/dsl/roles.rb +40 -0
  15. data/lib/beaker/host.rb +28 -20
  16. data/lib/beaker/host/unix.rb +7 -4
  17. data/lib/beaker/host/unix/pkg.rb +42 -12
  18. data/lib/beaker/host/windows.rb +9 -5
  19. data/lib/beaker/host/windows/group.rb +1 -1
  20. data/lib/beaker/host/windows/pkg.rb +41 -8
  21. data/lib/beaker/hypervisor.rb +23 -10
  22. data/lib/beaker/hypervisor/aixer.rb +15 -19
  23. data/lib/beaker/hypervisor/blimper.rb +71 -72
  24. data/lib/beaker/hypervisor/fusion.rb +11 -10
  25. data/lib/beaker/hypervisor/solaris.rb +17 -23
  26. data/lib/beaker/hypervisor/vagrant.rb +27 -12
  27. data/lib/beaker/hypervisor/vcloud.rb +154 -138
  28. data/lib/beaker/hypervisor/vcloud_pooled.rb +97 -0
  29. data/lib/beaker/hypervisor/vsphere.rb +8 -5
  30. data/lib/beaker/hypervisor/vsphere_helper.rb +43 -33
  31. data/lib/beaker/network_manager.rb +16 -12
  32. data/lib/beaker/options/command_line_parser.rb +199 -0
  33. data/lib/beaker/options/hosts_file_parser.rb +39 -0
  34. data/lib/beaker/options/options_file_parser.rb +45 -0
  35. data/lib/beaker/options/options_hash.rb +294 -0
  36. data/lib/beaker/options/parser.rb +288 -0
  37. data/lib/beaker/options/pe_version_scraper.rb +35 -0
  38. data/lib/beaker/options/presets.rb +70 -0
  39. data/lib/beaker/shared.rb +2 -1
  40. data/lib/beaker/shared/host_handler.rb +7 -2
  41. data/lib/beaker/shared/repetition.rb +1 -0
  42. data/lib/beaker/shared/timed.rb +14 -0
  43. data/lib/beaker/test_case.rb +2 -38
  44. data/lib/beaker/test_suite.rb +11 -25
  45. data/lib/beaker/utils/repo_control.rb +6 -8
  46. data/lib/beaker/utils/setup_helper.rb +9 -20
  47. data/spec/beaker/answers_spec.rb +109 -0
  48. data/spec/beaker/command_spec.rb +2 -2
  49. data/spec/beaker/dsl/assertions_spec.rb +1 -3
  50. data/spec/beaker/dsl/helpers_spec.rb +519 -84
  51. data/spec/beaker/dsl/install_utils_spec.rb +265 -16
  52. data/spec/beaker/dsl/roles_spec.rb +31 -10
  53. data/spec/beaker/host/windows/group_spec.rb +55 -0
  54. data/spec/beaker/host_spec.rb +130 -40
  55. data/spec/beaker/hypervisor/aixer_spec.rb +34 -0
  56. data/spec/beaker/hypervisor/blimper_spec.rb +77 -0
  57. data/spec/beaker/hypervisor/fusion_spec.rb +26 -0
  58. data/spec/beaker/hypervisor/hypervisor_spec.rb +66 -0
  59. data/spec/beaker/hypervisor/solaris_spec.rb +39 -0
  60. data/spec/beaker/hypervisor/vagrant_spec.rb +105 -0
  61. data/spec/beaker/hypervisor/vcloud_pooled_spec.rb +60 -0
  62. data/spec/beaker/hypervisor/vcloud_spec.rb +70 -0
  63. data/spec/beaker/hypervisor/vsphere_helper_spec.rb +162 -0
  64. data/spec/beaker/hypervisor/vsphere_spec.rb +76 -0
  65. data/spec/beaker/options/command_line_parser_spec.rb +25 -0
  66. data/spec/beaker/options/data/LATEST +1 -0
  67. data/spec/beaker/options/data/badyaml.cfg +21 -0
  68. data/spec/beaker/options/data/hosts.cfg +21 -0
  69. data/spec/beaker/options/data/opts.txt +6 -0
  70. data/spec/beaker/options/hosts_file_parser_spec.rb +30 -0
  71. data/spec/beaker/options/options_file_parser_spec.rb +23 -0
  72. data/spec/beaker/options/options_hash_spec.rb +111 -0
  73. data/spec/beaker/options/parser_spec.rb +172 -0
  74. data/spec/beaker/options/pe_version_scaper_spec.rb +15 -0
  75. data/spec/beaker/options/presets_spec.rb +24 -0
  76. data/spec/beaker/puppet_command_spec.rb +54 -21
  77. data/spec/beaker/shared/error_handler_spec.rb +40 -0
  78. data/spec/beaker/shared/host_handler_spec.rb +104 -0
  79. data/spec/beaker/shared/repetition_spec.rb +72 -0
  80. data/spec/beaker/test_suite_spec.rb +3 -16
  81. data/spec/beaker/utils/ntp_control_spec.rb +42 -0
  82. data/spec/beaker/utils/repo_control_spec.rb +168 -0
  83. data/spec/beaker/utils/setup_helper_spec.rb +82 -0
  84. data/spec/beaker/utils/validator_spec.rb +58 -0
  85. data/spec/helpers.rb +97 -0
  86. data/spec/matchers.rb +39 -0
  87. data/spec/mock_blimpy.rb +48 -0
  88. data/spec/mock_fission.rb +60 -0
  89. data/spec/mock_vsphere.rb +310 -0
  90. data/spec/mock_vsphere_helper.rb +183 -0
  91. data/spec/mocks.rb +83 -0
  92. data/spec/spec_helper.rb +8 -1
  93. metadata +106 -13
  94. data/beaker.rb +0 -10
  95. data/lib/beaker/options_parsing.rb +0 -323
  96. data/lib/beaker/test_config.rb +0 -148
  97. data/spec/beaker/options_parsing_spec.rb +0 -37
  98. data/spec/mocks_and_helpers.rb +0 -34
@@ -0,0 +1,183 @@
1
+ class MockVsphereSnapshot
2
+ attr_accessor :name
3
+
4
+ def RevertToSnapshot_Task
5
+ self
6
+ end
7
+
8
+ def wait_for_completion
9
+ true
10
+ end
11
+
12
+ end
13
+
14
+
15
+ class MockVsphereVM
16
+ attr_accessor :name, :powerState, :snapshot, :template, :toolsRunningStatus
17
+
18
+ def initialize
19
+ @powerState = "poweredOff"
20
+ @toolsRunningStatus = "guestToolsStopped"
21
+ @first = true
22
+ end
23
+
24
+ def runtime
25
+ self
26
+ end
27
+
28
+ def powerState
29
+ @powerState
30
+ end
31
+
32
+ def toolsRunningStatus
33
+ prev = @toolsRunningStatus
34
+ @toolsRunningStatus = "guestToolsRunning"
35
+ prev
36
+ end
37
+
38
+ def PowerOnVM_Task
39
+ @powerState = 'poweredOn'
40
+ self
41
+ end
42
+
43
+ def PowerOffVM_Task
44
+ @powerState = "poweredOff"
45
+ self
46
+ end
47
+
48
+ def summary
49
+ self
50
+ end
51
+
52
+ def guest
53
+ self
54
+ end
55
+
56
+ def ipAddress
57
+ @toolsRunningStatus = 'guestToolsRunning'
58
+ "#{@name}.ip.address"
59
+ end
60
+
61
+ def CloneVM_Task opts
62
+ clone = MockVsphereVM.new
63
+ clone.name = opts[:name]
64
+ clone.snapshot = self.snapshot
65
+ clone.template = self.template
66
+ clone.PowerOnVM_Task
67
+ MockVsphereHelper.add_vm( opts[:name], clone )
68
+ clone
69
+ end
70
+
71
+ def wait_for_completion
72
+ true
73
+ end
74
+
75
+ def Destroy_Task
76
+ true
77
+ end
78
+
79
+ end
80
+
81
+
82
+ class MockVsphereHelper
83
+
84
+ @@fog_file = {}
85
+ @@vms = {}
86
+
87
+ def initialize arg
88
+
89
+ end
90
+
91
+ def self.add_vm name, vm
92
+ @@vms[name] = vm
93
+ end
94
+
95
+ def self.set_config conf
96
+ @@fog_file = conf
97
+ end
98
+
99
+ def self.powerOn
100
+ @@vms.each do | name, vm |
101
+ vm.powerState = "poweredOn"
102
+ end
103
+ end
104
+
105
+ def self.powerOff
106
+ @@vms.each do | name, vm |
107
+ vm.powerState = "poweredOff"
108
+ end
109
+ end
110
+
111
+ def self.set_vms hosts
112
+ @@vms = {}
113
+ hosts.each do |host|
114
+ vm = MockVsphereVM.new
115
+ vm.name = host.name
116
+ vm.snapshot = MockVsphereSnapshot.new
117
+ vm.snapshot.name = host[:snapshot]
118
+ @@vms[host.name] = vm
119
+ template = MockVsphereVM.new
120
+ template.name = host[:template]
121
+ template.snapshot = MockVsphereSnapshot.new
122
+ template.snapshot.name = host[:snapshot]
123
+ @@vms[host[:template]] = template
124
+ end
125
+ end
126
+
127
+ def self.load_config file
128
+ @@fog_file
129
+ end
130
+
131
+ def find_vms keys
132
+ found = {}
133
+ keys = ([] << keys)
134
+ keys.flatten!
135
+ keys.each do |key|
136
+ if @@vms.has_key?( key )
137
+ found[key] = @@vms[key]
138
+ end
139
+ end
140
+ found
141
+ end
142
+
143
+ def self.find_vm key
144
+ if @@vms.has_key?( key )
145
+ @@vms[key]
146
+ else
147
+ nil
148
+ end
149
+ end
150
+
151
+ def find_snapshot vm, snap
152
+ if @@vms[vm.name].snapshot.name == snap
153
+ @@vms[vm.name].snapshot
154
+ else
155
+ nil
156
+ end
157
+ end
158
+
159
+ def find_customization template
160
+ nil
161
+ end
162
+
163
+ def find_datastore datastore
164
+ datastore
165
+ end
166
+
167
+ def find_pool pool
168
+ pool
169
+ end
170
+
171
+ def find_folder folder
172
+ folder
173
+ end
174
+
175
+ def wait_for_tasks tasks, try, attempts
176
+ true
177
+ end
178
+
179
+ def close
180
+ true
181
+ end
182
+
183
+ end
data/spec/mocks.rb ADDED
@@ -0,0 +1,83 @@
1
+ class MockIO < IO
2
+ def initialize
3
+ end
4
+
5
+ methods.each do |meth|
6
+ define_method(:meth) {}
7
+ end
8
+
9
+ def === other
10
+ super other
11
+ end
12
+ end
13
+
14
+ module MockNet
15
+ class HTTP
16
+
17
+ class Response
18
+ class ResponseHash
19
+ def []key
20
+ { 'ok' => true, 'hostname' => 'pool' }
21
+ end
22
+
23
+ end
24
+
25
+ def body
26
+ ResponseHash.new
27
+ end
28
+
29
+ end
30
+
31
+ class Post
32
+ def initialize uri
33
+ @uri = uri
34
+ end
35
+
36
+ def set_form_data hash
37
+
38
+ end
39
+ end
40
+
41
+ class Delete
42
+ def initialize uri
43
+ @uri = uri
44
+ end
45
+ end
46
+
47
+ def initialize host, port
48
+ @host = host
49
+ @port = port
50
+ end
51
+
52
+ def request req
53
+ Response.new
54
+ end
55
+ end
56
+
57
+ end
58
+
59
+ class FakeHost
60
+ attr_accessor :commands
61
+
62
+ def initialize(options = {})
63
+ @pe = options[:pe]
64
+ @commands = []
65
+ end
66
+
67
+ def is_pe?
68
+ @pe
69
+ end
70
+
71
+ def any_exec_result
72
+ RSpec::Mocks::Mock.new('exec-result').as_null_object
73
+ end
74
+
75
+ def exec(command, options = {})
76
+ commands << command
77
+ any_exec_result
78
+ end
79
+
80
+ def command_strings
81
+ commands.map { |c| [c.command, c.args].join(' ') }
82
+ end
83
+ end
data/spec/spec_helper.rb CHANGED
@@ -7,9 +7,16 @@ end
7
7
 
8
8
  require 'beaker'
9
9
  require 'fakefs/spec_helpers'
10
- require 'mocks_and_helpers'
10
+ require 'mocks'
11
+ require 'helpers'
12
+ require 'matchers'
13
+ require 'mock_fission'
14
+ require 'mock_blimpy'
15
+ require 'mock_vsphere'
16
+ require 'mock_vsphere_helper'
11
17
 
12
18
  RSpec.configure do |config|
13
19
  config.include FakeFS::SpecHelpers
14
20
  config.include TestFileHelpers
21
+ config.include HostHelpers
15
22
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppetlabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-20 00:00:00.000000000 Z
11
+ date: 2013-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 2.11.0
19
+ version: 2.14.0
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 2.11.0
26
+ version: 2.14.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: fakefs
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -220,6 +220,20 @@ dependencies:
220
220
  - - ! '>='
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: unf
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ! '>='
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
223
237
  description: Puppetlabs accceptance testing harness
224
238
  email:
225
239
  - delivery@puppetlabs.com
@@ -231,16 +245,17 @@ files:
231
245
  - .gitignore
232
246
  - .rspec
233
247
  - .simplecov
248
+ - .travis.yml
234
249
  - DOCUMENTING.md
235
250
  - Gemfile
236
251
  - LICENSE
237
252
  - README.md
238
253
  - Rakefile
239
254
  - beaker.gemspec
240
- - beaker.rb
241
255
  - bin/beaker
242
256
  - lib/beaker.rb
243
257
  - lib/beaker/answers.rb
258
+ - lib/beaker/answers/version20.rb
244
259
  - lib/beaker/answers/version28.rb
245
260
  - lib/beaker/answers/version30.rb
246
261
  - lib/beaker/cli.rb
@@ -278,25 +293,34 @@ files:
278
293
  - lib/beaker/hypervisor/solaris.rb
279
294
  - lib/beaker/hypervisor/vagrant.rb
280
295
  - lib/beaker/hypervisor/vcloud.rb
296
+ - lib/beaker/hypervisor/vcloud_pooled.rb
281
297
  - lib/beaker/hypervisor/vsphere.rb
282
298
  - lib/beaker/hypervisor/vsphere_helper.rb
283
299
  - lib/beaker/logger.rb
284
300
  - lib/beaker/network_manager.rb
285
- - lib/beaker/options_parsing.rb
301
+ - lib/beaker/options.rb
302
+ - lib/beaker/options/command_line_parser.rb
303
+ - lib/beaker/options/hosts_file_parser.rb
304
+ - lib/beaker/options/options_file_parser.rb
305
+ - lib/beaker/options/options_hash.rb
306
+ - lib/beaker/options/parser.rb
307
+ - lib/beaker/options/pe_version_scraper.rb
308
+ - lib/beaker/options/presets.rb
286
309
  - lib/beaker/result.rb
287
310
  - lib/beaker/shared.rb
288
311
  - lib/beaker/shared/error_handler.rb
289
312
  - lib/beaker/shared/host_handler.rb
290
313
  - lib/beaker/shared/repetition.rb
314
+ - lib/beaker/shared/timed.rb
291
315
  - lib/beaker/ssh_connection.rb
292
316
  - lib/beaker/test_case.rb
293
- - lib/beaker/test_config.rb
294
317
  - lib/beaker/test_suite.rb
295
318
  - lib/beaker/utils.rb
296
319
  - lib/beaker/utils/ntp_control.rb
297
320
  - lib/beaker/utils/repo_control.rb
298
321
  - lib/beaker/utils/setup_helper.rb
299
322
  - lib/beaker/utils/validator.rb
323
+ - spec/beaker/answers_spec.rb
300
324
  - spec/beaker/command_spec.rb
301
325
  - spec/beaker/dsl/assertions_spec.rb
302
326
  - spec/beaker/dsl/helpers_spec.rb
@@ -305,14 +329,48 @@ files:
305
329
  - spec/beaker/dsl/roles_spec.rb
306
330
  - spec/beaker/dsl/structure_spec.rb
307
331
  - spec/beaker/dsl/wrappers_spec.rb
332
+ - spec/beaker/host/windows/group_spec.rb
308
333
  - spec/beaker/host_spec.rb
334
+ - spec/beaker/hypervisor/aixer_spec.rb
335
+ - spec/beaker/hypervisor/blimper_spec.rb
336
+ - spec/beaker/hypervisor/fusion_spec.rb
337
+ - spec/beaker/hypervisor/hypervisor_spec.rb
338
+ - spec/beaker/hypervisor/solaris_spec.rb
339
+ - spec/beaker/hypervisor/vagrant_spec.rb
340
+ - spec/beaker/hypervisor/vcloud_pooled_spec.rb
341
+ - spec/beaker/hypervisor/vcloud_spec.rb
342
+ - spec/beaker/hypervisor/vsphere_helper_spec.rb
343
+ - spec/beaker/hypervisor/vsphere_spec.rb
309
344
  - spec/beaker/logger_spec.rb
310
- - spec/beaker/options_parsing_spec.rb
345
+ - spec/beaker/options/command_line_parser_spec.rb
346
+ - spec/beaker/options/data/LATEST
347
+ - spec/beaker/options/data/badyaml.cfg
348
+ - spec/beaker/options/data/hosts.cfg
349
+ - spec/beaker/options/data/opts.txt
350
+ - spec/beaker/options/hosts_file_parser_spec.rb
351
+ - spec/beaker/options/options_file_parser_spec.rb
352
+ - spec/beaker/options/options_hash_spec.rb
353
+ - spec/beaker/options/parser_spec.rb
354
+ - spec/beaker/options/pe_version_scaper_spec.rb
355
+ - spec/beaker/options/presets_spec.rb
311
356
  - spec/beaker/puppet_command_spec.rb
357
+ - spec/beaker/shared/error_handler_spec.rb
358
+ - spec/beaker/shared/host_handler_spec.rb
359
+ - spec/beaker/shared/repetition_spec.rb
312
360
  - spec/beaker/ssh_connection_spec.rb
313
361
  - spec/beaker/test_case_spec.rb
314
362
  - spec/beaker/test_suite_spec.rb
315
- - spec/mocks_and_helpers.rb
363
+ - spec/beaker/utils/ntp_control_spec.rb
364
+ - spec/beaker/utils/repo_control_spec.rb
365
+ - spec/beaker/utils/setup_helper_spec.rb
366
+ - spec/beaker/utils/validator_spec.rb
367
+ - spec/helpers.rb
368
+ - spec/matchers.rb
369
+ - spec/mock_blimpy.rb
370
+ - spec/mock_fission.rb
371
+ - spec/mock_vsphere.rb
372
+ - spec/mock_vsphere_helper.rb
373
+ - spec/mocks.rb
316
374
  - spec/spec_helper.rb
317
375
  homepage: https://github.com/puppetlabs/beaker
318
376
  licenses:
@@ -339,6 +397,7 @@ signing_key:
339
397
  specification_version: 4
340
398
  summary: Let's test Puppet!
341
399
  test_files:
400
+ - spec/beaker/answers_spec.rb
342
401
  - spec/beaker/command_spec.rb
343
402
  - spec/beaker/dsl/assertions_spec.rb
344
403
  - spec/beaker/dsl/helpers_spec.rb
@@ -347,13 +406,47 @@ test_files:
347
406
  - spec/beaker/dsl/roles_spec.rb
348
407
  - spec/beaker/dsl/structure_spec.rb
349
408
  - spec/beaker/dsl/wrappers_spec.rb
409
+ - spec/beaker/host/windows/group_spec.rb
350
410
  - spec/beaker/host_spec.rb
411
+ - spec/beaker/hypervisor/aixer_spec.rb
412
+ - spec/beaker/hypervisor/blimper_spec.rb
413
+ - spec/beaker/hypervisor/fusion_spec.rb
414
+ - spec/beaker/hypervisor/hypervisor_spec.rb
415
+ - spec/beaker/hypervisor/solaris_spec.rb
416
+ - spec/beaker/hypervisor/vagrant_spec.rb
417
+ - spec/beaker/hypervisor/vcloud_pooled_spec.rb
418
+ - spec/beaker/hypervisor/vcloud_spec.rb
419
+ - spec/beaker/hypervisor/vsphere_helper_spec.rb
420
+ - spec/beaker/hypervisor/vsphere_spec.rb
351
421
  - spec/beaker/logger_spec.rb
352
- - spec/beaker/options_parsing_spec.rb
422
+ - spec/beaker/options/command_line_parser_spec.rb
423
+ - spec/beaker/options/data/LATEST
424
+ - spec/beaker/options/data/badyaml.cfg
425
+ - spec/beaker/options/data/hosts.cfg
426
+ - spec/beaker/options/data/opts.txt
427
+ - spec/beaker/options/hosts_file_parser_spec.rb
428
+ - spec/beaker/options/options_file_parser_spec.rb
429
+ - spec/beaker/options/options_hash_spec.rb
430
+ - spec/beaker/options/parser_spec.rb
431
+ - spec/beaker/options/pe_version_scaper_spec.rb
432
+ - spec/beaker/options/presets_spec.rb
353
433
  - spec/beaker/puppet_command_spec.rb
434
+ - spec/beaker/shared/error_handler_spec.rb
435
+ - spec/beaker/shared/host_handler_spec.rb
436
+ - spec/beaker/shared/repetition_spec.rb
354
437
  - spec/beaker/ssh_connection_spec.rb
355
438
  - spec/beaker/test_case_spec.rb
356
439
  - spec/beaker/test_suite_spec.rb
357
- - spec/mocks_and_helpers.rb
440
+ - spec/beaker/utils/ntp_control_spec.rb
441
+ - spec/beaker/utils/repo_control_spec.rb
442
+ - spec/beaker/utils/setup_helper_spec.rb
443
+ - spec/beaker/utils/validator_spec.rb
444
+ - spec/helpers.rb
445
+ - spec/matchers.rb
446
+ - spec/mock_blimpy.rb
447
+ - spec/mock_fission.rb
448
+ - spec/mock_vsphere.rb
449
+ - spec/mock_vsphere_helper.rb
450
+ - spec/mocks.rb
358
451
  - spec/spec_helper.rb
359
452
  has_rdoc: