message-driver 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +20 -2
- data/.rubocop_todo.yml +15 -23
- data/.travis.yml +10 -22
- data/CHANGELOG.md +9 -0
- data/Gemfile +34 -24
- data/Guardfile +46 -29
- data/LICENSE +1 -1
- data/Rakefile +14 -6
- data/features/CHANGELOG.md +1 -0
- data/features/step_definitions/logging_steps.rb +3 -2
- data/features/support/firewall_helper.rb +2 -2
- data/features/support/no_error_matcher.rb +1 -1
- data/lib/message_driver/adapters/base.rb +115 -11
- data/lib/message_driver/adapters/bunny_adapter.rb +58 -46
- data/lib/message_driver/adapters/in_memory_adapter.rb +57 -35
- data/lib/message_driver/adapters/stomp_adapter.rb +10 -10
- data/lib/message_driver/broker.rb +16 -19
- data/lib/message_driver/client.rb +3 -7
- data/lib/message_driver/destination.rb +4 -4
- data/lib/message_driver/message.rb +3 -2
- data/lib/message_driver/middleware/block_middleware.rb +1 -1
- data/lib/message_driver/subscription.rb +1 -1
- data/lib/message_driver/version.rb +1 -1
- data/message-driver.gemspec +6 -6
- data/spec/integration/bunny/amqp_integration_spec.rb +6 -4
- data/spec/integration/bunny/bunny_adapter_spec.rb +1 -3
- data/spec/integration/in_memory/in_memory_adapter_spec.rb +46 -6
- data/spec/integration/stomp/stomp_adapter_spec.rb +0 -2
- data/spec/spec_helper.rb +6 -0
- data/spec/support/matchers/override_method_matcher.rb +7 -0
- data/spec/support/shared/adapter_examples.rb +3 -0
- data/spec/support/shared/client_ack_examples.rb +26 -4
- data/spec/support/shared/context_examples.rb +46 -0
- data/spec/support/shared/destination_examples.rb +28 -0
- data/spec/support/shared/subscription_examples.rb +6 -1
- data/spec/support/shared/transaction_examples.rb +35 -4
- data/spec/support/test_adapter.rb +19 -0
- data/spec/support/utils.rb +1 -5
- data/spec/units/message_driver/adapters/base_spec.rb +37 -31
- data/spec/units/message_driver/broker_spec.rb +1 -2
- data/spec/units/message_driver/client_spec.rb +3 -3
- data/spec/units/message_driver/destination_spec.rb +4 -2
- data/spec/units/message_driver/message_spec.rb +9 -3
- data/test_lib/broker_config.rb +0 -2
- data/test_lib/provider/base.rb +2 -6
- data/test_lib/provider/rabbitmq.rb +3 -3
- metadata +18 -16
- data/ci/travis_setup +0 -7
- data/features/CHANGELOG.md +0 -102
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3bcb04e7ce78a6c1fa187b2c3a4c1bdecc74506
|
4
|
+
data.tar.gz: 87bde205475a8f149eb6d08b0520b24826316189
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9f602d1836c47357d30d76c7c34e1e75a5ebad910f84fa6871960d4fdefc9913c30d612ae9c4b3d52b84368ef8046164d1bc0a922f62f4f8e965d5d8fabb0a2
|
7
|
+
data.tar.gz: cf87a47b64e7fd438c515c4abb5891f6f6c803190d2fa3e7b8e89f3722f20db0be9ef89dd5c14ffc8c85a4c0896945ae4dfcc9ebce1b84e2ea9e0321b04829dd
|
data/.rubocop.yml
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
inherit_from: '.rubocop_todo.yml'
|
2
2
|
|
3
3
|
AllCops:
|
4
|
+
TargetRubyVersion: 1.9
|
4
5
|
Include:
|
5
6
|
- 'message-driver.gemspec'
|
6
7
|
- '**/Gemfile'
|
@@ -10,6 +11,9 @@ AllCops:
|
|
10
11
|
- 'lib/vendor/**/*.rb'
|
11
12
|
- 'vendor/**/*'
|
12
13
|
|
14
|
+
Bundler/OrderedGems:
|
15
|
+
Enabled: false
|
16
|
+
|
13
17
|
Metrics/BlockNesting:
|
14
18
|
Max: 4
|
15
19
|
|
@@ -19,6 +23,9 @@ Metrics/LineLength:
|
|
19
23
|
Include:
|
20
24
|
- 'lib/**/*.rb'
|
21
25
|
|
26
|
+
Metrics/ParameterLists:
|
27
|
+
Enabled: false
|
28
|
+
|
22
29
|
Style/AccessorMethodName:
|
23
30
|
Enabled: false
|
24
31
|
|
@@ -32,12 +39,23 @@ Style/FileName:
|
|
32
39
|
Exclude:
|
33
40
|
- 'lib/message-driver.rb'
|
34
41
|
|
42
|
+
Style/MultilineMethodCallBraceLayout:
|
43
|
+
EnforcedStyle: new_line
|
44
|
+
|
35
45
|
Style/NumericLiterals:
|
36
46
|
Enabled: false
|
37
47
|
|
48
|
+
Style/OptionalArguments:
|
49
|
+
Enabled: false
|
50
|
+
|
51
|
+
Style/RaiseArgs:
|
52
|
+
Enabled: false
|
53
|
+
|
38
54
|
Style/RegexpLiteral:
|
39
|
-
|
40
|
-
|
55
|
+
EnforcedStyle: slashes
|
56
|
+
|
57
|
+
Style/RescueModifier:
|
58
|
+
Enabled: false
|
41
59
|
|
42
60
|
Style/TrivialAccessors:
|
43
61
|
ExactNameMatch: true
|
data/.rubocop_todo.yml
CHANGED
@@ -1,14 +1,20 @@
|
|
1
|
-
# This configuration was generated by
|
2
|
-
#
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2016-12-06 13:04:29 -0600 using RuboCop version 0.46.0.
|
3
4
|
# The point is for the user to remove these configuration records
|
4
5
|
# one by one as the offenses are removed from the code base.
|
5
6
|
# Note that changes in the inspected code, or installation of new
|
6
7
|
# versions of RuboCop, may require this file to be generated again.
|
7
8
|
|
8
|
-
# Offense count:
|
9
|
+
# Offense count: 9
|
9
10
|
Metrics/AbcSize:
|
10
11
|
Enabled: false
|
11
12
|
|
13
|
+
# Offense count: 1
|
14
|
+
# Configuration parameters: CountComments.
|
15
|
+
Metrics/BlockLength:
|
16
|
+
Enabled: false
|
17
|
+
|
12
18
|
# Offense count: 2
|
13
19
|
# Configuration parameters: CountComments.
|
14
20
|
Metrics/ClassLength:
|
@@ -23,30 +29,16 @@ Metrics/CyclomaticComplexity:
|
|
23
29
|
Metrics/MethodLength:
|
24
30
|
Enabled: false
|
25
31
|
|
32
|
+
# Offense count: 7
|
33
|
+
# Configuration parameters: CountComments.
|
34
|
+
Metrics/ModuleLength:
|
35
|
+
Enabled: false
|
36
|
+
|
26
37
|
# Offense count: 3
|
27
38
|
Metrics/PerceivedComplexity:
|
28
39
|
Enabled: false
|
29
40
|
|
30
|
-
# Offense count:
|
41
|
+
# Offense count: 13
|
31
42
|
# Configuration parameters: MinBodyLength.
|
32
43
|
Style/GuardClause:
|
33
44
|
Enabled: false
|
34
|
-
|
35
|
-
# Offense count: 1
|
36
|
-
Style/ModuleFunction:
|
37
|
-
Enabled: false
|
38
|
-
|
39
|
-
# Offense count: 1
|
40
|
-
Style/MultilineBlockChain:
|
41
|
-
Enabled: false
|
42
|
-
|
43
|
-
# Offense count: 1
|
44
|
-
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
45
|
-
Style/RaiseArgs:
|
46
|
-
Enabled: false
|
47
|
-
|
48
|
-
# Offense count: 3
|
49
|
-
# Cop supports --auto-correct.
|
50
|
-
# Configuration parameters: IgnoredMethods.
|
51
|
-
Style/SymbolProc:
|
52
|
-
Enabled: false
|
data/.travis.yml
CHANGED
@@ -1,48 +1,36 @@
|
|
1
1
|
language: ruby
|
2
|
-
sudo:
|
2
|
+
sudo: required
|
3
3
|
before_install: gem install bundler
|
4
4
|
bundler_args: --without tools darwin
|
5
5
|
services:
|
6
6
|
- rabbitmq
|
7
7
|
before_script:
|
8
|
-
-
|
8
|
+
- sudo rabbitmq-plugins enable rabbitmq_stomp
|
9
9
|
script: bundle exec rake ci
|
10
10
|
rvm:
|
11
|
+
- 2.3
|
11
12
|
- 2.2
|
12
13
|
- 2.0.0
|
13
14
|
- 1.9.3
|
14
15
|
- jruby-19mode
|
15
|
-
- 1.9.2
|
16
16
|
- rbx-2
|
17
17
|
env:
|
18
18
|
- ADAPTER=in_memory
|
19
19
|
- ADAPTER=bunny:1.7.0
|
20
|
-
- ADAPTER=bunny:2.
|
21
|
-
- ADAPTER=bunny:2.1
|
22
|
-
- ADAPTER=
|
23
|
-
- ADAPTER=stomp
|
20
|
+
- ADAPTER=bunny:2.5.1
|
21
|
+
- ADAPTER=bunny:2.6.1
|
22
|
+
- ADAPTER=stomp:1.3.1
|
24
23
|
matrix:
|
25
24
|
fast_finish: true
|
26
25
|
allow_failures:
|
27
26
|
- rvm: rbx-2
|
28
27
|
- rvm: jruby-19mode
|
29
|
-
- rvm: 1.9.2
|
30
28
|
exclude:
|
31
|
-
- rvm: 1.9.2
|
32
|
-
env: ADAPTER=bunny:2.0.1
|
33
29
|
- rvm: 1.9.3
|
34
|
-
env: ADAPTER=bunny:2.
|
30
|
+
env: ADAPTER=bunny:2.5.1
|
35
31
|
- rvm: jruby-19mode
|
36
|
-
env: ADAPTER=bunny:2.
|
37
|
-
- rvm: 1.9.2
|
38
|
-
env: ADAPTER=bunny:2.1.0
|
32
|
+
env: ADAPTER=bunny:2.5.1
|
39
33
|
- rvm: 1.9.3
|
40
|
-
env: ADAPTER=bunny:2.1
|
34
|
+
env: ADAPTER=bunny:2.6.1
|
41
35
|
- rvm: jruby-19mode
|
42
|
-
env: ADAPTER=bunny:2.1
|
43
|
-
- rvm: 1.9.2
|
44
|
-
env: ADAPTER=bunny:2.2.0
|
45
|
-
- rvm: 1.9.3
|
46
|
-
env: ADAPTER=bunny:2.2.0
|
47
|
-
- rvm: jruby-19mode
|
48
|
-
env: ADAPTER=bunny:2.2.0
|
36
|
+
env: ADAPTER=bunny:2.6.1
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.7.0 - 2016-12-19
|
4
|
+
|
5
|
+
* update test gems
|
6
|
+
* drop support for ruby 1.9.2
|
7
|
+
* test against newer versions of bunny
|
8
|
+
* Restructure internal API for adapter contexts to better facilitate instrumentation
|
9
|
+
* Make the in_memory adapter actually support multiple subscriptions per destination
|
10
|
+
* This is a breaking change if you depended on the old behavior!
|
11
|
+
|
3
12
|
## 0.6.1 - 2016-01-28
|
4
13
|
|
5
14
|
* fix an issue that prevents gems built under ruby 2.3.0 to be installed
|
data/Gemfile
CHANGED
@@ -7,21 +7,22 @@ platform :rbx do
|
|
7
7
|
gem 'rubysl'
|
8
8
|
end
|
9
9
|
|
10
|
-
|
10
|
+
mri_2plus = [:mri_20, :mri_21, :mri_22, :mri_23]
|
11
|
+
ruby_2plus = [:ruby_20, :ruby_21, :ruby_22, :ruby_23]
|
11
12
|
|
12
13
|
group :tools do
|
13
|
-
gem 'guard', platform:
|
14
|
-
gem 'guard-bundler', platform:
|
15
|
-
gem 'guard-rspec', platform:
|
16
|
-
gem 'guard-cucumber', platform:
|
17
|
-
gem 'guard-rubocop', platform:
|
14
|
+
gem 'guard', platform: mri_2plus
|
15
|
+
gem 'guard-bundler', platform: mri_2plus
|
16
|
+
gem 'guard-rspec', platform: mri_2plus
|
17
|
+
gem 'guard-cucumber', platform: mri_2plus
|
18
|
+
gem 'guard-rubocop', platform: mri_2plus
|
18
19
|
gem 'pry'
|
19
|
-
gem 'pry-byebug', platform:
|
20
|
-
gem 'pry-stack_explorer', platform:
|
20
|
+
gem 'pry-byebug', platform: mri_2plus
|
21
|
+
gem 'pry-stack_explorer', platform: ruby_2plus
|
21
22
|
group :darwin do
|
22
23
|
gem 'ruby_gntp'
|
23
24
|
gem 'rb-fsevent'
|
24
|
-
gem 'relish'
|
25
|
+
gem 'relish', platform: mri_2plus
|
25
26
|
gem 'lunchy'
|
26
27
|
end
|
27
28
|
gem 'yard'
|
@@ -29,7 +30,18 @@ group :tools do
|
|
29
30
|
gem 'launchy'
|
30
31
|
end
|
31
32
|
|
32
|
-
|
33
|
+
group :development do
|
34
|
+
gem 'thread_safe' # for the in_memory_adapter
|
35
|
+
|
36
|
+
# coveralls and it's dependencies need some management under ruby 1.9.3
|
37
|
+
gem 'coveralls', require: false
|
38
|
+
gem 'term-ansicolor', '~> 1.3.0' if RUBY_VERSION == '1.9.3'
|
39
|
+
platform :ruby_19 do
|
40
|
+
gem 'json', '< 2'
|
41
|
+
gem 'addressable', '< 2.5'
|
42
|
+
gem 'tins', '~> 1.6.0'
|
43
|
+
end
|
44
|
+
end
|
33
45
|
|
34
46
|
require File.expand_path('../test_lib/broker_config', __FILE__)
|
35
47
|
|
@@ -37,20 +49,18 @@ adapter = BrokerConfig.current_adapter.to_s
|
|
37
49
|
version = BrokerConfig.adapter_version
|
38
50
|
provider = BrokerConfig.provider
|
39
51
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
52
|
+
group :development do
|
53
|
+
unless adapter == 'in_memory'
|
54
|
+
case version
|
55
|
+
when nil
|
56
|
+
gem adapter
|
57
|
+
else
|
58
|
+
gem adapter.to_s, "~> #{version}"
|
59
|
+
end
|
48
60
|
end
|
49
|
-
end
|
50
61
|
|
51
|
-
case provider
|
52
|
-
when :rabbitmq
|
53
|
-
|
62
|
+
case provider
|
63
|
+
when :rabbitmq
|
64
|
+
gem 'rabbitmq_http_api_client'
|
65
|
+
end
|
54
66
|
end
|
55
|
-
|
56
|
-
gem 'coveralls', require: false
|
data/Guardfile
CHANGED
@@ -8,43 +8,60 @@ guard 'bundler' do
|
|
8
8
|
watch(/^.+\.gemspec/)
|
9
9
|
end
|
10
10
|
|
11
|
-
common_rspec_opts = {
|
12
|
-
|
11
|
+
common_rspec_opts = {
|
12
|
+
all_after_pass: false,
|
13
|
+
cmd: 'bundle exec rspec -f doc',
|
14
|
+
run_all: { cmd: 'bundle exec rspec' }
|
15
|
+
}
|
16
|
+
unit_spec_opts = common_rspec_opts.merge(
|
17
|
+
spec_paths: ['spec/units'],
|
18
|
+
results_file: File.join(File.dirname(__FILE__), "tmp/rspec_units_#{BrokerConfig.current_adapter}_guard_result")
|
19
|
+
)
|
13
20
|
integration_spec_opts = common_rspec_opts.merge(
|
14
21
|
spec_paths: ["spec/integration/#{BrokerConfig.current_adapter}"],
|
15
|
-
|
16
|
-
|
22
|
+
results_file: File.join(File.dirname(__FILE__), "tmp/rspec_integration_#{BrokerConfig.current_adapter}_guard_result"),
|
23
|
+
cmd_additional_args: '-t all_adapters'
|
17
24
|
)
|
18
25
|
|
19
|
-
group
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
26
|
+
group :tests_and_checks, halt_on_failure: true do
|
27
|
+
group 'specs' do
|
28
|
+
guard 'rspec', unit_spec_opts do
|
29
|
+
watch(%r{^spec/units/.+_spec\.rb$})
|
30
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/units/#{m[1]}_spec.rb" }
|
31
|
+
watch(%r{^spec/support/(.+)\.rb$}) { 'spec/units' }
|
32
|
+
watch('spec/spec_helper.rb') { 'spec/units' }
|
33
|
+
end
|
25
34
|
end
|
26
|
-
end
|
27
35
|
|
28
|
-
group 'integration' do
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
36
|
+
group 'integration' do
|
37
|
+
guard 'rspec', integration_spec_opts do
|
38
|
+
watch(%r{^spec/integration/.+_spec\.rb$})
|
39
|
+
watch(%r{^lib/message_driver/adapters/(.+)\.rb$}) { |m| "spec/integration/#{BrokerConfig.current_adapter}/#{m[1]}_spec.rb" }
|
40
|
+
watch(%r{^spec/support/(.+)\.rb$}) { integration_spec_opts[:spec_paths] }
|
41
|
+
watch('spec/spec_helper.rb') { integration_spec_opts[:spec_paths] }
|
42
|
+
end
|
34
43
|
end
|
35
|
-
end
|
36
44
|
|
37
|
-
group 'features' do
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
45
|
+
group 'features' do
|
46
|
+
guard('cucumber',
|
47
|
+
all_on_start: false,
|
48
|
+
cmd: "bundle exec cucumber --no-profile --color --strict --tag @all_adapters,@#{BrokerConfig.current_adapter} --tag ~@wip",
|
49
|
+
cmd_additional_args: '--format pretty --tag ~@slow',
|
50
|
+
run_all: {
|
51
|
+
cmd_additional_args: '--format progress --tag ~@slow'
|
52
|
+
}
|
53
|
+
) do
|
54
|
+
watch(%r{^features/.+\.feature$})
|
55
|
+
watch(%r{^features/support/.+$}) { 'features' }
|
56
|
+
watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
|
57
|
+
end
|
44
58
|
end
|
45
|
-
end
|
46
59
|
|
47
|
-
guard :rubocop do
|
48
|
-
|
49
|
-
|
60
|
+
guard :rubocop, cli: '-D -E' do
|
61
|
+
watch(/.+\.rb$/)
|
62
|
+
watch('Gemfile')
|
63
|
+
watch('Guardfile')
|
64
|
+
watch(/.+\.gemspec$/)
|
65
|
+
watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
|
66
|
+
end
|
50
67
|
end
|
data/LICENSE
CHANGED
data/Rakefile
CHANGED
@@ -6,12 +6,12 @@ require 'bundler/gem_tasks'
|
|
6
6
|
require 'rspec/core/rake_task'
|
7
7
|
require 'cucumber/rake/task'
|
8
8
|
|
9
|
-
require 'coveralls/rake/task'
|
10
|
-
|
11
9
|
begin
|
12
10
|
require 'rubocop/rake_task'
|
13
11
|
RuboCop::RakeTask.new do |t|
|
14
12
|
t.fail_on_error = false
|
13
|
+
t.options << '-D'
|
14
|
+
t.options << '-E'
|
15
15
|
end
|
16
16
|
rescue LoadError
|
17
17
|
puts 'rubocop not present'
|
@@ -31,7 +31,7 @@ namespace :spec do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
cucumber_opts = "--format progress --tag @all_adapters,@#{BrokerConfig.current_adapter} --tag ~@wip"
|
34
|
-
cucumber_opts += ' --tag ~@no_ci' #if ENV['CI'] == 'true' && ENV['ADAPTER'] && ENV['ADAPTER'].start_with?('bunny')
|
34
|
+
cucumber_opts += ' --tag ~@no_ci' # if ENV['CI'] == 'true' && ENV['ADAPTER'] && ENV['ADAPTER'].start_with?('bunny')
|
35
35
|
Cucumber::Rake::Task.new(:features) do |t|
|
36
36
|
t.cucumber_opts = cucumber_opts
|
37
37
|
end
|
@@ -48,7 +48,6 @@ begin
|
|
48
48
|
|
49
49
|
YARD::Rake::YardocTask.new(:docs)
|
50
50
|
namespace :docs do
|
51
|
-
|
52
51
|
desc 'open the documentation for this gem in your browser'
|
53
52
|
task open: [:docs] do
|
54
53
|
Launchy.open("file:///#{File.join(Dir.pwd, 'doc', 'index.html')}")
|
@@ -74,8 +73,17 @@ def set_adapter_under_test(adapter)
|
|
74
73
|
system "echo #{adapter} > #{File.join(File.dirname(__FILE__), '.adapter_under_test')}"
|
75
74
|
end
|
76
75
|
|
77
|
-
|
78
|
-
|
76
|
+
begin
|
77
|
+
require 'coveralls/rake/task'
|
78
|
+
Coveralls::RakeTask.new
|
79
|
+
desc 'run with code coverage'
|
80
|
+
rescue LoadError
|
81
|
+
puts "couldn't load coveralls gems, code coverage tasks not available"
|
82
|
+
namespace :coveralls do
|
83
|
+
task :push
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
79
87
|
task ci: ['spec', 'coveralls:push']
|
80
88
|
|
81
89
|
namespace :undertest do
|
@@ -0,0 +1 @@
|
|
1
|
+
../CHANGELOG.md
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'logger'
|
2
2
|
|
3
|
-
LOG_FILE_NAME = 'cucumber_log_file.log'
|
3
|
+
LOG_FILE_NAME = 'cucumber_log_file.log'.freeze
|
4
4
|
|
5
5
|
Given(/^I am logging to a log file(?: at the (#{STRING_OR_SYM}) level)?$/) do |level|
|
6
6
|
step "an empty file named \"#{LOG_FILE_NAME}\""
|
@@ -8,7 +8,8 @@ Given(/^I am logging to a log file(?: at the (#{STRING_OR_SYM}) level)?$/) do |l
|
|
8
8
|
@logger = Logger.new(LOG_FILE_NAME)
|
9
9
|
end
|
10
10
|
step "I set the log level to #{level || 'info'}"
|
11
|
-
@orig_logger
|
11
|
+
@orig_logger = MessageDriver.logger
|
12
|
+
MessageDriver.logger = @logger
|
12
13
|
end
|
13
14
|
|
14
15
|
Given(/^I set the log level to (#{STRING_OR_SYM})$/) do |level|
|