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