beaker 2.52.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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