beaker 1.16.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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])