beaker 2.52.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. checksums.yaml +8 -8
  2. data/HISTORY.md +27034 -2
  3. data/acceptance/tests/base/external_resources_test.rb +7 -25
  4. data/acceptance/tests/base/host/host_test.rb +106 -0
  5. data/beaker.gemspec +13 -12
  6. data/docs/concepts/shared_options_for_executing_beaker_commands.md +1 -1
  7. data/docs/how_to/hypervisors/openstack.md +9 -0
  8. data/docs/how_to/test_arbitrary_beaker_versions.md +46 -0
  9. data/docs/how_to/upgrade_from_2_to_3.md +76 -0
  10. data/docs/tutorials/README.md +82 -0
  11. data/lib/beaker/dsl.rb +0 -2
  12. data/lib/beaker/dsl/helpers/puppet_helpers.rb +2 -1
  13. data/lib/beaker/dsl/install_utils/windows_utils.rb +27 -1
  14. data/lib/beaker/host.rb +16 -1
  15. data/lib/beaker/host/unix/exec.rb +4 -4
  16. data/lib/beaker/host/unix/pkg.rb +3 -2
  17. data/lib/beaker/host_prebuilt_steps.rb +2 -46
  18. data/lib/beaker/hypervisor.rb +1 -1
  19. data/lib/beaker/hypervisor/openstack.rb +19 -34
  20. data/lib/beaker/options/presets.rb +1 -5
  21. data/lib/beaker/version.rb +1 -1
  22. data/spec/beaker/dsl/helpers/puppet_helpers_spec.rb +18 -4
  23. data/spec/beaker/dsl/helpers/web_helpers_spec.rb +26 -4
  24. data/spec/beaker/dsl/install_utils/windows_utils_spec.rb +47 -1
  25. data/spec/beaker/host/unix/pkg_spec.rb +1 -0
  26. data/spec/beaker/host_prebuilt_steps_spec.rb +2 -33
  27. data/spec/beaker/host_spec.rb +14 -2
  28. data/spec/beaker/hypervisor/hypervisor_spec.rb +0 -15
  29. data/spec/beaker/hypervisor/openstack_spec.rb +5 -0
  30. data/spec/helpers.rb +1 -0
  31. metadata +15 -105
  32. data/lib/beaker/hypervisor/aixer.rb +0 -48
  33. data/lib/beaker/hypervisor/solaris.rb +0 -59
  34. data/spec/beaker/hypervisor/aixer_spec.rb +0 -34
  35. data/spec/beaker/hypervisor/solaris_spec.rb +0 -40
@@ -341,6 +341,7 @@ module Beaker
341
341
  if version == 10
342
342
  allow( instance ).to receive( :noask_file_text )
343
343
  allow( instance ).to receive( :create_remote_file )
344
+ allow( instance ).to receive( :execute ).with('/opt/csw/bin/pkgutil -y -i pkgutil')
344
345
  end
345
346
  # only expect diff in the last line: .not_to vs .to raise_error
346
347
  expect{
@@ -163,37 +163,6 @@ describe Beaker do
163
163
  end
164
164
  end
165
165
 
166
- context "epel_info_for!" do
167
- subject { dummy_class.new }
168
-
169
- it "can return the correct url for an el-7 host" do
170
- host = make_host( 'testhost', { :platform => Beaker::Platform.new('el-7-platform') } )
171
-
172
- expect( subject.epel_info_for( host, options )).to be === ["http://dl.fedoraproject.org/pub/epel/7", "x86_64", "epel-release-7-8.noarch.rpm"]
173
- end
174
-
175
- it "can return the correct url for an el-6 host" do
176
- host = make_host( 'testhost', { :platform => Beaker::Platform.new('el-6-platform') } )
177
-
178
- expect( subject.epel_info_for( host, options )).to be === ["http://dl.fedoraproject.org/pub/epel/6", "i386", "epel-release-6-8.noarch.rpm"]
179
- end
180
-
181
- it "can return the correct url for an el-5 host" do
182
- host = make_host( 'testhost', { :platform => Beaker::Platform.new('el-5-platform') } )
183
-
184
- expect( subject.epel_info_for( host, options )).to be === ["http://dl.fedoraproject.org/pub/epel/5", "i386", "epel-release-5-4.noarch.rpm"]
185
-
186
- end
187
-
188
- it "raises an error on non el-5/6 host" do
189
- host = make_host( 'testhost', { :platform => Beaker::Platform.new('el-4-platform') } )
190
-
191
- expect{ subject.epel_info_for( host, options )}.to raise_error(ArgumentError, /epel_info_for does not support el version/)
192
-
193
- end
194
-
195
- end
196
-
197
166
  context "apt_get_update" do
198
167
  subject { dummy_class.new }
199
168
 
@@ -335,8 +304,8 @@ describe Beaker do
335
304
  hosts[4][:platform] = Beaker::Platform.new('oracle-5-arch')
336
305
 
337
306
  expect( Beaker::Command ).to receive( :new ).with("rpm -qa | grep epel-release").exactly( 6 ).times
338
- expect( Beaker::Command ).to receive( :new ).with("rpm -i http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm").exactly( 4 ).times
339
- expect( Beaker::Command ).to receive( :new ).with("rpm -i http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm").exactly( 2 ).times
307
+ expect( Beaker::Command ).to receive( :new ).with("rpm -i http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm").exactly( 4 ).times
308
+ expect( Beaker::Command ).to receive( :new ).with("rpm -i http://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm").exactly( 2 ).times
340
309
  expect( Beaker::Command ).to receive( :new ).with("sed -i -e 's;#baseurl.*$;baseurl=http://dl\\.fedoraproject\\.org/pub/epel/6/$basearch;' /etc/yum.repos.d/epel.repo").exactly( 4 ).times
341
310
  expect( Beaker::Command ).to receive( :new ).with("sed -i -e 's;#baseurl.*$;baseurl=http://dl\\.fedoraproject\\.org/pub/epel/5/$basearch;' /etc/yum.repos.d/epel.repo").exactly( 2 ).times
342
311
  expect( Beaker::Command ).to receive( :new ).with("sed -i -e '/mirrorlist/d' /etc/yum.repos.d/epel.repo").exactly( 6 ).times
@@ -197,7 +197,7 @@ module Beaker
197
197
  result.exit_code = 1
198
198
  expect( Beaker::Command ).to receive(:new).with("grep ^key=.*\\/my\\/first\\/value ~/.ssh/environment")
199
199
  expect( host ).to receive(:exec).and_return(result)
200
- expect( Beaker::Command ).to receive(:new).with(/grep \^key ~\/\.ssh\/environment/)
200
+ expect( Beaker::Command ).to receive(:new).with(/grep \^key= ~\/\.ssh\/environment/)
201
201
  expect( host ).to receive(:exec).and_return(result)
202
202
  expect( Beaker::Command ).to receive(:new).with("echo \"key=/my/first/value\" >> ~/.ssh/environment")
203
203
  host.add_env_var('key', '/my/first/value')
@@ -210,7 +210,7 @@ module Beaker
210
210
  expect( host ).to receive(:exec).and_return(result)
211
211
  result = Beaker::Result.new(host, '')
212
212
  result.exit_code = 0
213
- expect( Beaker::Command ).to receive(:new).with(/grep \^key ~\/\.ssh\/environment/)
213
+ expect( Beaker::Command ).to receive(:new).with(/grep \^key= ~\/\.ssh\/environment/)
214
214
  expect( host ).to receive(:exec).and_return(result)
215
215
  expect( Beaker::SedCommand ).to receive(:new).with('unix', 's/^key=/key=\\/my\\/first\\/value:/', '~/.ssh/environment')
216
216
  host.add_env_var('key', '/my/first/value')
@@ -740,5 +740,17 @@ module Beaker
740
740
  expect(host.ip).to eq('127.0.0.1')
741
741
  end
742
742
  end
743
+
744
+ describe "#wait_for_port" do
745
+ it 'returns true when port is open' do
746
+ allow(host).to receive(:repeat_fibonacci_style_for).and_return(true)
747
+ expect(host.wait_for_port(22, 0)).to be true
748
+ end
749
+
750
+ it 'returns false when port is not open' do
751
+ allow(host).to receive(:repeat_fibonacci_style_for).and_return(false)
752
+ expect(host.wait_for_port(22, 0)).to be false
753
+ end
754
+ end
743
755
  end
744
756
  end
@@ -4,21 +4,6 @@ module Beaker
4
4
  describe Hypervisor do
5
5
  let( :hypervisor ) { Beaker::Hypervisor }
6
6
 
7
- it "creates an aix hypervisor for aix hosts" do
8
- aix = double( 'aix' )
9
- allow( aix ).to receive( :provision ).and_return( true )
10
-
11
- expect( Aixer ).to receive( :new ).once.and_return( aix )
12
- expect( hypervisor.create( 'aix', [], make_opts() ) ).to be === aix
13
- end
14
-
15
- it "creates a solaris hypervisor for solaris hosts" do
16
- solaris = double( 'solaris' )
17
- allow( solaris ).to receive( :provision ).and_return( true )
18
- expect( Solaris ).to receive( :new ).once.and_return( solaris )
19
- expect( hypervisor.create( 'solaris', [], make_opts() ) ).to be === solaris
20
- end
21
-
22
7
  it "creates a vsphere hypervisor for vsphere hosts" do
23
8
  vsphere = double( 'vsphere' )
24
9
  allow( vsphere ).to receive( :provision ).and_return( true )
@@ -29,6 +29,7 @@ module Beaker
29
29
  expect(options['openstack_network']).to eq('testing')
30
30
  expect(options['openstack_keyname']).to eq('nopass')
31
31
  expect(options['security_group']).to eq(['my_sg', 'default'])
32
+ expect(options['floating_ip_pool']).to eq('my_pool')
32
33
  end
33
34
 
34
35
  it 'check hosts options during initialization' do
@@ -61,6 +62,10 @@ module Beaker
61
62
  :image_ref => 54321)
62
63
  )
63
64
 
65
+ @hosts.each do |host|
66
+ allow(host).to receive(:wait_for_port).and_return(true)
67
+ end
68
+
64
69
  openstack.provision
65
70
  end
66
71
 
data/spec/helpers.rb CHANGED
@@ -70,6 +70,7 @@ module HostHelpers
70
70
  :openstack_tenant => "testing",
71
71
  :openstack_network => "testing",
72
72
  :openstack_keyname => "nopass",
73
+ :floating_ip_pool => "my_pool",
73
74
  :security_group => ['my_sg', 'default'] } )
74
75
  end
75
76
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.52.0
4
+ version: 3.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: 2016-11-30 00:00:00.000000000 Z
11
+ date: 2016-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '10.1'
61
+ version: '11.2'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '10.1'
68
+ version: '11.2'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - ~>
158
158
  - !ruby/object:Gem::Version
159
- version: '2.9'
159
+ version: '3.2'
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - ~>
165
165
  - !ruby/object:Gem::Version
166
- version: '2.9'
166
+ version: '3.2'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: net-scp
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -234,20 +234,6 @@ dependencies:
234
234
  - - ~>
235
235
  - !ruby/object:Gem::Version
236
236
  version: '0.1'
237
- - !ruby/object:Gem::Dependency
238
- name: beaker-answers
239
- requirement: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - ~>
242
- - !ruby/object:Gem::Version
243
- version: '0.0'
244
- type: :runtime
245
- prerelease: false
246
- version_requirements: !ruby/object:Gem::Requirement
247
- requirements:
248
- - - ~>
249
- - !ruby/object:Gem::Version
250
- version: '0.0'
251
237
  - !ruby/object:Gem::Dependency
252
238
  name: stringify-hash
253
239
  requirement: !ruby/object:Gem::Requirement
@@ -276,20 +262,6 @@ dependencies:
276
262
  - - ~>
277
263
  - !ruby/object:Gem::Version
278
264
  version: '0.0'
279
- - !ruby/object:Gem::Dependency
280
- name: beaker-pe
281
- requirement: !ruby/object:Gem::Requirement
282
- requirements:
283
- - - ~>
284
- - !ruby/object:Gem::Version
285
- version: '0.0'
286
- type: :runtime
287
- prerelease: false
288
- version_requirements: !ruby/object:Gem::Requirement
289
- requirements:
290
- - - ~>
291
- - !ruby/object:Gem::Version
292
- version: '0.0'
293
265
  - !ruby/object:Gem::Dependency
294
266
  name: beaker-hostgenerator
295
267
  requirement: !ruby/object:Gem::Requirement
@@ -310,20 +282,14 @@ dependencies:
310
282
  requirements:
311
283
  - - ~>
312
284
  - !ruby/object:Gem::Version
313
- version: '1.8'
314
- - - <
315
- - !ruby/object:Gem::Version
316
- version: 1.9.0
285
+ version: '1.9'
317
286
  type: :runtime
318
287
  prerelease: false
319
288
  version_requirements: !ruby/object:Gem::Requirement
320
289
  requirements:
321
290
  - - ~>
322
291
  - !ruby/object:Gem::Version
323
- version: '1.8'
324
- - - <
325
- - !ruby/object:Gem::Version
326
- version: 1.9.0
292
+ version: '1.9'
327
293
  - !ruby/object:Gem::Dependency
328
294
  name: fission
329
295
  requirement: !ruby/object:Gem::Requirement
@@ -344,20 +310,14 @@ dependencies:
344
310
  requirements:
345
311
  - - ~>
346
312
  - !ruby/object:Gem::Version
347
- version: '0.8'
348
- - - <
349
- - !ruby/object:Gem::Version
350
- version: 0.9.5
313
+ version: '0.9'
351
314
  type: :runtime
352
315
  prerelease: false
353
316
  version_requirements: !ruby/object:Gem::Requirement
354
317
  requirements:
355
318
  - - ~>
356
319
  - !ruby/object:Gem::Version
357
- version: '0.8'
358
- - - <
359
- - !ruby/object:Gem::Version
360
- version: 0.9.5
320
+ version: '0.9'
361
321
  - !ruby/object:Gem::Dependency
362
322
  name: aws-sdk-v1
363
323
  requirement: !ruby/object:Gem::Requirement
@@ -386,54 +346,20 @@ dependencies:
386
346
  - - ! '>='
387
347
  - !ruby/object:Gem::Version
388
348
  version: '0'
389
- - !ruby/object:Gem::Dependency
390
- name: mime-types
391
- requirement: !ruby/object:Gem::Requirement
392
- requirements:
393
- - - ~>
394
- - !ruby/object:Gem::Version
395
- version: '2.99'
396
- type: :runtime
397
- prerelease: false
398
- version_requirements: !ruby/object:Gem::Requirement
399
- requirements:
400
- - - ~>
401
- - !ruby/object:Gem::Version
402
- version: '2.99'
403
- - !ruby/object:Gem::Dependency
404
- name: fog-google
405
- requirement: !ruby/object:Gem::Requirement
406
- requirements:
407
- - - ~>
408
- - !ruby/object:Gem::Version
409
- version: 0.0.9
410
- type: :runtime
411
- prerelease: false
412
- version_requirements: !ruby/object:Gem::Requirement
413
- requirements:
414
- - - ~>
415
- - !ruby/object:Gem::Version
416
- version: 0.0.9
417
349
  - !ruby/object:Gem::Dependency
418
350
  name: fog
419
351
  requirement: !ruby/object:Gem::Requirement
420
352
  requirements:
421
353
  - - ~>
422
354
  - !ruby/object:Gem::Version
423
- version: '1.25'
424
- - - <
425
- - !ruby/object:Gem::Version
426
- version: 1.35.0
355
+ version: '1.38'
427
356
  type: :runtime
428
357
  prerelease: false
429
358
  version_requirements: !ruby/object:Gem::Requirement
430
359
  requirements:
431
360
  - - ~>
432
361
  - !ruby/object:Gem::Version
433
- version: '1.25'
434
- - - <
435
- - !ruby/object:Gem::Version
436
- version: 1.35.0
362
+ version: '1.38'
437
363
  - !ruby/object:Gem::Dependency
438
364
  name: unf
439
365
  requirement: !ruby/object:Gem::Requirement
@@ -448,20 +374,6 @@ dependencies:
448
374
  - - ~>
449
375
  - !ruby/object:Gem::Version
450
376
  version: '0.1'
451
- - !ruby/object:Gem::Dependency
452
- name: public_suffix
453
- requirement: !ruby/object:Gem::Requirement
454
- requirements:
455
- - - <
456
- - !ruby/object:Gem::Version
457
- version: 1.5.0
458
- type: :runtime
459
- prerelease: false
460
- version_requirements: !ruby/object:Gem::Requirement
461
- requirements:
462
- - - <
463
- - !ruby/object:Gem::Version
464
- version: 1.5.0
465
377
  description: Puppetlabs accceptance testing harness
466
378
  email:
467
379
  - delivery@puppetlabs.com
@@ -477,7 +389,6 @@ files:
477
389
  - CONTRIBUTING.md
478
390
  - DOCUMENTING.md
479
391
  - Gemfile
480
- - Gemfile.lock
481
392
  - HISTORY.md
482
393
  - LICENSE
483
394
  - MAINTAINERS
@@ -625,9 +536,12 @@ files:
625
536
  - docs/how_to/recipes.md
626
537
  - docs/how_to/run_in_parallel.md
627
538
  - docs/how_to/ssh_agent_forwarding.md
539
+ - docs/how_to/test_arbitrary_beaker_versions.md
628
540
  - docs/how_to/the_beaker_dsl.md
541
+ - docs/how_to/upgrade_from_2_to_3.md
629
542
  - docs/how_to/use_user_password_authentication.md
630
543
  - docs/how_to/write_a_beaker_test_for_a_module.md
544
+ - docs/tutorials/README.md
631
545
  - docs/tutorials/creating_a_test_environment.md
632
546
  - docs/tutorials/how_to_beaker.md
633
547
  - docs/tutorials/installation.md
@@ -700,7 +614,6 @@ files:
700
614
  - lib/beaker/host/windows/user.rb
701
615
  - lib/beaker/host_prebuilt_steps.rb
702
616
  - lib/beaker/hypervisor.rb
703
- - lib/beaker/hypervisor/aixer.rb
704
617
  - lib/beaker/hypervisor/aws_sdk.rb
705
618
  - lib/beaker/hypervisor/docker.rb
706
619
  - lib/beaker/hypervisor/ec2_helper.rb
@@ -709,7 +622,6 @@ files:
709
622
  - lib/beaker/hypervisor/google_compute_helper.rb
710
623
  - lib/beaker/hypervisor/noop.rb
711
624
  - lib/beaker/hypervisor/openstack.rb
712
- - lib/beaker/hypervisor/solaris.rb
713
625
  - lib/beaker/hypervisor/vagrant.rb
714
626
  - lib/beaker/hypervisor/vagrant_custom.rb
715
627
  - lib/beaker/hypervisor/vagrant_fusion.rb
@@ -792,7 +704,6 @@ files:
792
704
  - spec/beaker/host/windows_spec.rb
793
705
  - spec/beaker/host_prebuilt_steps_spec.rb
794
706
  - spec/beaker/host_spec.rb
795
- - spec/beaker/hypervisor/aixer_spec.rb
796
707
  - spec/beaker/hypervisor/aws_sdk_spec.rb
797
708
  - spec/beaker/hypervisor/docker_spec.rb
798
709
  - spec/beaker/hypervisor/ec2_helper_spec.rb
@@ -800,7 +711,6 @@ files:
800
711
  - spec/beaker/hypervisor/hypervisor_spec.rb
801
712
  - spec/beaker/hypervisor/hypervisor_spec.rb.orig
802
713
  - spec/beaker/hypervisor/openstack_spec.rb
803
- - spec/beaker/hypervisor/solaris_spec.rb
804
714
  - spec/beaker/hypervisor/vagrant_custom_spec.rb
805
715
  - spec/beaker/hypervisor/vagrant_fusion_spec.rb
806
716
  - spec/beaker/hypervisor/vagrant_libvirt_spec.rb
@@ -1,48 +0,0 @@
1
- module Beaker
2
- class Aixer < Beaker::Hypervisor
3
-
4
- def initialize(aix_hosts, options)
5
- @options = options
6
- @logger = options[:logger]
7
- @hosts = aix_hosts
8
- #aix machines are reverted to known state, not a snapshot
9
- @fog_file = nil
10
- if File.exists?( @options[:dot_fog] )
11
- @fog_file = YAML.load_file( @options[:dot_fog] )
12
- end
13
- raise "Cant load #{@options[:dot_fog]} config" unless @fog_file
14
-
15
- end
16
-
17
- def provision
18
- # Running the rake task on rpm-builder
19
- hypername = @fog_file[:default][:aix_hypervisor_server]
20
- hyperopts = @options.dup
21
- hyperopts['HOSTS'] = {
22
- hypername => { 'platform' => 'el-6-x86_64' }
23
- }
24
-
25
- @logger.notify "Connecting to hypervisor at #{hypername}"
26
- hypervisor = Beaker::Host.create( hypername, hyperopts, @options )
27
- hypervisor[:user] = @fog_file[:default][:aix_hypervisor_username] || hypervisor[:user]
28
- hypervisor[:ssh][:keys] = [@fog_file[:default][:aix_hypervisor_keyfile]] || hypervisor[:ssh][:keys]
29
-
30
- @hosts.each do |host|
31
- vm_name = host['vmname'] || host.name
32
-
33
- @logger.notify "Reverting #{vm_name} to aix clean state"
34
- start = Time.now
35
- # Restore AIX image, ID'd by the hostname
36
- hypervisor.exec(Command.new("cd pe-aix && rake restore:#{host.name}"))
37
- time = Time.now - start
38
- @logger.notify "Spent %.2f seconds reverting" % time
39
- end
40
- hypervisor.close
41
- end
42
-
43
- def cleanup
44
- @logger.notify "No cleanup for aix boxes"
45
- end
46
-
47
- end
48
- end