beaker 1.6.2 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.gitignore +9 -2
- data/lib/beaker/cli.rb +12 -2
- data/lib/beaker/dsl/helpers.rb +3 -3
- data/lib/beaker/dsl/install_utils.rb +16 -19
- data/lib/beaker/host.rb +1 -1
- data/lib/beaker/hypervisor/vagrant.rb +13 -19
- data/lib/beaker/logger.rb +8 -8
- data/lib/beaker/options/command_line_parser.rb +13 -8
- data/lib/beaker/options/presets.rb +1 -1
- data/lib/beaker/shared/host_handler.rb +1 -1
- data/lib/beaker/test_suite.rb +1 -1
- data/lib/beaker/utils/setup_helper.rb +1 -1
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/dsl/helpers_spec.rb +4 -3
- data/spec/beaker/dsl/install_utils_spec.rb +19 -8
- data/spec/beaker/host_spec.rb +1 -1
- data/spec/beaker/hypervisor/vagrant_spec.rb +20 -11
- data/spec/beaker/logger_spec.rb +28 -4
- data/spec/beaker/shared/host_handler_spec.rb +1 -1
- data/spec/beaker/utils/setup_helper_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YjhhNzM3MzA5MGZmZTdjMDg5MGI1YmVlMDY1ZGI2NWFmMTUyZGE5YQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MTgxNDk2NTBkMWY0NzA2MDc0NGIwMjQzM2IxZjBlY2M0NGE3NWYxMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YWQ0ZGI3Yzk2NmQ5NDdlZDUzMmJkMzFiOGUyNjk0MzFkNmEwNjBlN2FhYTZj
|
10
|
+
N2I3NjM3Zjk1NDM5MjhjMWEwZWFjNTQxZWFjNTljMDllZjA3NjAzZmUyMzg4
|
11
|
+
ZThiMzBmM2U1ZjYxN2I0ZDUxYWIwNThhNzAxYTQxZjAyZWE0MGY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZWQwYmYxMGIxZjliYjA4NTNkZmZlNjI0MWEzNjcxNDI1ZGNlMDk0NDcyODg4
|
14
|
+
ZDI0MDdiMmZhNzE4NDY4ZGE3MDQwMTZlOTRjNjQ4M2ZiMmQzZmE4NDlhNTY0
|
15
|
+
ZWQzYTgyMThmYzNlYTkwZWYzNTliM2RmZjJlMzlmOGZkYTA3NDg=
|
data/.gitignore
CHANGED
data/lib/beaker/cli.rb
CHANGED
@@ -15,16 +15,23 @@ module Beaker
|
|
15
15
|
@options = @options_parser.parse_args
|
16
16
|
@logger = Beaker::Logger.new(@options)
|
17
17
|
@options[:logger] = @logger
|
18
|
+
@execute = true
|
18
19
|
|
19
20
|
if @options[:help]
|
20
21
|
@logger.notify(@options_parser.usage)
|
21
|
-
|
22
|
+
@execute = false
|
23
|
+
return
|
22
24
|
end
|
23
25
|
if @options[:version]
|
24
26
|
@logger.notify(VERSION_STRING % Beaker::Version::STRING)
|
25
|
-
|
27
|
+
@execute = false
|
28
|
+
return
|
26
29
|
end
|
27
30
|
@logger.info(@options.dump)
|
31
|
+
if @options[:parse_only]
|
32
|
+
@execute = false
|
33
|
+
return
|
34
|
+
end
|
28
35
|
|
29
36
|
#add additional paths to the LOAD_PATH
|
30
37
|
if not @options[:load_path].empty?
|
@@ -81,6 +88,9 @@ module Beaker
|
|
81
88
|
|
82
89
|
def execute!
|
83
90
|
|
91
|
+
if !@execute
|
92
|
+
return
|
93
|
+
end
|
84
94
|
begin
|
85
95
|
trap(:INT) do
|
86
96
|
@logger.warn "Interrupt received; exiting..."
|
data/lib/beaker/dsl/helpers.rb
CHANGED
@@ -675,14 +675,14 @@ module Beaker
|
|
675
675
|
#
|
676
676
|
def apply_manifest_on(host, manifest, opts = {}, &block)
|
677
677
|
if host.is_a?(Array)
|
678
|
-
host.
|
678
|
+
return host.map do |h|
|
679
679
|
apply_manifest_on(h, manifest, opts, &block)
|
680
680
|
end
|
681
|
-
return
|
682
681
|
end
|
683
682
|
|
684
683
|
on_options = {}
|
685
|
-
on_options[:acceptable_exit_codes] = Array(opts
|
684
|
+
on_options[:acceptable_exit_codes] = Array(opts[:acceptable_exit_codes])
|
685
|
+
|
686
686
|
args = ["--verbose"]
|
687
687
|
args << "--parseonly" if opts[:parseonly]
|
688
688
|
args << "--trace" if opts[:trace]
|
@@ -131,8 +131,8 @@ module Beaker
|
|
131
131
|
|
132
132
|
#Create the PE install command string based upon the host and options settings
|
133
133
|
# @param [Host] host The host that PE is to be installed on
|
134
|
+
# For UNIX machines using the full PE installer, the host object must have the 'pe_installer' field set correctly.
|
134
135
|
# @param [Hash{Symbol=>String}] options The options
|
135
|
-
# @option options [String] :installer The name of the installer to use for upgrading/installing
|
136
136
|
# @option options [String] :pe_ver_win Default PE version to install or upgrade to on Windows hosts
|
137
137
|
# (Othersie uses individual Windows hosts pe_ver)
|
138
138
|
# @option options [String :pe_ver Default PE version to install or upgrade to
|
@@ -150,7 +150,7 @@ module Beaker
|
|
150
150
|
elsif host['roles'].include? 'frictionless' and ! version_is_less(version, '3.2.0')
|
151
151
|
"cd #{host['working_dir']} && curl -kO https://#{master}:8140/packages/#{version}/install.bash && bash install.bash"
|
152
152
|
else
|
153
|
-
"cd #{host['working_dir']}/#{host['dist']} && ./#{
|
153
|
+
"cd #{host['working_dir']}/#{host['dist']} && ./#{host['pe_installer']} -a #{host['working_dir']}/answers"
|
154
154
|
end
|
155
155
|
end
|
156
156
|
|
@@ -258,7 +258,6 @@ module Beaker
|
|
258
258
|
# (Otherwise uses individual hosts pe_ver)
|
259
259
|
# @option options [String] :pe_ver_win Default PE version to install or upgrade to on Windows hosts
|
260
260
|
# (Otherwise uses individual Windows hosts pe_ver)
|
261
|
-
# @option options [String] :installer ('puppet-enterprise-installer') The name of the installer to use for upgrading/installing
|
262
261
|
# @option options [Symbol] :type (:install) One of :upgrade or :install
|
263
262
|
#
|
264
263
|
#
|
@@ -268,7 +267,6 @@ module Beaker
|
|
268
267
|
# @api private
|
269
268
|
#
|
270
269
|
def do_install hosts, options = {}
|
271
|
-
options[:installer] = options[:installer] || 'puppet-enterprise-installer'
|
272
270
|
options[:type] = options[:type] || :install
|
273
271
|
hostcert='uname | grep -i sunos > /dev/null && hostname || hostname -s'
|
274
272
|
master_certname = on(master, hostcert).stdout.strip
|
@@ -278,6 +276,7 @@ module Beaker
|
|
278
276
|
# Set PE distribution for all the hosts, create working dir
|
279
277
|
use_all_tar = ENV['PE_USE_ALL_TAR'] == 'true'
|
280
278
|
hosts.each do |host|
|
279
|
+
host['pe_installer'] ||= 'puppet-enterprise-installer'
|
281
280
|
if host['platform'] !~ /windows/
|
282
281
|
platform = use_all_tar ? 'all' : host['platform']
|
283
282
|
version = options[:pe_ver] || host['pe_ver']
|
@@ -452,12 +451,13 @@ module Beaker
|
|
452
451
|
def install_pe
|
453
452
|
#process the version files if necessary
|
454
453
|
hosts.each do |host|
|
454
|
+
host['pe_dir'] ||= options[:pe_dir]
|
455
455
|
if host['platform'] =~ /windows/
|
456
456
|
host['pe_ver'] = host['pe_ver'] ||
|
457
|
-
Beaker::Options::PEVersionScraper.load_pe_version(host[:pe_dir]
|
457
|
+
Beaker::Options::PEVersionScraper.load_pe_version(host[:pe_dir], options[:pe_version_file_win])
|
458
458
|
else
|
459
459
|
host['pe_ver'] = host['pe_ver'] ||
|
460
|
-
Beaker::Options::PEVersionScraper.load_pe_version(host[:pe_dir]
|
460
|
+
Beaker::Options::PEVersionScraper.load_pe_version(host[:pe_dir], options[:pe_version_file])
|
461
461
|
end
|
462
462
|
end
|
463
463
|
do_install sorted_hosts
|
@@ -466,31 +466,28 @@ module Beaker
|
|
466
466
|
#Upgrade PE based upon host configuration and options
|
467
467
|
# @param [String] path A path (either local directory or a URL to a listing of PE builds).
|
468
468
|
# Will contain a LATEST file indicating the latest build to install.
|
469
|
+
# This is ignored if a pe_upgrade_ver and pe_upgrade_dir are specified
|
470
|
+
# in the host configuration file.
|
469
471
|
# @example
|
470
472
|
# upgrade_pe("http://neptune.puppetlabs.lan/3.0/ci-ready/")
|
471
473
|
#
|
472
474
|
# @note Install file names are assumed to be of the format puppet-enterprise-VERSION-PLATFORM.(tar)|(tar.gz)
|
473
475
|
# for Unix like systems and puppet-enterprise-VERSION.msi for Windows systems.
|
474
476
|
# @api dsl
|
475
|
-
def upgrade_pe path
|
476
|
-
version = Options::PEVersionScraper.load_pe_version(path, options[:pe_version_file])
|
477
|
-
version_win = Options::PEVersionScraper.load_pe_version(path, options[:pe_version_file_win])
|
478
|
-
pre_30 = version_is_less(version, '3.0')
|
479
|
-
if pre_30
|
480
|
-
do_install(sorted_hosts, {:type => :upgrade, :pe_dir => path, :pe_ver => version, :pe_ver_win => version_win, :installer => 'puppet-enterprise-upgrader'})
|
481
|
-
else
|
482
|
-
do_install(sorted_hosts, {:type => :upgrade, :pe_dir => path, :pe_ver => version, :pe_ver_win => version_win})
|
483
|
-
end
|
484
|
-
#at this point we've completed a successful upgrade, update the host pe_ver to reflect that
|
477
|
+
def upgrade_pe path=nil
|
485
478
|
hosts.each do |host|
|
479
|
+
host['pe_dir'] = host['pe_upgrade_dir'] || path
|
486
480
|
if host['platform'] =~ /windows/
|
487
|
-
host['pe_ver'] =
|
481
|
+
host['pe_ver'] = host['pe_upgrade_ver'] || Options::PEVersionScraper.load_pe_version(host['pe_dir'], options[:pe_version_file_win])
|
488
482
|
else
|
489
|
-
host['pe_ver'] =
|
483
|
+
host['pe_ver'] = host['pe_upgrade_ver'] || Options::PEVersionScraper.load_pe_version(host['pe_dir'], options[:pe_version_file])
|
484
|
+
end
|
485
|
+
if version_is_less(host['pe_ver'], '3.0')
|
486
|
+
host['pe_installer'] ||= 'puppet-enterprise-upgrader'
|
490
487
|
end
|
491
488
|
end
|
489
|
+
do_install(sorted_hosts, {:type => :upgrade})
|
492
490
|
end
|
493
|
-
|
494
491
|
end
|
495
492
|
end
|
496
493
|
end
|
data/lib/beaker/host.rb
CHANGED
@@ -158,7 +158,7 @@ module Beaker
|
|
158
158
|
if options[:silent]
|
159
159
|
output_callback = nil
|
160
160
|
else
|
161
|
-
@logger.debug "\n#{log_prefix} $ #{cmdline}"
|
161
|
+
@logger.debug "\n#{log_prefix} #{Time.new.strftime('%H:%M:%S')}$ #{cmdline}"
|
162
162
|
output_callback = logger.method(:host_output)
|
163
163
|
end
|
164
164
|
|
@@ -18,7 +18,7 @@ module Beaker
|
|
18
18
|
"10.255.#{rand_chunk}.#{rand_chunk}"
|
19
19
|
end
|
20
20
|
|
21
|
-
def make_vfile hosts
|
21
|
+
def make_vfile hosts, options = {}
|
22
22
|
#HACK HACK HACK - add checks here to ensure that we have box + box_url
|
23
23
|
#generate the VagrantFile
|
24
24
|
v_file = "Vagrant.configure(\"2\") do |c|\n"
|
@@ -34,7 +34,7 @@ module Beaker
|
|
34
34
|
@logger.debug "created Vagrantfile for VagrantHost #{host.name}"
|
35
35
|
end
|
36
36
|
v_file << " c.vm.provider :virtualbox do |vb|\n"
|
37
|
-
v_file << " vb.customize [\"modifyvm\", :id, \"--memory\", \"1024\"]\n"
|
37
|
+
v_file << " vb.customize [\"modifyvm\", :id, \"--memory\", \"#{options['vagrant_memsize'] ||= '1024'}\"]\n"
|
38
38
|
v_file << " end\n"
|
39
39
|
v_file << "end\n"
|
40
40
|
File.open(@vagrant_file, 'w') do |f|
|
@@ -65,11 +65,11 @@ module Beaker
|
|
65
65
|
def set_ssh_config host, user
|
66
66
|
f = Tempfile.new("#{host.name}")
|
67
67
|
ssh_config = Dir.chdir(@vagrant_path) do
|
68
|
-
|
69
|
-
if
|
70
|
-
raise "Failed to
|
68
|
+
result = `vagrant ssh-config #{host.name}`
|
69
|
+
if $?.to_i != 0
|
70
|
+
raise "Failed to vagrant ssh-config for #{host.name}"
|
71
71
|
end
|
72
|
-
|
72
|
+
result
|
73
73
|
end
|
74
74
|
#replace hostname with ip
|
75
75
|
ssh_config = ssh_config.gsub(/#{host.name}/, host['ip']) unless not host['ip']
|
@@ -117,7 +117,7 @@ module Beaker
|
|
117
117
|
#make sure that any old boxes are dead dead dead
|
118
118
|
vagrant_cmd("destroy --force") if File.file?(@vagrant_file)
|
119
119
|
|
120
|
-
make_vfile @vagrant_hosts
|
120
|
+
make_vfile @vagrant_hosts, @options
|
121
121
|
|
122
122
|
vagrant_cmd("up")
|
123
123
|
else #set host ip of already up boxes
|
@@ -155,18 +155,12 @@ module Beaker
|
|
155
155
|
|
156
156
|
def vagrant_cmd(args)
|
157
157
|
Dir.chdir(@vagrant_path) do
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
raise "Failed to exec 'vagrant #{args}'"
|
165
|
-
end
|
166
|
-
exit_status = wait_thr.value
|
167
|
-
}
|
168
|
-
if exit_status != 0
|
169
|
-
raise "Failed to execute vagrant_cmd ( #{args} )"
|
158
|
+
result = `vagrant #{args} 2>&1`
|
159
|
+
result.each_line do |line|
|
160
|
+
@logger.debug(line)
|
161
|
+
end
|
162
|
+
if $?.to_i != 0
|
163
|
+
raise "Failed to exec 'vagrant #{args}'"
|
170
164
|
end
|
171
165
|
end
|
172
166
|
end
|
data/lib/beaker/logger.rb
CHANGED
@@ -51,18 +51,18 @@ module Beaker
|
|
51
51
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
52
52
|
@color = options[:color]
|
53
53
|
case options[:log_level]
|
54
|
-
when /debug/i
|
54
|
+
when /debug/i, :debug
|
55
55
|
@log_level = :debug
|
56
|
-
when
|
56
|
+
when /verbose/i, :verbose
|
57
57
|
@log_level = :verbose
|
58
|
-
when /info/i
|
58
|
+
when /info/i, :info
|
59
59
|
@log_level = :info
|
60
|
-
when /notify/i
|
60
|
+
when /notify/i, :notify
|
61
61
|
@log_level = :notify
|
62
|
-
when /warn/i
|
62
|
+
when /warn/i, :warn
|
63
63
|
@log_level = :warn
|
64
64
|
else
|
65
|
-
@log_level = :
|
65
|
+
@log_level = :verbose
|
66
66
|
end
|
67
67
|
@destinations = []
|
68
68
|
|
@@ -129,11 +129,11 @@ module Beaker
|
|
129
129
|
end
|
130
130
|
|
131
131
|
# Custom reporting for messages generated by host SUTs.
|
132
|
-
# Will not print unless we are at {LOG_LEVELS} '
|
132
|
+
# Will not print unless we are at {LOG_LEVELS} 'verbose' or higher.
|
133
133
|
# Strips any color codes already in the provided messages, then adds logger color codes before reporting
|
134
134
|
# @param args[Array<String>] Strings to be reported
|
135
135
|
def host_output *args
|
136
|
-
return unless
|
136
|
+
return unless is_verbose?
|
137
137
|
strings = strip_colors_from args
|
138
138
|
string = strings.join
|
139
139
|
optionally_color GREY, string, false
|
@@ -135,11 +135,6 @@ module Beaker
|
|
135
135
|
@cmd_options[:log_level] = val
|
136
136
|
end
|
137
137
|
|
138
|
-
opts.on '--[no-]debug',
|
139
|
-
'DEPRECATED, use --log-level' do |bool|
|
140
|
-
@cmd_options[:log_level] = bool ? 'debug' : 'info'
|
141
|
-
end
|
142
|
-
|
143
138
|
opts.on '-d', '--[no-]dry-run',
|
144
139
|
'Report what would happen on targets',
|
145
140
|
'(default: false)' do |bool|
|
@@ -179,14 +174,24 @@ module Beaker
|
|
179
174
|
@cmd_options[:version] = true
|
180
175
|
end
|
181
176
|
|
182
|
-
opts.on
|
183
|
-
|
184
|
-
@cmd_options[:hosts_file] = file
|
177
|
+
opts.on('--parse-only', 'Display beaker parsed options and exit' ) do
|
178
|
+
@cmd_options[:parse_only] = true
|
185
179
|
end
|
186
180
|
|
187
181
|
opts.on('--help', 'Display this screen' ) do
|
188
182
|
@cmd_options[:help] = true
|
189
183
|
end
|
184
|
+
|
185
|
+
opts.on '-c', '--config FILE',
|
186
|
+
'DEPRECATED, use --hosts' do |file|
|
187
|
+
@cmd_options[:hosts_file] = file
|
188
|
+
end
|
189
|
+
|
190
|
+
opts.on '--[no-]debug',
|
191
|
+
'DEPRECATED, use --log-level' do |bool|
|
192
|
+
@cmd_options[:log_level] = bool ? 'debug' : 'info'
|
193
|
+
end
|
194
|
+
|
190
195
|
end
|
191
196
|
|
192
197
|
end
|
@@ -22,7 +22,7 @@ module Beaker
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def get_ip(host)
|
25
|
-
host.exec(Command.new("ip a|awk '/
|
25
|
+
host.exec(Command.new("ip a|awk '/global/{print$2}' | cut -d/ -f1 | head -1")).stdout.chomp
|
26
26
|
end
|
27
27
|
|
28
28
|
def set_etc_hosts(host, etc_hosts)
|
data/lib/beaker/test_suite.rb
CHANGED
@@ -247,7 +247,7 @@ module Beaker
|
|
247
247
|
end
|
248
248
|
|
249
249
|
def log_path(name)
|
250
|
-
@@log_dir ||= File.join("log", @start_time.strftime("%F_%
|
250
|
+
@@log_dir ||= File.join("log", @start_time.strftime("%F_%H_%M_%S"))
|
251
251
|
unless File.directory?(@@log_dir) then
|
252
252
|
FileUtils.mkdir_p(@@log_dir)
|
253
253
|
|
@@ -23,7 +23,7 @@ module Beaker
|
|
23
23
|
if master['platform'].include? 'solaris'
|
24
24
|
stdout = master.exec(Command.new("ifconfig -a inet| awk '/broadcast/ {print $2}' | cut -d/ -f1 | head -1")).stdout
|
25
25
|
else
|
26
|
-
stdout = master.exec(Command.new("ip a|awk '/
|
26
|
+
stdout = master.exec(Command.new("ip a|awk '/global/{print$2}' | cut -d/ -f1 | head -1")).stdout
|
27
27
|
end
|
28
28
|
ip=stdout.chomp
|
29
29
|
|
data/lib/beaker/version.rb
CHANGED
@@ -310,7 +310,7 @@ describe ClassMixedWithDSLHelpers do
|
|
310
310
|
subject.apply_manifest_on( agent, 'class { "boo": }')
|
311
311
|
end
|
312
312
|
|
313
|
-
it '
|
313
|
+
it 'operates on an array of hosts' do
|
314
314
|
the_hosts = [master, agent]
|
315
315
|
|
316
316
|
subject.should_receive( :create_remote_file ).twice.and_return( true )
|
@@ -321,10 +321,11 @@ describe ClassMixedWithDSLHelpers do
|
|
321
321
|
|
322
322
|
subject.should_receive( :on ).
|
323
323
|
with( host, 'puppet_command',
|
324
|
-
:acceptable_exit_codes => [0] ).ordered
|
324
|
+
:acceptable_exit_codes => [0, 1] ).ordered
|
325
325
|
end
|
326
326
|
|
327
|
-
subject.apply_manifest_on( the_hosts, 'include foobar')
|
327
|
+
result = subject.apply_manifest_on( the_hosts, 'include foobar', :acceptable_exit_codes => [0,1] )
|
328
|
+
result.should(be_an(Array))
|
328
329
|
end
|
329
330
|
|
330
331
|
it 'adds acceptable exit codes with :catch_failures' do
|
@@ -130,7 +130,9 @@ describe ClassMixedWithDSLInstallUtils do
|
|
130
130
|
end
|
131
131
|
|
132
132
|
it 'generates a unix PE install command for a unix host' do
|
133
|
-
|
133
|
+
the_host = unixhost.dup
|
134
|
+
the_host['pe_installer'] = 'puppet-enterprise-installer'
|
135
|
+
expect( subject.installer_cmd( the_host, {} ) ).to be === "cd /tmp/puppet-enterprise-3.1.0-rc0-230-g36c9e5c-debian-7-i386 && ./puppet-enterprise-installer -a /tmp/answers"
|
134
136
|
end
|
135
137
|
end
|
136
138
|
|
@@ -350,35 +352,44 @@ describe ClassMixedWithDSLInstallUtils do
|
|
350
352
|
it 'calls puppet-enterprise-upgrader for pre 3.0 upgrades' do
|
351
353
|
Beaker::Options::PEVersionScraper.stub( :load_pe_version ).and_return( '2.8' )
|
352
354
|
Beaker::Options::PEVersionScraper.stub( :load_pe_version_win ).and_return( '2.8' )
|
353
|
-
|
355
|
+
the_hosts = [ hosts[0].dup, hosts[1].dup, hosts[2].dup ]
|
356
|
+
subject.stub( :hosts ).and_return( the_hosts )
|
354
357
|
subject.stub( :options ).and_return( {} )
|
355
358
|
version = version_win = '2.8'
|
356
359
|
path = "/path/to/upgradepkg"
|
357
|
-
subject.should_receive( :do_install ).with(
|
360
|
+
subject.should_receive( :do_install ).with( the_hosts, { :type => :upgrade } )
|
358
361
|
subject.upgrade_pe( path )
|
362
|
+
the_hosts.each do |h|
|
363
|
+
expect( h['pe_installer'] ).to be === 'puppet-enterprise-upgrader'
|
364
|
+
end
|
359
365
|
end
|
360
366
|
|
361
367
|
it 'uses standard upgrader for post 3.0 upgrades' do
|
362
368
|
Beaker::Options::PEVersionScraper.stub( :load_pe_version ).and_return( '3.1' )
|
363
369
|
Beaker::Options::PEVersionScraper.stub( :load_pe_version_win ).and_return( '3.1' )
|
364
|
-
|
370
|
+
the_hosts = [ hosts[0].dup, hosts[1].dup, hosts[2].dup ]
|
371
|
+
subject.stub( :hosts ).and_return( the_hosts )
|
365
372
|
subject.stub( :options ).and_return( {} )
|
366
373
|
version = version_win = '3.1'
|
367
374
|
path = "/path/to/upgradepkg"
|
368
|
-
subject.should_receive( :do_install ).with(
|
375
|
+
subject.should_receive( :do_install ).with( the_hosts, { :type => :upgrade } )
|
369
376
|
subject.upgrade_pe( path )
|
377
|
+
the_hosts.each do |h|
|
378
|
+
expect( h['pe_installer'] ).to be nil
|
379
|
+
end
|
370
380
|
end
|
371
381
|
|
372
382
|
it 'updates pe_ver post upgrade' do
|
373
383
|
Beaker::Options::PEVersionScraper.stub( :load_pe_version ).and_return( '2.8' )
|
374
384
|
Beaker::Options::PEVersionScraper.stub( :load_pe_version_win ).and_return( '2.8' )
|
375
|
-
|
385
|
+
the_hosts = [ hosts[0].dup, hosts[1].dup, hosts[2].dup ]
|
386
|
+
subject.stub( :hosts ).and_return( the_hosts )
|
376
387
|
subject.stub( :options ).and_return( {} )
|
377
388
|
version = version_win = '2.8'
|
378
389
|
path = "/path/to/upgradepkg"
|
379
|
-
subject.should_receive( :do_install ).with(
|
390
|
+
subject.should_receive( :do_install ).with( the_hosts, { :type => :upgrade } )
|
380
391
|
subject.upgrade_pe( path )
|
381
|
-
|
392
|
+
the_hosts.each do |h|
|
382
393
|
expect( h['pe_ver'] ).to be === '2.8'
|
383
394
|
end
|
384
395
|
end
|
data/spec/beaker/host_spec.rb
CHANGED
@@ -115,7 +115,7 @@ module Beaker
|
|
115
115
|
it 'logs the amount of time spent executing the command' do
|
116
116
|
result.exit_code = 0
|
117
117
|
|
118
|
-
expect(host.logger).to receive(:debug).with(/
|
118
|
+
expect(host.logger).to receive(:debug).with(/executed in \d\.\d{2} seconds/)
|
119
119
|
|
120
120
|
host.exec(command,{})
|
121
121
|
end
|
@@ -28,6 +28,21 @@ module Beaker
|
|
28
28
|
expect( File.read( File.expand_path( File.join( path, "Vagrantfile") ) ) ).to be === "Vagrant.configure(\"2\") do |c|\n c.vm.define 'vm1' do |v|\n v.vm.hostname = 'vm1'\n v.vm.box = 'vm1_of_my_box'\n v.vm.box_url = 'http://address.for.my.box.vm1'\n v.vm.base_mac = '0123456789'\n v.vm.network :private_network, ip: \"ip.address.for.vm1\", :netmask => \"255.255.0.0\"\n end\n c.vm.define 'vm2' do |v|\n v.vm.hostname = 'vm2'\n v.vm.box = 'vm2_of_my_box'\n v.vm.box_url = 'http://address.for.my.box.vm2'\n v.vm.base_mac = '0123456789'\n v.vm.network :private_network, ip: \"ip.address.for.vm2\", :netmask => \"255.255.0.0\"\n end\n c.vm.define 'vm3' do |v|\n v.vm.hostname = 'vm3'\n v.vm.box = 'vm3_of_my_box'\n v.vm.box_url = 'http://address.for.my.box.vm3'\n v.vm.base_mac = '0123456789'\n v.vm.network :private_network, ip: \"ip.address.for.vm3\", :netmask => \"255.255.0.0\"\n end\n c.vm.provider :virtualbox do |vb|\n vb.customize [\"modifyvm\", :id, \"--memory\", \"1024\"]\n end\nend\n"
|
29
29
|
end
|
30
30
|
|
31
|
+
it "uses the memsize defined per vagrant host" do
|
32
|
+
FakeFS.activate!
|
33
|
+
path = vagrant.instance_variable_get( :@vagrant_path )
|
34
|
+
vagrant.stub( :randmac ).and_return( "0123456789" )
|
35
|
+
|
36
|
+
vagrant.make_vfile( @hosts, {'vagrant_memsize' => 'hello!'} )
|
37
|
+
|
38
|
+
generated_file = File.read( File.expand_path( File.join( path, "Vagrantfile") ) )
|
39
|
+
|
40
|
+
match = generated_file.match(/vb.customize \["modifyvm", :id, "--memory", "hello!"]/)
|
41
|
+
|
42
|
+
expect( match ).to_not be nil
|
43
|
+
|
44
|
+
end
|
45
|
+
|
31
46
|
it "can generate a new /etc/hosts file referencing each host" do
|
32
47
|
|
33
48
|
@hosts.each do |host|
|
@@ -66,8 +81,7 @@ module Beaker
|
|
66
81
|
name = host.name
|
67
82
|
Dir.stub( :chdir ).and_yield()
|
68
83
|
|
69
|
-
|
70
|
-
out.stub( :read ).and_return("Host #{host.name}
|
84
|
+
vagrant.should_receive(:`).and_return("Host #{host.name}
|
71
85
|
HostName 127.0.0.1
|
72
86
|
User vagrant
|
73
87
|
Port 2222
|
@@ -76,12 +90,6 @@ module Beaker
|
|
76
90
|
PasswordAuthentication no
|
77
91
|
IdentityFile /home/root/.vagrant.d/insecure_private_key
|
78
92
|
IdentitiesOnly yes")
|
79
|
-
wait_thr = OpenStruct.new
|
80
|
-
state = mock( 'state' )
|
81
|
-
state.stub( :success? ).and_return( true )
|
82
|
-
wait_thr.value = state
|
83
|
-
|
84
|
-
Open3.stub( :popen3 ).with( 'vagrant', 'ssh-config', host.name ).and_return( [ "", out, "", wait_thr ])
|
85
93
|
|
86
94
|
file = double( 'file' )
|
87
95
|
file.stub( :path ).and_return( '/path/sshconfig' )
|
@@ -139,14 +147,15 @@ module Beaker
|
|
139
147
|
end
|
140
148
|
|
141
149
|
it "can provision a set of hosts" do
|
142
|
-
|
150
|
+
options = vagrant.instance_variable_get( :@options )
|
151
|
+
vagrant.should_receive( :make_vfile ).with( @hosts, options ).once
|
143
152
|
vagrant.should_receive( :vagrant_cmd ).with( "destroy --force" ).never
|
144
153
|
vagrant.provision
|
145
154
|
end
|
146
155
|
|
147
156
|
it "destroys an existing set of hosts before provisioning" do
|
148
|
-
vagrant.make_vfile(@hosts)
|
149
|
-
vagrant.should_receive(:vagrant_cmd).with("destroy --force").once
|
157
|
+
vagrant.make_vfile( @hosts )
|
158
|
+
vagrant.should_receive( :vagrant_cmd ).with( "destroy --force" ).once
|
150
159
|
vagrant.provision
|
151
160
|
end
|
152
161
|
|
data/spec/beaker/logger_spec.rb
CHANGED
@@ -16,7 +16,7 @@ module Beaker
|
|
16
16
|
context 'default for' do
|
17
17
|
its(:destinations) { should include(STDOUT) }
|
18
18
|
its(:color) { should be_nil }
|
19
|
-
its(:log_level) { should be :
|
19
|
+
its(:log_level) { should be :verbose }
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -54,6 +54,30 @@ module Beaker
|
|
54
54
|
colorized_logger.optionally_color "\e[00;30m", 'my string'
|
55
55
|
end
|
56
56
|
|
57
|
+
context 'at verbose log_level' do
|
58
|
+
subject( :verbose_logger ) { Logger.new( my_io,
|
59
|
+
:log_level => 'verbose',
|
60
|
+
:quiet => true,
|
61
|
+
:color => true )
|
62
|
+
}
|
63
|
+
|
64
|
+
its( :is_debug? ) { should be_false }
|
65
|
+
its( :is_verbose? ) { should be_true }
|
66
|
+
its( :is_warn? ) { should be_true }
|
67
|
+
|
68
|
+
context 'but print' do
|
69
|
+
before do
|
70
|
+
my_io.stub :puts
|
71
|
+
my_io.should_receive( :print ).at_least :twice
|
72
|
+
end
|
73
|
+
|
74
|
+
it( 'warnings' ) { verbose_logger.warn 'IMA WARNING!' }
|
75
|
+
it( 'successes' ) { verbose_logger.success 'SUCCESS!' }
|
76
|
+
it( 'errors' ) { verbose_logger.error 'ERROR!' }
|
77
|
+
it( 'host_output' ) { verbose_logger.host_output 'ERROR!' }
|
78
|
+
it( 'debugs' ) { verbose_logger.debug 'NOT DEBUGGING!' }
|
79
|
+
end
|
80
|
+
end
|
57
81
|
|
58
82
|
context 'at debug log_level' do
|
59
83
|
subject( :debug_logger ) { Logger.new( my_io,
|
@@ -65,7 +89,6 @@ module Beaker
|
|
65
89
|
its( :is_debug? ) { should be_true }
|
66
90
|
its( :is_warn? ) { should be_true }
|
67
91
|
|
68
|
-
|
69
92
|
context 'successfully print' do
|
70
93
|
before do
|
71
94
|
my_io.stub :puts
|
@@ -82,8 +105,9 @@ module Beaker
|
|
82
105
|
|
83
106
|
context 'at info log_level' do
|
84
107
|
subject( :info_logger ) { Logger.new( my_io,
|
85
|
-
:
|
86
|
-
:
|
108
|
+
:log_level => :info,
|
109
|
+
:quiet => true,
|
110
|
+
:color => true )
|
87
111
|
}
|
88
112
|
|
89
113
|
its( :is_debug? ) { should be_false }
|
@@ -36,7 +36,7 @@ module Beaker
|
|
36
36
|
it "can exec the get_ip command" do
|
37
37
|
host = make_host('name', { :stdout => "192.168.2.130\n" } )
|
38
38
|
|
39
|
-
Command.should_receive( :new ).with( "ip a|awk '/
|
39
|
+
Command.should_receive( :new ).with( "ip a|awk '/global/{print$2}' | cut -d/ -f1 | head -1" ).once
|
40
40
|
|
41
41
|
expect( host_handler.get_ip( host ) ).to be === "192.168.2.130"
|
42
42
|
|
@@ -20,7 +20,7 @@ module Beaker
|
|
20
20
|
path = Beaker::Utils::SetupHelper::ETC_HOSTS_PATH
|
21
21
|
master = setup_helper.only_host_with_role(hosts, :master)
|
22
22
|
|
23
|
-
Command.should_receive( :new ).with( "ip a|awk '/
|
23
|
+
Command.should_receive( :new ).with( "ip a|awk '/global/{print$2}' | cut -d/ -f1 | head -1" ).once
|
24
24
|
Command.should_receive( :new ).with( "cp %s %s.old" % [path, path] ).once
|
25
25
|
Command.should_receive( :new ).with( "cp %s %s.new" % [path, path] ).once
|
26
26
|
Command.should_receive( :new ).with( "grep -v '#{ip} #{master}' %s > %s.new" % [path, path] ).once
|
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: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppetlabs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|