beaker 1.21.0 → 2.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.
- checksums.yaml +8 -8
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/CONTRIBUTING.md +1 -0
- data/HISTORY.md +17288 -2
- data/Rakefile +6 -2
- data/beaker.gemspec +15 -19
- data/lib/beaker.rb +2 -5
- data/lib/beaker/answers.rb +2 -0
- data/lib/beaker/answers/version34.rb +37 -1
- data/lib/beaker/cli.rb +4 -0
- data/lib/beaker/command.rb +16 -84
- data/lib/beaker/command_factory.rb +13 -2
- data/lib/beaker/dsl/assertions.rb +25 -2
- data/lib/beaker/dsl/ezbake_utils.rb +2 -2
- data/lib/beaker/dsl/helpers.rb +66 -12
- data/lib/beaker/dsl/install_utils.rb +128 -66
- data/lib/beaker/dsl/wrappers.rb +41 -3
- data/lib/beaker/host.rb +42 -6
- data/lib/beaker/host/mac.rb +62 -0
- data/lib/beaker/host/mac/group.rb +96 -0
- data/lib/beaker/host/mac/user.rb +93 -0
- data/lib/beaker/host/unix/exec.rb +1 -1
- data/lib/beaker/host/unix/pkg.rb +11 -11
- data/lib/beaker/host/windows.rb +4 -4
- data/lib/beaker/host_prebuilt_steps.rb +194 -58
- data/lib/beaker/hypervisor.rb +16 -9
- data/lib/beaker/hypervisor/aws_sdk.rb +61 -17
- data/lib/beaker/hypervisor/docker.rb +14 -2
- data/lib/beaker/hypervisor/ec2_helper.rb +15 -3
- data/lib/beaker/hypervisor/vagrant.rb +22 -10
- data/lib/beaker/hypervisor/vagrant_libvirt.rb +11 -0
- data/lib/beaker/hypervisor/vagrant_virtualbox.rb +1 -1
- data/lib/beaker/hypervisor/vcloud_pooled.rb +8 -39
- data/lib/beaker/logger.rb +15 -9
- data/lib/beaker/network_manager.rb +2 -2
- data/lib/beaker/options/command_line_parser.rb +1 -1
- data/lib/beaker/options/parser.rb +1 -8
- data/lib/beaker/options/presets.rb +70 -45
- data/lib/beaker/perf.rb +3 -4
- data/lib/beaker/platform.rb +2 -1
- data/lib/beaker/result.rb +3 -9
- data/lib/beaker/ssh_connection.rb +2 -0
- data/lib/beaker/test_case.rb +2 -21
- data/lib/beaker/test_suite.rb +21 -25
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/answers_spec.rb +36 -0
- data/spec/beaker/cli_spec.rb +45 -45
- data/spec/beaker/command_spec.rb +25 -36
- data/spec/beaker/dsl/assertions_spec.rb +20 -27
- data/spec/beaker/dsl/ezbake_utils_spec.rb +5 -5
- data/spec/beaker/dsl/helpers_spec.rb +293 -208
- data/spec/beaker/dsl/install_utils_spec.rb +310 -189
- data/spec/beaker/dsl/outcomes_spec.rb +6 -6
- data/spec/beaker/dsl/roles_spec.rb +27 -18
- data/spec/beaker/dsl/structure_spec.rb +11 -11
- data/spec/beaker/dsl/wrappers_spec.rb +35 -11
- data/spec/beaker/host/mac/group_spec.rb +124 -0
- data/spec/beaker/host/mac/user_spec.rb +134 -0
- data/spec/beaker/host/unix/pkg_spec.rb +40 -24
- data/spec/beaker/host/windows/group_spec.rb +1 -1
- data/spec/beaker/host_prebuilt_steps_spec.rb +194 -68
- data/spec/beaker/host_spec.rb +145 -67
- data/spec/beaker/hypervisor/aixer_spec.rb +6 -6
- data/spec/beaker/hypervisor/aws_sdk_spec.rb +22 -7
- data/spec/beaker/hypervisor/docker_spec.rb +71 -50
- data/spec/beaker/hypervisor/ec2_helper_spec.rb +25 -4
- data/spec/beaker/hypervisor/fusion_spec.rb +2 -2
- data/spec/beaker/hypervisor/hypervisor_spec.rb +20 -27
- data/spec/beaker/hypervisor/hypervisor_spec.rb.orig +80 -0
- data/spec/beaker/hypervisor/solaris_spec.rb +8 -8
- data/spec/beaker/hypervisor/vagrant_fusion_spec.rb +6 -8
- data/spec/beaker/hypervisor/vagrant_libvirt_spec.rb +34 -0
- data/spec/beaker/hypervisor/vagrant_spec.rb +34 -33
- data/spec/beaker/hypervisor/vagrant_virtualbox_spec.rb +18 -8
- data/spec/beaker/hypervisor/vagrant_workstation_spec.rb +6 -8
- data/spec/beaker/hypervisor/vcloud_pooled_spec.rb +8 -8
- data/spec/beaker/hypervisor/vcloud_spec.rb +10 -10
- data/spec/beaker/hypervisor/vsphere_helper_spec.rb +8 -8
- data/spec/beaker/hypervisor/vsphere_spec.rb +1 -1
- data/spec/beaker/logger_spec.rb +45 -31
- data/spec/beaker/options/command_line_parser_spec.rb +10 -2
- data/spec/beaker/options/hosts_file_parser_spec.rb +9 -2
- data/spec/beaker/options/options_hash_spec.rb +2 -2
- data/spec/beaker/options/parser_spec.rb +2 -2
- data/spec/beaker/options/pe_version_scaper_spec.rb +6 -1
- data/spec/beaker/options/presets_spec.rb +11 -1
- data/spec/beaker/shared/error_handler_spec.rb +5 -5
- data/spec/beaker/shared/host_manager_spec.rb +3 -2
- data/spec/beaker/shared/repetition_spec.rb +18 -18
- data/spec/beaker/ssh_connection_spec.rb +33 -4
- data/spec/beaker/test_case_spec.rb +9 -9
- data/spec/beaker/test_suite_spec.rb +14 -14
- data/spec/helpers.rb +4 -4
- data/spec/matchers.rb +4 -4
- data/spec/mocks.rb +5 -1
- data/spec/spec_helper.rb +2 -8
- metadata +114 -80
- data/lib/beaker/hypervisor/blimper.rb +0 -108
- data/spec/beaker/hypervisor/blimper_spec.rb +0 -42
- data/spec/beaker/options/data/LATEST +0 -1
- data/spec/beaker/puppet_command_spec.rb +0 -161
- data/spec/mock_blimpy.rb +0 -48
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Beaker
|
|
4
|
+
describe Hypervisor do
|
|
5
|
+
let( :hypervisor ) { Beaker::Hypervisor }
|
|
6
|
+
|
|
7
|
+
it "creates an aix hypervisor for aix hosts" do
|
|
8
|
+
aix = double( 'aix' )
|
|
9
|
+
aix.stub( :provision ).and_return( true )
|
|
10
|
+
|
|
11
|
+
Aixer.should_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
|
+
solaris.stub( :provision ).and_return( true )
|
|
18
|
+
Solaris.should_receive( :new ).once.and_return( solaris )
|
|
19
|
+
expect( hypervisor.create( 'solaris', [], make_opts() ) ).to be === solaris
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "creates a vsphere hypervisor for vsphere hosts" do
|
|
23
|
+
vsphere = double( 'vsphere' )
|
|
24
|
+
vsphere.stub( :provision ).and_return( true )
|
|
25
|
+
Vsphere.should_receive( :new ).once.and_return( vsphere )
|
|
26
|
+
expect( hypervisor.create( 'vsphere', [], make_opts() ) ).to be === vsphere
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "creates a fusion hypervisor for fusion hosts" do
|
|
30
|
+
fusion = double( 'fusion' )
|
|
31
|
+
fusion.stub( :provision ).and_return( true )
|
|
32
|
+
Fusion.should_receive( :new ).once.and_return( fusion )
|
|
33
|
+
expect( hypervisor.create( 'fusion', [], make_opts() ) ).to be === fusion
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "creates a vcloudpooled hypervisor for vcloud hosts that are pooled" do
|
|
37
|
+
vcloud = double( 'vcloud' )
|
|
38
|
+
vcloud.stub( :provision ).and_return( true )
|
|
39
|
+
VcloudPooled.should_receive( :new ).once.and_return( vcloud )
|
|
40
|
+
expect( hypervisor.create( 'vcloud', [], make_opts().merge( { 'pooling_api' => true } ) ) ).to be === vcloud
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "creates a vcloud hypervisor for vcloud hosts that are not pooled" do
|
|
44
|
+
vcloud = double( 'vcloud' )
|
|
45
|
+
vcloud.stub( :provision ).and_return( true )
|
|
46
|
+
Vcloud.should_receive( :new ).once.and_return( vcloud )
|
|
47
|
+
expect( hypervisor.create( 'vcloud', [], make_opts().merge( { 'pooling_api' => false } ) ) ).to be === vcloud
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "creates a vagrant hypervisor for vagrant hosts" do
|
|
51
|
+
vagrant = double( 'vagrant' )
|
|
52
|
+
vagrant.stub( :provision ).and_return( true )
|
|
53
|
+
Vagrant.should_receive( :new ).once.and_return( vagrant )
|
|
54
|
+
expect( hypervisor.create( 'vagrant', [], make_opts() ) ).to be === vagrant
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "creates a vagrant_fusion hypervisor for vagrant vmware fusion hosts" do
|
|
58
|
+
vagrant = double( 'vagrant_fusion' )
|
|
59
|
+
vagrant.stub( :provision ).and_return( true )
|
|
60
|
+
VagrantFusion.should_receive( :new ).once.and_return( vagrant )
|
|
61
|
+
expect( hypervisor.create( 'vagrant_fusion', [], make_opts() ) ).to be === vagrant
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "creates a vagrant_virtualbox hypervisor for vagrant virtualbox hosts" do
|
|
65
|
+
vagrant = double( 'vagrant_virtualbox' )
|
|
66
|
+
vagrant.stub( :provision ).and_return( true )
|
|
67
|
+
VagrantVirtualbox.should_receive( :new ).once.and_return( vagrant )
|
|
68
|
+
expect( hypervisor.create( 'vagrant_virtualbox', [], make_opts() ) ).to be === vagrant
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "creates a blimpy hypervisor for blimpy hosts" do
|
|
72
|
+
blimpy = double( 'blimpy' )
|
|
73
|
+
blimpy.stub( :provision ).and_return( true )
|
|
74
|
+
Blimper.should_receive( :new ).once.and_return( blimpy )
|
|
75
|
+
expect( hypervisor.create( 'blimpy', [], make_opts() ) ).to be === blimpy
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -6,9 +6,9 @@ module Beaker
|
|
|
6
6
|
|
|
7
7
|
before :each do
|
|
8
8
|
@hosts = make_hosts()
|
|
9
|
-
File.
|
|
10
|
-
YAML.
|
|
11
|
-
Host.
|
|
9
|
+
allow( File ).to receive( :exists? ).and_return( true )
|
|
10
|
+
allow( YAML ).to receive( :load_file ).and_return( fog_file_contents )
|
|
11
|
+
allow_any_instance_of( Host ).to receive( :exec ).and_return( true )
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
it "can provision a set of hosts" do
|
|
@@ -18,17 +18,17 @@ module Beaker
|
|
|
18
18
|
@hosts.each do |host|
|
|
19
19
|
vm_name = host['vmname'] || host.name
|
|
20
20
|
snapshot = host['snapshot']
|
|
21
|
-
Command.
|
|
22
|
-
Command.
|
|
23
|
-
Command.
|
|
21
|
+
expect( Command ).to receive( :new ).with("sudo /sbin/zfs rollback -Rf #{vmpath}/#{vm_name}@#{snapshot}").once
|
|
22
|
+
expect( Command ).to receive( :new ).with("sudo /sbin/zfs rollback -Rf #{vmpath}/#{vm_name}/#{spath}@#{snapshot}").once
|
|
23
|
+
expect( Command ).to receive( :new ).with("sudo /sbin/zoneadm -z #{vm_name} boot").once
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
solaris.provision
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
it "does nothing for cleanup" do
|
|
30
|
-
Command.
|
|
31
|
-
Host.
|
|
30
|
+
expect( Command ).to receive( :new ).never
|
|
31
|
+
expect( Host ).to receive( :exec ).never
|
|
32
32
|
|
|
33
33
|
solaris.cleanup
|
|
34
34
|
end
|
|
@@ -11,20 +11,18 @@ describe Beaker::VagrantFusion do
|
|
|
11
11
|
it "uses the vmware_fusion provider for provisioning" do
|
|
12
12
|
@hosts.each do |host|
|
|
13
13
|
host_prev_name = host['user']
|
|
14
|
-
vagrant.
|
|
15
|
-
vagrant.
|
|
16
|
-
vagrant.
|
|
14
|
+
expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
|
|
15
|
+
expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
|
|
16
|
+
expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
|
|
17
17
|
end
|
|
18
|
-
vagrant.
|
|
19
|
-
|
|
20
|
-
vagrant.should_receive( :vagrant_cmd ).with( "up --provider vmware_fusion" ).once
|
|
18
|
+
expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
|
|
19
|
+
expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider vmware_fusion" ).once
|
|
21
20
|
vagrant.provision
|
|
22
21
|
end
|
|
23
22
|
|
|
24
23
|
it "can make a Vagranfile for a set of hosts" do
|
|
25
|
-
FakeFS.activate!
|
|
26
24
|
path = vagrant.instance_variable_get( :@vagrant_path )
|
|
27
|
-
vagrant.
|
|
25
|
+
allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
|
|
28
26
|
|
|
29
27
|
vagrant.make_vfile( @hosts )
|
|
30
28
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Beaker::VagrantLibvirt do
|
|
4
|
+
let( :options ) { make_opts.merge({ :hosts_file => 'sample.cfg', 'logger' => double().as_null_object }) }
|
|
5
|
+
let( :vagrant ) { Beaker::VagrantLibvirt.new( @hosts, options ) }
|
|
6
|
+
|
|
7
|
+
before :each do
|
|
8
|
+
@hosts = make_hosts()
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "uses the vagrant_libvirt provider for provisioning" do
|
|
12
|
+
@hosts.each do |host|
|
|
13
|
+
host_prev_name = host['user']
|
|
14
|
+
expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
|
|
15
|
+
expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
|
|
16
|
+
expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
|
|
17
|
+
end
|
|
18
|
+
expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
|
|
19
|
+
FakeFS.activate!
|
|
20
|
+
expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider libvirt" ).once
|
|
21
|
+
vagrant.provision
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "can make a Vagranfile for a set of hosts" do
|
|
25
|
+
FakeFS.activate!
|
|
26
|
+
path = vagrant.instance_variable_get( :@vagrant_path )
|
|
27
|
+
allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
|
|
28
|
+
|
|
29
|
+
vagrant.make_vfile( @hosts )
|
|
30
|
+
|
|
31
|
+
vagrantfile = File.read( File.expand_path( File.join( path, "Vagrantfile")))
|
|
32
|
+
expect( vagrantfile ).to include( %Q{ v.vm.provider :libvirt})
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -10,18 +10,16 @@ module Beaker
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
it "stores the vagrant file in $WORKINGDIR/.vagrant/beaker_vagrant_files/sample.cfg" do
|
|
13
|
-
|
|
14
|
-
vagrant.stub( :randmac ).and_return( "0123456789" )
|
|
13
|
+
allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
|
|
15
14
|
path = vagrant.instance_variable_get( :@vagrant_path )
|
|
16
15
|
|
|
17
16
|
expect( path ).to be === File.join(Dir.pwd, '.vagrant', 'beaker_vagrant_files', 'sample.cfg')
|
|
18
17
|
|
|
19
18
|
end
|
|
20
19
|
|
|
21
|
-
it "can make a
|
|
22
|
-
FakeFS.activate!
|
|
20
|
+
it "can make a Vagrantfile for a set of hosts" do
|
|
23
21
|
path = vagrant.instance_variable_get( :@vagrant_path )
|
|
24
|
-
vagrant.
|
|
22
|
+
allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
|
|
25
23
|
|
|
26
24
|
vagrant.make_vfile( @hosts )
|
|
27
25
|
|
|
@@ -66,9 +64,8 @@ EOF
|
|
|
66
64
|
end
|
|
67
65
|
|
|
68
66
|
it "generates a valid windows config" do
|
|
69
|
-
FakeFS.activate!
|
|
70
67
|
path = vagrant.instance_variable_get( :@vagrant_path )
|
|
71
|
-
vagrant.
|
|
68
|
+
allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
|
|
72
69
|
@hosts[0][:platform] = 'windows'
|
|
73
70
|
|
|
74
71
|
vagrant.make_vfile( @hosts )
|
|
@@ -88,9 +85,8 @@ EOF
|
|
|
88
85
|
end
|
|
89
86
|
|
|
90
87
|
it "uses the memsize defined per vagrant host" do
|
|
91
|
-
FakeFS.activate!
|
|
92
88
|
path = vagrant.instance_variable_get( :@vagrant_path )
|
|
93
|
-
vagrant.
|
|
89
|
+
allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
|
|
94
90
|
|
|
95
91
|
vagrant.make_vfile( @hosts, {'vagrant_memsize' => 'hello!'} )
|
|
96
92
|
|
|
@@ -105,7 +101,7 @@ EOF
|
|
|
105
101
|
it "can generate a new /etc/hosts file referencing each host" do
|
|
106
102
|
|
|
107
103
|
@hosts.each do |host|
|
|
108
|
-
vagrant.
|
|
104
|
+
expect( vagrant ).to receive( :set_etc_hosts ).with( host, "127.0.0.1\tlocalhost localhost.localdomain\nip.address.for.vm1\tvm1\nip.address.for.vm2\tvm2\nip.address.for.vm3\tvm3\n" ).once
|
|
109
105
|
end
|
|
110
106
|
|
|
111
107
|
vagrant.hack_etc_hosts( @hosts, options )
|
|
@@ -118,7 +114,7 @@ EOF
|
|
|
118
114
|
host = @hosts[0]
|
|
119
115
|
host[:platform] = 'unix'
|
|
120
116
|
|
|
121
|
-
Command.
|
|
117
|
+
expect( Command ).to receive( :new ).with("sudo su -c \"cp -r .ssh /root/.\"").once
|
|
122
118
|
|
|
123
119
|
vagrant.copy_ssh_to_root( host, options )
|
|
124
120
|
|
|
@@ -128,8 +124,8 @@ EOF
|
|
|
128
124
|
host = @hosts[0]
|
|
129
125
|
host[:platform] = 'windows'
|
|
130
126
|
|
|
131
|
-
Command.
|
|
132
|
-
Command.
|
|
127
|
+
expect( Command ).to receive( :new ).with("cp -r .ssh /cygdrive/c/Users/Administrator/.").once
|
|
128
|
+
expect( Command ).to receive( :new ).with("chown -R Administrator /cygdrive/c/Users/Administrator/.ssh").once
|
|
133
129
|
|
|
134
130
|
vagrant.copy_ssh_to_root( host, options )
|
|
135
131
|
|
|
@@ -139,9 +135,9 @@ EOF
|
|
|
139
135
|
it "can generate a ssh-config file" do
|
|
140
136
|
host = @hosts[0]
|
|
141
137
|
name = host.name
|
|
142
|
-
Dir.
|
|
143
|
-
|
|
144
|
-
|
|
138
|
+
allow( Dir ).to receive( :chdir ).and_yield()
|
|
139
|
+
out = double( 'stdout' )
|
|
140
|
+
allow( out ).to receive( :read ).and_return("Host #{name}
|
|
145
141
|
HostName 127.0.0.1
|
|
146
142
|
User vagrant
|
|
147
143
|
Port 2222
|
|
@@ -151,12 +147,19 @@ EOF
|
|
|
151
147
|
IdentityFile /home/root/.vagrant.d/insecure_private_key
|
|
152
148
|
IdentitiesOnly yes")
|
|
153
149
|
|
|
150
|
+
wait_thr = OpenStruct.new
|
|
151
|
+
state = double( 'state' )
|
|
152
|
+
allow( state ).to receive( :success? ).and_return( true )
|
|
153
|
+
wait_thr.value = state
|
|
154
|
+
|
|
155
|
+
allow( Open3 ).to receive( :popen3 ).with( 'vagrant', 'ssh-config', name ).and_return( [ "", out, "", wait_thr ])
|
|
156
|
+
|
|
154
157
|
file = double( 'file' )
|
|
155
|
-
file.
|
|
156
|
-
file.
|
|
158
|
+
allow( file ).to receive( :path ).and_return( '/path/sshconfig' )
|
|
159
|
+
allow( file ).to receive( :rewind ).and_return( true )
|
|
157
160
|
|
|
158
|
-
Tempfile.
|
|
159
|
-
file.
|
|
161
|
+
expect( Tempfile ).to receive( :new ).with( "#{host.name}").and_return( file )
|
|
162
|
+
expect( file ).to receive( :write ).with("Host ip.address.for.#{name}\n HostName 127.0.0.1\n User root\n Port 2222\n UserKnownHostsFile /dev/null\n StrictHostKeyChecking no\n PasswordAuthentication no\n IdentityFile /home/root/.vagrant.d/insecure_private_key\n IdentitiesOnly yes")
|
|
160
163
|
|
|
161
164
|
vagrant.set_ssh_config( host, 'root' )
|
|
162
165
|
expect( host['ssh'] ).to be === { :config => file.path }
|
|
@@ -166,8 +169,7 @@ EOF
|
|
|
166
169
|
|
|
167
170
|
describe "get_ip_from_vagrant_file" do
|
|
168
171
|
before :each do
|
|
169
|
-
|
|
170
|
-
vagrant.stub( :randmac ).and_return( "0123456789" )
|
|
172
|
+
allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
|
|
171
173
|
vagrant.make_vfile( @hosts )
|
|
172
174
|
end
|
|
173
175
|
|
|
@@ -195,33 +197,32 @@ EOF
|
|
|
195
197
|
describe "provisioning and cleanup" do
|
|
196
198
|
|
|
197
199
|
before :each do
|
|
198
|
-
|
|
199
|
-
vagrant.should_receive( :vagrant_cmd ).with( "up" ).once
|
|
200
|
+
expect( vagrant ).to receive( :vagrant_cmd ).with( "up" ).once
|
|
200
201
|
@hosts.each do |host|
|
|
201
202
|
host_prev_name = host['user']
|
|
202
|
-
vagrant.
|
|
203
|
-
vagrant.
|
|
204
|
-
vagrant.
|
|
203
|
+
expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
|
|
204
|
+
expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
|
|
205
|
+
expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
|
|
205
206
|
end
|
|
206
|
-
vagrant.
|
|
207
|
+
expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
|
|
207
208
|
end
|
|
208
209
|
|
|
209
210
|
it "can provision a set of hosts" do
|
|
210
211
|
options = vagrant.instance_variable_get( :@options )
|
|
211
|
-
vagrant.
|
|
212
|
-
vagrant.
|
|
212
|
+
expect( vagrant ).to receive( :make_vfile ).with( @hosts, options ).once
|
|
213
|
+
expect( vagrant ).to receive( :vagrant_cmd ).with( "destroy --force" ).never
|
|
213
214
|
vagrant.provision
|
|
214
215
|
end
|
|
215
216
|
|
|
216
217
|
it "destroys an existing set of hosts before provisioning" do
|
|
217
218
|
vagrant.make_vfile( @hosts )
|
|
218
|
-
vagrant.
|
|
219
|
+
expect( vagrant ).to receive( :vagrant_cmd ).with( "destroy --force" ).once
|
|
219
220
|
vagrant.provision
|
|
220
221
|
end
|
|
221
222
|
|
|
222
223
|
it "can cleanup" do
|
|
223
|
-
vagrant.
|
|
224
|
-
FileUtils.
|
|
224
|
+
expect( vagrant ).to receive( :vagrant_cmd ).with( "destroy --force" ).once
|
|
225
|
+
expect( FileUtils ).to receive( :rm_rf ).once
|
|
225
226
|
|
|
226
227
|
vagrant.provision
|
|
227
228
|
vagrant.cleanup
|
|
@@ -11,24 +11,34 @@ describe Beaker::VagrantVirtualbox do
|
|
|
11
11
|
it "uses the virtualbox provider for provisioning" do
|
|
12
12
|
@hosts.each do |host|
|
|
13
13
|
host_prev_name = host['user']
|
|
14
|
-
vagrant.
|
|
15
|
-
vagrant.
|
|
16
|
-
vagrant.
|
|
14
|
+
expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
|
|
15
|
+
expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
|
|
16
|
+
expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
|
|
17
17
|
end
|
|
18
|
-
vagrant.
|
|
19
|
-
|
|
20
|
-
vagrant.should_receive( :vagrant_cmd ).with( "up --provider virtualbox" ).once
|
|
18
|
+
expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
|
|
19
|
+
expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider virtualbox" ).once
|
|
21
20
|
vagrant.provision
|
|
22
21
|
end
|
|
23
22
|
|
|
24
23
|
it "can make a Vagranfile for a set of hosts" do
|
|
25
|
-
FakeFS.activate!
|
|
26
24
|
path = vagrant.instance_variable_get( :@vagrant_path )
|
|
27
|
-
vagrant.
|
|
25
|
+
allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
|
|
28
26
|
|
|
29
27
|
vagrant.make_vfile( @hosts )
|
|
30
28
|
|
|
31
29
|
vagrantfile = File.read( File.expand_path( File.join( path, 'Vagrantfile' )))
|
|
32
30
|
expect( vagrantfile ).to include( %Q{ v.vm.provider :virtualbox do |vb|\n vb.customize ['modifyvm', :id, '--memory', '1024']\n end})
|
|
33
31
|
end
|
|
32
|
+
|
|
33
|
+
it "can disable the vb guest plugin" do
|
|
34
|
+
options.merge!({ :vbguest_plugin => 'disable' })
|
|
35
|
+
|
|
36
|
+
vfile_section = vagrant.class.provider_vfile_section( @hosts.first, options )
|
|
37
|
+
|
|
38
|
+
match = vfile_section.match(/vb.vbguest.auto_update = false/)
|
|
39
|
+
|
|
40
|
+
expect( match ).to_not be nil
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
34
44
|
end
|
|
@@ -11,20 +11,18 @@ describe Beaker::VagrantWorkstation do
|
|
|
11
11
|
it "uses the vmware_workstation provider for provisioning" do
|
|
12
12
|
@hosts.each do |host|
|
|
13
13
|
host_prev_name = host['user']
|
|
14
|
-
vagrant.
|
|
15
|
-
vagrant.
|
|
16
|
-
vagrant.
|
|
14
|
+
expect( vagrant ).to receive( :set_ssh_config ).with( host, 'vagrant' ).once
|
|
15
|
+
expect( vagrant ).to receive( :copy_ssh_to_root ).with( host, options ).once
|
|
16
|
+
expect( vagrant ).to receive( :set_ssh_config ).with( host, host_prev_name ).once
|
|
17
17
|
end
|
|
18
|
-
vagrant.
|
|
19
|
-
|
|
20
|
-
vagrant.should_receive( :vagrant_cmd ).with( "up --provider vmware_workstation" ).once
|
|
18
|
+
expect( vagrant ).to receive( :hack_etc_hosts ).with( @hosts, options ).once
|
|
19
|
+
expect( vagrant ).to receive( :vagrant_cmd ).with( "up --provider vmware_workstation" ).once
|
|
21
20
|
vagrant.provision
|
|
22
21
|
end
|
|
23
22
|
|
|
24
23
|
it "can make a Vagranfile for a set of hosts" do
|
|
25
|
-
FakeFS.activate!
|
|
26
24
|
path = vagrant.instance_variable_get( :@vagrant_path )
|
|
27
|
-
vagrant.
|
|
25
|
+
allow( vagrant ).to receive( :randmac ).and_return( "0123456789" )
|
|
28
26
|
|
|
29
27
|
vagrant.make_vfile( @hosts )
|
|
30
28
|
|
|
@@ -7,12 +7,12 @@ module Beaker
|
|
|
7
7
|
vms = make_hosts()
|
|
8
8
|
MockVsphereHelper.set_config( fog_file_contents )
|
|
9
9
|
MockVsphereHelper.set_vms( vms )
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
JSON.
|
|
10
|
+
stub_const( "VsphereHelper", MockVsphereHelper )
|
|
11
|
+
stub_const( "Net", MockNet )
|
|
12
|
+
allow( JSON ).to receive( :parse ) do |arg|
|
|
13
13
|
arg
|
|
14
14
|
end
|
|
15
|
-
Socket.
|
|
15
|
+
allow( Socket ).to receive( :getaddrinfo ).and_return( true )
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
describe '#get_template_url' do
|
|
@@ -46,8 +46,8 @@ module Beaker
|
|
|
46
46
|
it 'provisions hosts from the pool' do
|
|
47
47
|
|
|
48
48
|
vcloud = Beaker::VcloudPooled.new( make_hosts, make_opts )
|
|
49
|
-
vcloud.
|
|
50
|
-
vcloud.
|
|
49
|
+
allow( vcloud ).to receive( :require ).and_return( true )
|
|
50
|
+
allow( vcloud ).to receive( :sleep ).and_return( true )
|
|
51
51
|
vcloud.provision
|
|
52
52
|
|
|
53
53
|
hosts = vcloud.instance_variable_get( :@hosts )
|
|
@@ -65,8 +65,8 @@ module Beaker
|
|
|
65
65
|
MockVsphereHelper.powerOn
|
|
66
66
|
|
|
67
67
|
vcloud = Beaker::VcloudPooled.new( make_hosts, make_opts )
|
|
68
|
-
vcloud.
|
|
69
|
-
vcloud.
|
|
68
|
+
allow( vcloud ).to receive( :require ).and_return( true )
|
|
69
|
+
allow( vcloud ).to receive( :sleep ).and_return( true )
|
|
70
70
|
vcloud.provision
|
|
71
71
|
vcloud.cleanup
|
|
72
72
|
|