beaker 1.16.0 → 1.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +8 -8
  2. data/CONTRIBUTING.md +90 -0
  3. data/HISTORY.md +654 -2
  4. data/beaker.gemspec +1 -0
  5. data/lib/beaker/answers/version34.rb +4 -0
  6. data/lib/beaker/cli.rb +49 -2
  7. data/lib/beaker/dsl/helpers.rb +356 -196
  8. data/lib/beaker/dsl/install_utils.rb +135 -16
  9. data/lib/beaker/dsl/patterns.rb +37 -0
  10. data/lib/beaker/dsl/roles.rb +29 -0
  11. data/lib/beaker/dsl.rb +2 -1
  12. data/lib/beaker/host/unix.rb +14 -10
  13. data/lib/beaker/host/windows.rb +2 -0
  14. data/lib/beaker/host.rb +96 -1
  15. data/lib/beaker/host_prebuilt_steps.rb +41 -51
  16. data/lib/beaker/hypervisor/aws_sdk.rb +80 -16
  17. data/lib/beaker/hypervisor/ec2_helper.rb +1 -1
  18. data/lib/beaker/logger.rb +17 -0
  19. data/lib/beaker/options/command_line_parser.rb +3 -0
  20. data/lib/beaker/options/hosts_file_parser.rb +7 -4
  21. data/lib/beaker/options/options_hash.rb +2 -2
  22. data/lib/beaker/options/parser.rb +1 -1
  23. data/lib/beaker/options/presets.rb +128 -83
  24. data/lib/beaker/perf.rb +58 -0
  25. data/lib/beaker/shared/host_manager.rb +81 -0
  26. data/lib/beaker/shared.rb +2 -2
  27. data/lib/beaker/ssh_connection.rb +14 -7
  28. data/lib/beaker/test_case.rb +13 -0
  29. data/lib/beaker/test_suite.rb +23 -5
  30. data/lib/beaker/version.rb +1 -1
  31. data/lib/beaker.rb +1 -1
  32. data/spec/beaker/answers_spec.rb +13 -8
  33. data/spec/beaker/dsl/ezbake_utils_spec.rb +8 -9
  34. data/spec/beaker/dsl/helpers_spec.rb +299 -51
  35. data/spec/beaker/dsl/install_utils_spec.rb +75 -10
  36. data/spec/beaker/dsl/roles_spec.rb +36 -1
  37. data/spec/beaker/host_prebuilt_steps_spec.rb +21 -5
  38. data/spec/beaker/host_spec.rb +187 -23
  39. data/spec/beaker/hypervisor/ec2_helper_spec.rb +4 -4
  40. data/spec/beaker/hypervisor/vagrant_spec.rb +1 -1
  41. data/spec/beaker/options/hosts_file_parser_spec.rb +5 -0
  42. data/spec/beaker/options/options_hash_spec.rb +2 -2
  43. data/spec/beaker/options/parser_spec.rb +6 -0
  44. data/spec/beaker/options/presets_spec.rb +18 -2
  45. data/spec/beaker/perf_spec.rb +87 -0
  46. data/spec/beaker/shared/{host_role_parser_spec.rb → host_manager_spec.rb} +36 -5
  47. data/spec/beaker/test_suite_spec.rb +4 -3
  48. data/spec/matchers.rb +31 -3
  49. data/spec/mocks.rb +31 -25
  50. metadata +24 -5
  51. 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
- @logger.error "\nFailed to execute tests!\n"
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
- print_reproduction_info( :debug ) if @logger.is_debug?
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])