beaker 2.16.0 → 2.17.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/HISTORY.md +105 -2
- data/lib/beaker/cli.rb +6 -2
- data/lib/beaker/dsl/install_utils/foss_utils.rb +3 -2
- data/lib/beaker/dsl/install_utils/pe_utils.rb +4 -2
- data/lib/beaker/dsl/roles.rb +29 -0
- data/lib/beaker/host/mac.rb +2 -1
- data/lib/beaker/host/mac/exec.rb +8 -0
- data/lib/beaker/hypervisor/aws_sdk.rb +18 -14
- data/lib/beaker/options/command_line_parser.rb +1 -1
- data/lib/beaker/options/parser.rb +1 -1
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/dsl/install_utils/foss_utils_spec.rb +10 -2
- data/spec/beaker/dsl/install_utils/pe_utils_spec.rb +99 -4
- data/spec/beaker/dsl/roles_spec.rb +19 -0
- data/spec/beaker/host_spec.rb +18 -0
- data/spec/beaker/options/command_line_parser_spec.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YjMwMzYyMmMwOThkODRiYzdjZjgwNTVkYjA0NmMzNGY0NWIyZDc1Yg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MDZlZmUxYzc2ZDhkMWY2MDY2NjU0ODUyYzJkYjhiZWJiZWU2OGI2Mw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MWVhZmE0MjA1MWRhZThhNzAxZGVjMmM3YTUwMjRjYzhjN2NhOTg3N2IwODU1
|
10
|
+
NTU2ODc4Y2U3NmMyNTRkMjhlMWUyMDUzZWZkMTYzOGM3ZTRiNWM3NjA2Mzg2
|
11
|
+
MmY4ZGI1MDU1ZmUyZTBjYTM0NDE5NzY1MGEwNjM4NWYzNDhmNTA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzE0OWNkMTBmNGRiYmQ0YmVjMDZjMTViYmNjNzBjMTY4OTMwNDViZWUwOThm
|
14
|
+
NzI5MjhmZTA1M2QwMzJjYmQwMDcyM2IwZmU0NjEzMjg5MmY5NjliMGE2ZDky
|
15
|
+
MWE0YTI2MDQ4MWY1ZTY3OGMzOTNmNjc3YjI1ZTVjOThlNzM3MWI=
|
data/HISTORY.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# default - History
|
2
2
|
## Tags
|
3
|
-
* [LATEST -
|
3
|
+
* [LATEST - 10 Jul, 2015 (745d9116)](#LATEST)
|
4
|
+
* [2.16.0 - 6 Jul, 2015 (b3e76227)](#2.16.0)
|
4
5
|
* [2.15.1 - 1 Jul, 2015 (cd6f0bab)](#2.15.1)
|
5
6
|
* [2.15.0 - 1 Jul, 2015 (07c416fb)](#2.15.0)
|
6
7
|
* [2.14.1 - 5 Jun, 2015 (35026603)](#2.14.1)
|
@@ -85,7 +86,109 @@
|
|
85
86
|
* [pe1.2 - 6 Sep, 2011 (ba3dadd2)](#pe1.2)
|
86
87
|
|
87
88
|
## Details
|
88
|
-
### <a name = "LATEST">LATEST -
|
89
|
+
### <a name = "LATEST">LATEST - 10 Jul, 2015 (745d9116)
|
90
|
+
|
91
|
+
* (GEM) update beaker version to 2.17.0 (745d9116)
|
92
|
+
|
93
|
+
* Merge pull request #884 from justinstoller/maint/master/moar-puppet-agent (7ba09f8f)
|
94
|
+
|
95
|
+
|
96
|
+
```
|
97
|
+
Merge pull request #884 from justinstoller/maint/master/moar-puppet-agent
|
98
|
+
|
99
|
+
(maint) Allow PE puppet-agent installs on custom roles
|
100
|
+
```
|
101
|
+
* (maint) Allow PE puppet-agent installs on custom roles (cfe9c834)
|
102
|
+
|
103
|
+
|
104
|
+
```
|
105
|
+
(maint) Allow PE puppet-agent installs on custom roles
|
106
|
+
|
107
|
+
Previously we installed puppet-agent on a host if there was the agent
|
108
|
+
role and no other role assigned to it. This prevents assigning a
|
109
|
+
puppet-agent node the "default" role to be used as the default test
|
110
|
+
target, or allow any other custom roles.
|
111
|
+
|
112
|
+
To allow assigning the "default" or custom roles to a puppet-agent node
|
113
|
+
we list the non-puppet-agnet roles we know how to generate installation answers
|
114
|
+
for and use that list to determine what nodes are puppet-agent or not.
|
115
|
+
```
|
116
|
+
* Merge pull request #883 from anodelman/puppetservice (2822e415)
|
117
|
+
|
118
|
+
|
119
|
+
```
|
120
|
+
Merge pull request #883 from anodelman/puppetservice
|
121
|
+
|
122
|
+
(BKR-390) Scooter pipeline is using pe-httpd instead of pe-puppetserver
|
123
|
+
```
|
124
|
+
* Merge pull request #882 from anodelman/osx (b64ee262)
|
125
|
+
|
126
|
+
|
127
|
+
```
|
128
|
+
Merge pull request #882 from anodelman/osx
|
129
|
+
|
130
|
+
(BKR-388) Beaker::Host::Mac#touch returns non-existent path
|
131
|
+
```
|
132
|
+
* Merge pull request #879 from anodelman/maint (df169767)
|
133
|
+
|
134
|
+
|
135
|
+
```
|
136
|
+
Merge pull request #879 from anodelman/maint
|
137
|
+
|
138
|
+
(BKR-386) beaker does not work with host_preserved.yaml file anymore
|
139
|
+
```
|
140
|
+
* (BKR-390) Scooter pipeline is using pe-httpd instead of pe-puppetserver (3a7830cc)
|
141
|
+
|
142
|
+
|
143
|
+
```
|
144
|
+
(BKR-390) Scooter pipeline is using pe-httpd instead of pe-puppetserver
|
145
|
+
|
146
|
+
- only use aio defaults on agents that are not master, database or
|
147
|
+
dashboard (was previously using aio defaults/paths on all hosts
|
148
|
+
identified as being >= 4.0)
|
149
|
+
```
|
150
|
+
* (BKR-388) Beaker::Host::Mac#touch returns non-existent path (21e885e0)
|
151
|
+
|
152
|
+
|
153
|
+
```
|
154
|
+
(BKR-388) Beaker::Host::Mac#touch returns non-existent path
|
155
|
+
|
156
|
+
- ensure that the mac host.touch method returns a correct, absolute
|
157
|
+
path to the touch command
|
158
|
+
```
|
159
|
+
* Merge pull request #859 from vindir/feature/instancestores (a3429c39)
|
160
|
+
|
161
|
+
|
162
|
+
```
|
163
|
+
Merge pull request #859 from vindir/feature/instancestores
|
164
|
+
|
165
|
+
(BKR-348) AWS: Adding instance storage support
|
166
|
+
```
|
167
|
+
* (BKR-386) beaker does not work with host_preserved.yaml file anymore (c1b471fc)
|
168
|
+
|
169
|
+
|
170
|
+
```
|
171
|
+
(BKR-386) beaker does not work with host_preserved.yaml file anymore
|
172
|
+
|
173
|
+
- puppet-agent installation was causing a 'version' argument to be added
|
174
|
+
to the preserved host file, causing beaker to output --version
|
175
|
+
information upon re-use of that file
|
176
|
+
- fix is just renaming --version to use beaker_version instead of
|
177
|
+
version as a flag
|
178
|
+
```
|
179
|
+
* (BKR-348) instance storage now supported (e607b2d5)
|
180
|
+
|
181
|
+
|
182
|
+
```
|
183
|
+
(BKR-348) instance storage now supported
|
184
|
+
|
185
|
+
AMIs using the instance storage root device type are now supported
|
186
|
+
allowing users who don't want/need EBS backed AMIs to add nodesets
|
187
|
+
more easily.
|
188
|
+
```
|
189
|
+
### <a name = "2.16.0">2.16.0 - 6 Jul, 2015 (b3e76227)
|
190
|
+
|
191
|
+
* (HISTORY) update beaker history for gem release 2.16.0 (b3e76227)
|
89
192
|
|
90
193
|
* (GEM) update beaker version to 2.16.0 (6b0a9ca2)
|
91
194
|
|
data/lib/beaker/cli.rb
CHANGED
@@ -16,6 +16,8 @@ module Beaker
|
|
16
16
|
@logger = Beaker::Logger.new(@options)
|
17
17
|
@options[:logger] = @logger
|
18
18
|
@options[:timestamp] = @timestamp
|
19
|
+
@options[:beaker_version] = Beaker::Version::STRING
|
20
|
+
beaker_version_string = VERSION_STRING % @options[:beaker_version]
|
19
21
|
@execute = true
|
20
22
|
|
21
23
|
if @options[:help]
|
@@ -23,11 +25,13 @@ module Beaker
|
|
23
25
|
@execute = false
|
24
26
|
return
|
25
27
|
end
|
26
|
-
if @options[:
|
27
|
-
@logger.notify(
|
28
|
+
if @options[:beaker_version_print]
|
29
|
+
@logger.notify(beaker_version_string)
|
28
30
|
@execute = false
|
29
31
|
return
|
30
32
|
end
|
33
|
+
@logger.info("Beaker!")
|
34
|
+
@logger.info(beaker_version_string)
|
31
35
|
@logger.info(@options.dump)
|
32
36
|
if @options[:parse_only]
|
33
37
|
@execute = false
|
@@ -35,8 +35,9 @@ module Beaker
|
|
35
35
|
# or a role (String or Symbol) that identifies one or more hosts.
|
36
36
|
def configure_foss_defaults_on( hosts )
|
37
37
|
block_on hosts do |host|
|
38
|
-
if (host[:version] && (not version_is_less(host[:version], '4.0')))
|
39
|
-
|
38
|
+
if (not_controller(host) && host[:version] && (not version_is_less(host[:version], '4.0'))) \
|
39
|
+
or (host['type'] && host['type'] =~ /aio/)
|
40
|
+
# add aio defaults to host
|
40
41
|
add_aio_defaults_on(host)
|
41
42
|
else
|
42
43
|
add_foss_defaults_on(host)
|
@@ -26,7 +26,8 @@ module Beaker
|
|
26
26
|
# or a role (String or Symbol) that identifies one or more hosts.
|
27
27
|
def configure_pe_defaults_on( hosts )
|
28
28
|
block_on hosts do |host|
|
29
|
-
if (host[:pe_ver] && (not version_is_less(host[:pe_ver], '4.0')))
|
29
|
+
if (not_controller(host) && host[:pe_ver] && (not version_is_less(host[:pe_ver], '4.0'))) \
|
30
|
+
or (host['type'] && host['type'] =~ /aio/)
|
30
31
|
# add pe defaults to host
|
31
32
|
add_aio_defaults_on(host)
|
32
33
|
else
|
@@ -508,8 +509,9 @@ module Beaker
|
|
508
509
|
def create_agent_specified_arrays(hosts)
|
509
510
|
hosts_agent_only = []
|
510
511
|
hosts_not_agent_only = []
|
512
|
+
non_agent_only_roles = %w(master database dashboard console frictionless)
|
511
513
|
hosts.each do |host|
|
512
|
-
if host['roles']
|
514
|
+
if host['roles'].none? {|role| non_agent_only_roles.include?(role) }
|
513
515
|
hosts_agent_only << host
|
514
516
|
else
|
515
517
|
hosts_not_agent_only << host
|
data/lib/beaker/dsl/roles.rb
CHANGED
@@ -89,6 +89,35 @@ module Beaker
|
|
89
89
|
find_host_with_role :default
|
90
90
|
end
|
91
91
|
|
92
|
+
# Determine if host is not a controller, does not have roles 'master',
|
93
|
+
# 'dashboard' or 'database'.
|
94
|
+
#
|
95
|
+
# @return [Boolean] True if agent-only, false otherwise
|
96
|
+
#
|
97
|
+
# @example Basic usage
|
98
|
+
# if not_controller(host)
|
99
|
+
# puts "this host isn't in charge!"
|
100
|
+
# end
|
101
|
+
#
|
102
|
+
def not_controller(host)
|
103
|
+
controllers = ['dashboard', 'database', 'master', 'console']
|
104
|
+
matched_roles = host['roles'].select { |v| controllers.include?(v) }
|
105
|
+
matched_roles.length == 0
|
106
|
+
end
|
107
|
+
|
108
|
+
# Determine if this host is exclusively an agent (only has a single role 'agent')
|
109
|
+
#
|
110
|
+
#
|
111
|
+
# @return [Boolean] True if agent-only, false otherwise
|
112
|
+
#
|
113
|
+
# @example Basic usage
|
114
|
+
# if agent_only(host)
|
115
|
+
# puts "this host is ONLY an agent!"
|
116
|
+
# end
|
117
|
+
def agent_only(host)
|
118
|
+
host['roles'].length == 1 && host['roles'].include?('agent')
|
119
|
+
end
|
120
|
+
|
92
121
|
#Create a new role method for a given arbitrary role name. Makes it possible to be able to run
|
93
122
|
#commands without having to refer to role by String or Symbol. Will not add a new method
|
94
123
|
#definition if the name is already in use.
|
data/lib/beaker/host/mac.rb
CHANGED
@@ -5,10 +5,11 @@ end
|
|
5
5
|
module Mac
|
6
6
|
class Host < Unix::Host
|
7
7
|
|
8
|
-
[ 'user', 'group', 'pkg' ].each do |lib|
|
8
|
+
[ 'exec', 'user', 'group', 'pkg' ].each do |lib|
|
9
9
|
require "beaker/host/mac/#{lib}"
|
10
10
|
end
|
11
11
|
|
12
|
+
include Mac::Exec
|
12
13
|
include Mac::User
|
13
14
|
include Mac::Group
|
14
15
|
include Mac::Pkg
|
@@ -268,23 +268,27 @@ module Beaker
|
|
268
268
|
raise RuntimeError, "Image not found: #{image_id}"
|
269
269
|
end
|
270
270
|
|
271
|
+
@logger.notify("Image Storage Type: #{image.root_device_type}")
|
272
|
+
|
271
273
|
# Transform the images block_device_mappings output into a format
|
272
274
|
# ready for a create.
|
273
|
-
orig_bdm = image.block_device_mappings()
|
274
|
-
@logger.notify("aws-sdk: Image block_device_mappings: #{orig_bdm.to_hash}")
|
275
275
|
block_device_mappings = []
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
:
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
276
|
+
if image.root_device_type == :ebs
|
277
|
+
orig_bdm = image.block_device_mappings()
|
278
|
+
@logger.notify("aws-sdk: Image block_device_mappings: #{orig_bdm.to_hash}")
|
279
|
+
orig_bdm.each do |device_name, rest|
|
280
|
+
block_device_mappings << {
|
281
|
+
:device_name => device_name,
|
282
|
+
:ebs => {
|
283
|
+
# Change the default size of the root volume.
|
284
|
+
:volume_size => host['volume_size'] || rest[:volume_size],
|
285
|
+
# This is required to override the images default for
|
286
|
+
# delete_on_termination, forcing all volumes to be deleted once the
|
287
|
+
# instance is terminated.
|
288
|
+
:delete_on_termination => true,
|
289
|
+
}
|
286
290
|
}
|
287
|
-
|
291
|
+
end
|
288
292
|
end
|
289
293
|
|
290
294
|
security_group = ensure_group(vpc || region, Beaker::EC2Helper.amiports(host))
|
@@ -304,9 +308,9 @@ module Beaker
|
|
304
308
|
:instance_type => amisize,
|
305
309
|
:disable_api_termination => false,
|
306
310
|
:instance_initiated_shutdown_behavior => "terminate",
|
307
|
-
:block_device_mappings => block_device_mappings,
|
308
311
|
:subnet => subnet_id,
|
309
312
|
}
|
313
|
+
config[:block_device_mappings] = block_device_mappings if image.root_device_type == :ebs
|
310
314
|
region.instances.create(config)
|
311
315
|
end
|
312
316
|
|
@@ -191,7 +191,7 @@ module Beaker
|
|
191
191
|
end
|
192
192
|
|
193
193
|
opts.on('--version', 'Report currently running version of beaker' ) do
|
194
|
-
@cmd_options[:
|
194
|
+
@cmd_options[:beaker_version_print] = true
|
195
195
|
end
|
196
196
|
|
197
197
|
opts.on('--parse-only', 'Display beaker parsed options and exit' ) do
|
@@ -190,7 +190,7 @@ module Beaker
|
|
190
190
|
# overwrite defaults with command line and file options
|
191
191
|
@options = @options.merge(cmd_line_and_file_options)
|
192
192
|
|
193
|
-
if not @options[:help] and not @options[:
|
193
|
+
if not @options[:help] and not @options[:beaker_version_print]
|
194
194
|
#read the hosts file that contains the node configuration and hypervisor info
|
195
195
|
hosts_options = Beaker::Options::HostsFileParser.parse_hosts_file(@options[:hosts_file])
|
196
196
|
|
data/lib/beaker/version.rb
CHANGED
@@ -75,11 +75,19 @@ describe ClassMixedWithDSLInstallUtils do
|
|
75
75
|
subject.configure_foss_defaults_on( hosts )
|
76
76
|
end
|
77
77
|
|
78
|
-
it 'uses aio paths for hosts of version >= 4.0' do
|
78
|
+
it 'uses aio paths for hosts of version >= 4.0, except for master/database/dashboard' do
|
79
|
+
agents = []
|
80
|
+
not_agents = []
|
79
81
|
hosts.each do |host|
|
80
82
|
host[:version] = '4.0'
|
83
|
+
if subject.agent_only(host)
|
84
|
+
agents << host
|
85
|
+
else
|
86
|
+
not_agents << host
|
87
|
+
end
|
81
88
|
end
|
82
|
-
expect(subject).to receive(:add_aio_defaults_on).exactly(
|
89
|
+
expect(subject).to receive(:add_aio_defaults_on).exactly(agents.length).times
|
90
|
+
expect(subject).to receive(:add_foss_defaults_on).exactly(not_agents.length).times
|
83
91
|
expect(subject).to receive(:add_puppet_paths_on).exactly(hosts.length).times
|
84
92
|
|
85
93
|
subject.configure_foss_defaults_on( hosts )
|
@@ -52,7 +52,7 @@ describe ClassMixedWithDSLInstallUtils do
|
|
52
52
|
subject.configure_pe_defaults_on( hosts )
|
53
53
|
end
|
54
54
|
|
55
|
-
it 'uses
|
55
|
+
it 'uses pe paths for hosts of type pe' do
|
56
56
|
hosts.each do |host|
|
57
57
|
host[:type] = 'pe'
|
58
58
|
end
|
@@ -69,11 +69,19 @@ describe ClassMixedWithDSLInstallUtils do
|
|
69
69
|
subject.configure_pe_defaults_on( hosts )
|
70
70
|
end
|
71
71
|
|
72
|
-
it 'uses aio paths for hosts of version >= 4.0' do
|
72
|
+
it 'uses aio paths for hosts of version >= 4.0, except for master/dashboard/database' do
|
73
|
+
agents = []
|
74
|
+
not_agents = []
|
73
75
|
hosts.each do |host|
|
74
76
|
host[:pe_ver] = '4.0'
|
77
|
+
if subject.agent_only(host)
|
78
|
+
agents << host
|
79
|
+
else
|
80
|
+
not_agents << host
|
81
|
+
end
|
75
82
|
end
|
76
|
-
expect(subject).to receive(:add_aio_defaults_on).exactly(
|
83
|
+
expect(subject).to receive(:add_aio_defaults_on).exactly(agents.length).times
|
84
|
+
expect(subject).to receive(:add_pe_defaults_on).exactly(not_agents.length).times
|
77
85
|
expect(subject).to receive(:add_puppet_paths_on).exactly(hosts.length).times
|
78
86
|
|
79
87
|
subject.configure_pe_defaults_on( hosts )
|
@@ -458,7 +466,11 @@ describe ClassMixedWithDSLInstallUtils do
|
|
458
466
|
expect( subject ).to receive( :install_puppet_agent_pe_promoted_repo_on ).with( hosts[2],
|
459
467
|
{:puppet_agent_version=>nil, :puppet_agent_sha=>nil, :pe_ver=>nil, :puppet_collection=>nil} ).once
|
460
468
|
hosts.each do |host|
|
461
|
-
|
469
|
+
if subject.agent_only(host)
|
470
|
+
expect( subject ).to receive( :add_aio_defaults_on ).with( host ).once
|
471
|
+
else
|
472
|
+
expect( subject ).to receive( :add_pe_defaults_on ).with( host ).once
|
473
|
+
end
|
462
474
|
expect( subject ).to receive( :sign_certificate_for ).with( host ).once
|
463
475
|
expect( subject ).to receive( :stop_agent_on ).with( host ).once
|
464
476
|
expect( subject ).to receive( :on ).with( host, /puppet agent -t/, :acceptable_exit_codes => [0,2] ).once
|
@@ -651,4 +663,87 @@ describe ClassMixedWithDSLInstallUtils do
|
|
651
663
|
|
652
664
|
end
|
653
665
|
|
666
|
+
describe 'create_agent_specified_arrays' do
|
667
|
+
let(:master) { make_host( 'master', { :platform => 'linux',
|
668
|
+
:pe_ver => '4.0',
|
669
|
+
:roles => ['master', 'agent']})}
|
670
|
+
let(:db) { make_host( 'db', { :platform => 'linux',
|
671
|
+
:pe_ver => '4.0',
|
672
|
+
:roles => ['database', 'agent']})}
|
673
|
+
let(:console) { make_host( 'console', { :platform => 'linux',
|
674
|
+
:pe_ver => '4.0',
|
675
|
+
:roles => ['dashboard', 'agent']})}
|
676
|
+
let(:monolith) { make_host( 'monolith', { :platform => 'linux',
|
677
|
+
:pe_ver => '4.0',
|
678
|
+
:roles => %w(master dashboard database)})}
|
679
|
+
let(:frictionless) { make_host( 'frictionless', { :platform => 'linux',
|
680
|
+
:pe_ver => '4.0',
|
681
|
+
:roles => ['agent', 'frictionless']})}
|
682
|
+
let(:agent1) { make_host( 'agent1', { :platform => 'linux',
|
683
|
+
:pe_ver => '4.0',
|
684
|
+
:roles => ['agent']})}
|
685
|
+
let(:agent2) { make_host( 'agent2', { :platform => 'linux',
|
686
|
+
:pe_ver => '4.0',
|
687
|
+
:roles => ['agent']})}
|
688
|
+
let(:default_agent) { make_host( 'default', { :platform => 'linux',
|
689
|
+
:pe_ver => '4.0',
|
690
|
+
:roles => ['default', 'agent']})}
|
691
|
+
let(:masterless) { make_host( 'masterless', { :platform => 'linux',
|
692
|
+
:pe_ver => '4.0',
|
693
|
+
:roles => ['agent', 'masterless']})}
|
694
|
+
let(:compiler) { make_host( 'compiler', { :platform => 'linux',
|
695
|
+
:pe_ver => '4.0',
|
696
|
+
:roles => ['agent', 'compile_master']})}
|
697
|
+
|
698
|
+
it 'sorts hosts with common PE roles' do
|
699
|
+
these_hosts = [master, db, console, agent1, frictionless]
|
700
|
+
agent_only, non_agent = subject.create_agent_specified_arrays(these_hosts)
|
701
|
+
expect(agent_only.length).to be 1
|
702
|
+
expect(agent_only).to include(agent1)
|
703
|
+
expect(non_agent.length).to be 4
|
704
|
+
expect(non_agent).to include(master)
|
705
|
+
expect(non_agent).to include(db)
|
706
|
+
expect(non_agent).to include(console)
|
707
|
+
expect(non_agent).to include(frictionless)
|
708
|
+
end
|
709
|
+
|
710
|
+
# Possibly needed for NetDev and Scale testing
|
711
|
+
it 'defaults to classifying custom roles as "agent only"' do
|
712
|
+
these_hosts = [monolith, compiler, agent1, agent2]
|
713
|
+
agent_only, non_agent = subject.create_agent_specified_arrays(these_hosts)
|
714
|
+
expect(agent_only.length).to be 3
|
715
|
+
expect(agent_only).to include(agent1)
|
716
|
+
expect(agent_only).to include(agent2)
|
717
|
+
expect(agent_only).to include(compiler)
|
718
|
+
expect(non_agent.length).to be 1
|
719
|
+
expect(non_agent).to include(monolith)
|
720
|
+
end
|
721
|
+
|
722
|
+
# Most common form of module testing
|
723
|
+
it 'allows a puppet-agent host to be the default test target' do
|
724
|
+
these_hosts = [monolith, default_agent]
|
725
|
+
agent_only, non_agent = subject.create_agent_specified_arrays(these_hosts)
|
726
|
+
expect(agent_only.length).to be 1
|
727
|
+
expect(agent_only).to include(default_agent)
|
728
|
+
expect(non_agent.length).to be 1
|
729
|
+
expect(non_agent).to include(monolith)
|
730
|
+
end
|
731
|
+
|
732
|
+
# Preferred module on commit scenario
|
733
|
+
it 'handles masterless scenarios' do
|
734
|
+
these_hosts = [masterless]
|
735
|
+
agent_only, non_agent = subject.create_agent_specified_arrays(these_hosts)
|
736
|
+
expect(agent_only.length).to be 1
|
737
|
+
expect(non_agent).to be_empty
|
738
|
+
end
|
739
|
+
|
740
|
+
# IIRC, this is the basic PE integration smoke test
|
741
|
+
it 'handles agent-only-less scenarios' do
|
742
|
+
these_hosts = [monolith, frictionless]
|
743
|
+
agent_only, non_agent = subject.create_agent_specified_arrays(these_hosts)
|
744
|
+
expect(agent_only).to be_empty
|
745
|
+
expect(non_agent.length).to be 2
|
746
|
+
end
|
747
|
+
end
|
748
|
+
|
654
749
|
end
|
@@ -96,6 +96,25 @@ describe ClassMixedWithDSLRoles do
|
|
96
96
|
expect( subject.database ).to be_nil
|
97
97
|
end
|
98
98
|
end
|
99
|
+
describe '#not_controller' do
|
100
|
+
it 'returns true when a host does not have the roles master/database/dashboard' do
|
101
|
+
expect( subject.not_controller(agent1) ).to be == true
|
102
|
+
end
|
103
|
+
it 'returns false when a host has one of the roles master/database/dashboard' do
|
104
|
+
expect( subject.not_controller(a_and_dash) ).to be == false
|
105
|
+
end
|
106
|
+
end
|
107
|
+
describe '#agent_only' do
|
108
|
+
it 'returns true when a host has the single role agent' do
|
109
|
+
expect( subject.agent_only(agent1) ).to be == true
|
110
|
+
end
|
111
|
+
it 'returns false when a host has more than a single role' do
|
112
|
+
expect( subject.agent_only(a_and_dash) ).to be == false
|
113
|
+
end
|
114
|
+
it 'returns false when a host has the role master' do
|
115
|
+
expect( subject.agent_only(master) ).to be == false
|
116
|
+
end
|
117
|
+
end
|
99
118
|
describe '#default' do
|
100
119
|
it 'returns the default host when one is specified' do
|
101
120
|
@hosts = [ db, agent1, agent2, default, master]
|
data/spec/beaker/host_spec.rb
CHANGED
@@ -364,6 +364,24 @@ module Beaker
|
|
364
364
|
|
365
365
|
end
|
366
366
|
|
367
|
+
end
|
368
|
+
|
369
|
+
describe "#touch" do
|
370
|
+
|
371
|
+
it "generates the right absolute command for a windows host" do
|
372
|
+
@platform = 'windows'
|
373
|
+
expect( host.touch('touched_file') ).to be == "c:\\\\windows\\\\system32\\\\cmd.exe /c echo. 2> touched_file"
|
374
|
+
end
|
375
|
+
|
376
|
+
it "generates the right absolute command for a unix host" do
|
377
|
+
@platform = 'centos'
|
378
|
+
expect( host.touch('touched_file') ).to be == "/bin/touch touched_file"
|
379
|
+
end
|
380
|
+
|
381
|
+
it "generates the right absolute command for an osx host" do
|
382
|
+
@platform = 'osx'
|
383
|
+
expect( host.touch('touched_file') ).to be == "/usr/bin/touch touched_file"
|
384
|
+
end
|
367
385
|
|
368
386
|
end
|
369
387
|
|
@@ -7,7 +7,7 @@ module Beaker
|
|
7
7
|
let(:parser) {Beaker::Options::CommandLineParser.new}
|
8
8
|
let(:test_opts) {["-h", "vcloud.cfg", "--debug", "--tests", "test.rb", "--help"]}
|
9
9
|
let(:full_opts_in) {["--hosts", "host.cfg", "--options", "opts_file", "--helper", "path_to_helper", "--load-path", "load_path", "--tests", "test1.rb,test2.rb,test3.rb", "--pre-suite", "pre_suite.rb", "--post-suite", "post_suite.rb", "--no-provision", "--preserve-hosts", "always", "--root-keys", "--keyfile", "../.ssh/id_rsa", "--install", "gitrepopath", "-m", "module", "-q", "--dry-run", "--no-ntp", "--repo-proxy", "--add-el-extras", "--config", "anotherfile.cfg", "--fail-mode", "fast", "--no-color", "--version", "--log-level", "info", "--package-proxy", "http://192.168.100.1:3128", "--collect-perf-data", "--parse-only", "--validate", "--timeout", "40", "--log-prefix", "pants", "--configure", "--tag", "1,2,3", "--exclude-tag", "4,5,6", "--xml-time-order"]}
|
10
|
-
let(:full_opts_out) {{:hosts_file=>"anotherfile.cfg",:options_file=>"opts_file", :helper => "path_to_helper", :load_path => "load_path", :tests => "test1.rb,test2.rb,test3.rb", :pre_suite => "pre_suite.rb", :post_suite => "post_suite.rb", :provision=>false, :preserve_hosts => "always", :root_keys=>true, :keyfile => "../.ssh/id_rsa", :install => "gitrepopath", :modules=>"module", :quiet=>true, :dry_run=>true, :timesync=>false, :repo_proxy=>true, :add_el_extras=>true, :fail_mode => "fast", :color=>false, :
|
10
|
+
let(:full_opts_out) {{:hosts_file=>"anotherfile.cfg",:options_file=>"opts_file", :helper => "path_to_helper", :load_path => "load_path", :tests => "test1.rb,test2.rb,test3.rb", :pre_suite => "pre_suite.rb", :post_suite => "post_suite.rb", :provision=>false, :preserve_hosts => "always", :root_keys=>true, :keyfile => "../.ssh/id_rsa", :install => "gitrepopath", :modules=>"module", :quiet=>true, :dry_run=>true, :timesync=>false, :repo_proxy=>true, :add_el_extras=>true, :fail_mode => "fast", :color=>false, :beaker_version_print=>true, :log_level => "info", :package_proxy => "http://192.168.100.1:3128", :collect_perf_data=>true, :parse_only=>true, :validate=>true, :timeout => "40", :log_prefix => "pants", :configure => true, :tag_includes => "1,2,3", :tag_excludes => "4,5,6", :xml_time_enabled => true}}
|
11
11
|
let(:validate_true) {["--validate"]}
|
12
12
|
let(:validate_false) {["--no-validate"]}
|
13
13
|
let(:configure_true) {['--configure']}
|
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.
|
4
|
+
version: 2.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppetlabs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -448,6 +448,7 @@ files:
|
|
448
448
|
- lib/beaker/host/freebsd.rb
|
449
449
|
- lib/beaker/host/freebsd/exec.rb
|
450
450
|
- lib/beaker/host/mac.rb
|
451
|
+
- lib/beaker/host/mac/exec.rb
|
451
452
|
- lib/beaker/host/mac/group.rb
|
452
453
|
- lib/beaker/host/mac/pkg.rb
|
453
454
|
- lib/beaker/host/mac/user.rb
|