beaker 1.16.0 → 1.17.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CONTRIBUTING.md +90 -0
- data/HISTORY.md +654 -2
- data/beaker.gemspec +1 -0
- data/lib/beaker/answers/version34.rb +4 -0
- data/lib/beaker/cli.rb +49 -2
- data/lib/beaker/dsl/helpers.rb +356 -196
- data/lib/beaker/dsl/install_utils.rb +135 -16
- data/lib/beaker/dsl/patterns.rb +37 -0
- data/lib/beaker/dsl/roles.rb +29 -0
- data/lib/beaker/dsl.rb +2 -1
- data/lib/beaker/host/unix.rb +14 -10
- data/lib/beaker/host/windows.rb +2 -0
- data/lib/beaker/host.rb +96 -1
- data/lib/beaker/host_prebuilt_steps.rb +41 -51
- data/lib/beaker/hypervisor/aws_sdk.rb +80 -16
- data/lib/beaker/hypervisor/ec2_helper.rb +1 -1
- data/lib/beaker/logger.rb +17 -0
- data/lib/beaker/options/command_line_parser.rb +3 -0
- data/lib/beaker/options/hosts_file_parser.rb +7 -4
- data/lib/beaker/options/options_hash.rb +2 -2
- data/lib/beaker/options/parser.rb +1 -1
- data/lib/beaker/options/presets.rb +128 -83
- data/lib/beaker/perf.rb +58 -0
- data/lib/beaker/shared/host_manager.rb +81 -0
- data/lib/beaker/shared.rb +2 -2
- data/lib/beaker/ssh_connection.rb +14 -7
- data/lib/beaker/test_case.rb +13 -0
- data/lib/beaker/test_suite.rb +23 -5
- data/lib/beaker/version.rb +1 -1
- data/lib/beaker.rb +1 -1
- data/spec/beaker/answers_spec.rb +13 -8
- data/spec/beaker/dsl/ezbake_utils_spec.rb +8 -9
- data/spec/beaker/dsl/helpers_spec.rb +299 -51
- data/spec/beaker/dsl/install_utils_spec.rb +75 -10
- data/spec/beaker/dsl/roles_spec.rb +36 -1
- data/spec/beaker/host_prebuilt_steps_spec.rb +21 -5
- data/spec/beaker/host_spec.rb +187 -23
- data/spec/beaker/hypervisor/ec2_helper_spec.rb +4 -4
- data/spec/beaker/hypervisor/vagrant_spec.rb +1 -1
- data/spec/beaker/options/hosts_file_parser_spec.rb +5 -0
- data/spec/beaker/options/options_hash_spec.rb +2 -2
- data/spec/beaker/options/parser_spec.rb +6 -0
- data/spec/beaker/options/presets_spec.rb +18 -2
- data/spec/beaker/perf_spec.rb +87 -0
- data/spec/beaker/shared/{host_role_parser_spec.rb → host_manager_spec.rb} +36 -5
- data/spec/beaker/test_suite_spec.rb +4 -3
- data/spec/matchers.rb +31 -3
- data/spec/mocks.rb +31 -25
- metadata +24 -5
- data/lib/beaker/shared/host_role_parser.rb +0 -36
data/lib/beaker/cli.rb
CHANGED
@@ -78,6 +78,9 @@ module Beaker
|
|
78
78
|
|
79
79
|
provision
|
80
80
|
|
81
|
+
# Setup perf monitoring if needed
|
82
|
+
@perf = Beaker::Perf.new( @hosts, @options ) if @options[:collect_perf_data]
|
83
|
+
|
81
84
|
errored = false
|
82
85
|
|
83
86
|
#pre acceptance phase
|
@@ -108,9 +111,11 @@ module Beaker
|
|
108
111
|
end
|
109
112
|
end
|
110
113
|
|
111
|
-
@
|
114
|
+
@perf.print_perf_info if @options[:collect_perf_data]
|
112
115
|
print_reproduction_info( :error )
|
113
116
|
|
117
|
+
@logger.error "Failed running the test suite."
|
118
|
+
puts ''
|
114
119
|
exit 1
|
115
120
|
else
|
116
121
|
#cleanup on success
|
@@ -120,7 +125,11 @@ module Beaker
|
|
120
125
|
@network_manager.cleanup
|
121
126
|
end
|
122
127
|
end
|
123
|
-
|
128
|
+
|
129
|
+
if @logger.is_debug?
|
130
|
+
print_reproduction_info( :debug )
|
131
|
+
end
|
132
|
+
@perf.print_perf_info if @options[:collect_perf_data]
|
124
133
|
end
|
125
134
|
end
|
126
135
|
|
@@ -138,7 +147,45 @@ module Beaker
|
|
138
147
|
).run_and_raise_on_failure
|
139
148
|
end
|
140
149
|
|
150
|
+
# @see print_env_vars_affecting_beaker & print_command_line
|
141
151
|
def print_reproduction_info( log_level = :debug )
|
152
|
+
print_command_line( log_level )
|
153
|
+
print_env_vars_affecting_beaker( log_level )
|
154
|
+
end
|
155
|
+
|
156
|
+
# Prints Environment variables affecting the beaker run (those that
|
157
|
+
# beaker introspects + the ruby env that beaker runs within)
|
158
|
+
# @param [Symbol] log_level The log level (coloring) to print the message at
|
159
|
+
# @example Print pertinent env vars using error leve reporting (red)
|
160
|
+
# print_env_vars_affecting_beaker :error
|
161
|
+
#
|
162
|
+
# @return nil
|
163
|
+
def print_env_vars_affecting_beaker( log_level )
|
164
|
+
beaker_env_vars = Beaker::Options::Presets::ENVIRONMENT_SPEC.values
|
165
|
+
non_beaker_env_vars = [ 'BUNDLE_PATH', 'BUNDLE_BIN', 'GEM_HOME', 'GEM_PATH', 'RUBYLIB', 'PATH']
|
166
|
+
important_env_vars = beaker_env_vars + non_beaker_env_vars
|
167
|
+
env_var_map = important_env_vars.inject({}) do |memo, possibly_set_vars|
|
168
|
+
set_var = Array(possibly_set_vars).detect {|possible_var| ENV[possible_var] }
|
169
|
+
memo[set_var] = ENV[set_var] if set_var
|
170
|
+
memo
|
171
|
+
end
|
172
|
+
|
173
|
+
puts ''
|
174
|
+
@logger.send( log_level, "Important ENV variables that may have affected your run:" )
|
175
|
+
env_var_map.each_pair do |var, value|
|
176
|
+
@logger.send( log_level, " #{var}\t\t#{value}" )
|
177
|
+
end
|
178
|
+
puts ''
|
179
|
+
end
|
180
|
+
|
181
|
+
# Prints the command line that can be called to reproduce this run
|
182
|
+
# (assuming the environment is the same)
|
183
|
+
# @param [Symbol] log_level The log level (coloring) to print the message at
|
184
|
+
# @example Print pertinent env vars using error leve reporting (red)
|
185
|
+
# print_command_line :error
|
186
|
+
#
|
187
|
+
# @return nil
|
188
|
+
def print_command_line( log_level = :debug )
|
142
189
|
puts ''
|
143
190
|
@logger.send(log_level, "You can reproduce this run with:\n")
|
144
191
|
@logger.send(log_level, @options[:command_line])
|