batsir 0.1.0 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +9 -1
- data/CHANGES.md +54 -0
- data/Gemfile +7 -10
- data/README.md +49 -5
- data/Rakefile +23 -16
- data/batsir.gemspec +43 -15
- data/lib/batsir/acceptors/acceptor.rb +31 -5
- data/lib/batsir/acceptors/amqp_acceptor.rb +36 -8
- data/lib/batsir/amqp.rb +35 -7
- data/lib/batsir/amqp_consumer.rb +8 -0
- data/lib/batsir/compiler/stage_worker_compiler.rb +86 -0
- data/lib/batsir/config.rb +208 -24
- data/lib/batsir/dsl/conditional_notifier_declaration.rb +31 -0
- data/lib/batsir/dsl/dsl_mappings.rb +27 -2
- data/lib/batsir/errors.rb +18 -0
- data/lib/batsir/filter.rb +5 -0
- data/lib/batsir/log.rb +7 -0
- data/lib/batsir/logger.rb +37 -0
- data/lib/batsir/logo.rb +3 -8
- data/lib/batsir/notifiers/amqp_notifier.rb +14 -4
- data/lib/batsir/notifiers/conditional_notifier.rb +29 -0
- data/lib/batsir/notifiers/notifier.rb +6 -5
- data/lib/batsir/registry.rb +6 -2
- data/lib/batsir/stage.rb +9 -4
- data/lib/batsir/stage_worker.rb +3 -56
- data/lib/batsir/strategies/retry_strategy.rb +35 -0
- data/lib/batsir/strategies/strategy.rb +20 -0
- data/lib/batsir/transformers/field_transformer.rb +2 -3
- data/lib/batsir/transformers/json_input_transformer.rb +6 -2
- data/lib/batsir/transformers/json_output_transformer.rb +6 -2
- data/lib/batsir/transformers/transformer.rb +5 -1
- data/lib/batsir/version.rb +10 -0
- data/lib/batsir.rb +31 -13
- data/spec/batsir/acceptors/acceptor_spec.rb +7 -78
- data/spec/batsir/acceptors/amqp_acceptor_spec.rb +55 -66
- data/spec/batsir/acceptors/shared_examples.rb +102 -0
- data/spec/batsir/amqp_spec.rb +58 -0
- data/spec/batsir/chain_spec.rb +4 -4
- data/spec/batsir/config_spec.rb +97 -0
- data/spec/batsir/dsl/chain_mapping_spec.rb +5 -6
- data/spec/batsir/dsl/conditional_notifier_mapping_spec.rb +80 -0
- data/spec/batsir/dsl/stage_mapping_spec.rb +38 -20
- data/spec/batsir/filter_queue_spec.rb +9 -15
- data/spec/batsir/filter_spec.rb +4 -5
- data/spec/batsir/log_spec.rb +10 -0
- data/spec/batsir/logger_spec.rb +46 -0
- data/spec/batsir/notifiers/amqp_notifier_spec.rb +43 -22
- data/spec/batsir/notifiers/conditional_notifier_spec.rb +62 -0
- data/spec/batsir/notifiers/notifier_spec.rb +4 -66
- data/spec/batsir/notifiers/shared_examples.rb +100 -0
- data/spec/batsir/registry_spec.rb +48 -0
- data/spec/batsir/stage_spec.rb +91 -85
- data/spec/batsir/stage_worker_spec.rb +13 -13
- data/spec/batsir/strategies/retry_strategy_spec.rb +58 -0
- data/spec/batsir/strategies/strategy_spec.rb +28 -0
- data/spec/batsir/support/bunny_mocks.rb +78 -5
- data/spec/batsir/transformers/field_transformer_spec.rb +22 -22
- data/spec/batsir/transformers/json_input_transformer_spec.rb +8 -3
- data/spec/batsir/transformers/json_output_transformer_spec.rb +2 -2
- data/spec/batsir/transformers/transformer_spec.rb +18 -4
- data/spec/spec_helper.rb +6 -2
- metadata +78 -23
- data/VERSION +0 -1
data/spec/batsir/chain_spec.rb
CHANGED
@@ -1,24 +1,24 @@
|
|
1
1
|
require File.join( File.dirname(__FILE__), "..", "spec_helper" )
|
2
2
|
|
3
3
|
describe Batsir::Chain do
|
4
|
-
it "
|
4
|
+
it "has a list of stages" do
|
5
5
|
chain = Batsir::Chain.new
|
6
6
|
chain.stages.should_not be_nil
|
7
7
|
end
|
8
8
|
|
9
|
-
it "
|
9
|
+
it "initially has an empty list of stages" do
|
10
10
|
chain = Batsir::Chain.new
|
11
11
|
chain.stages.should be_empty
|
12
12
|
end
|
13
13
|
|
14
|
-
it "
|
14
|
+
it "can add a stage" do
|
15
15
|
chain = Batsir::Chain.new
|
16
16
|
stage = Batsir::Stage.new(:name => "Stage")
|
17
17
|
chain.add_stage(stage)
|
18
18
|
chain.stages.should include stage
|
19
19
|
end
|
20
20
|
|
21
|
-
it "
|
21
|
+
it "can compile a chain" do
|
22
22
|
chain = Batsir::Chain.new
|
23
23
|
stage = Batsir::Stage.new(:name => "Stage")
|
24
24
|
chain.add_stage(stage)
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require File.join( File.dirname(__FILE__), "..", "spec_helper" )
|
2
|
+
|
3
|
+
describe Batsir::Config do
|
4
|
+
context "with respect to retrieving variables" do
|
5
|
+
it "can check if a key exists" do
|
6
|
+
Batsir::Config.key?(:sidekiq_queue).should be_true
|
7
|
+
Batsir::Config.key?(:non_existent).should be_false
|
8
|
+
end
|
9
|
+
|
10
|
+
it "can use brackets" do
|
11
|
+
Batsir::Config[:sidekiq_queue].should == 'batsir'
|
12
|
+
end
|
13
|
+
|
14
|
+
it "can use fetch method" do
|
15
|
+
Batsir::Config.fetch(:sidekiq_queue, nil).should == 'batsir'
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns the default value when variable does not exist" do
|
19
|
+
Batsir::Config.fetch(:dbase, 'default').should == 'default'
|
20
|
+
end
|
21
|
+
|
22
|
+
it "can use a method with the variable's name" do
|
23
|
+
Batsir::Config.sidekiq_queue.should == 'batsir'
|
24
|
+
end
|
25
|
+
|
26
|
+
it "can use return the settings in a hash" do
|
27
|
+
Batsir::Config[:dbase] = :test
|
28
|
+
hash = Batsir::Config.to_hash
|
29
|
+
hash.keys.include?(:sidekiq_queue).should be_true
|
30
|
+
hash.keys.include?(:dbase).should be_true
|
31
|
+
hash.values.include?(:test).should be_true
|
32
|
+
hash.values.include?('batsir').should be_true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "with respect to setting variables" do
|
37
|
+
it "can set a variable using brackets" do
|
38
|
+
Batsir::Config[:testtest] = "testtest"
|
39
|
+
Batsir::Config.testtest.should == "testtest"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "can set a variable using a method with the variable's name" do
|
43
|
+
Batsir::Config.testtest = "test1"
|
44
|
+
Batsir::Config[:testtest].should == "test1"
|
45
|
+
end
|
46
|
+
|
47
|
+
context "setting multiple variables at once" do
|
48
|
+
it "can use setup method" do
|
49
|
+
Batsir::Config.setup({:test_var => "test1", :test_var2 => "test2"})
|
50
|
+
Batsir::Config.test_var.should == "test1"
|
51
|
+
Batsir::Config.test_var2.should == "test2"
|
52
|
+
end
|
53
|
+
|
54
|
+
it "merges given settings with default settings when using setup method" do
|
55
|
+
Batsir::Config.setup({:test_var => "test1", :test_var2 => "test2"})
|
56
|
+
Batsir::Config.sidekiq_queue.should == 'batsir'
|
57
|
+
end
|
58
|
+
|
59
|
+
context "with block notation" do
|
60
|
+
it "uses yielding" do
|
61
|
+
Batsir::Config.use do |config|
|
62
|
+
config[:tester1] = "test1"
|
63
|
+
config[:tester2] = "test2"
|
64
|
+
end
|
65
|
+
Batsir::Config.sidekiq_queue.should == 'batsir'
|
66
|
+
Batsir::Config.tester1.should == "test1"
|
67
|
+
Batsir::Config.tester2.should == "test2"
|
68
|
+
end
|
69
|
+
|
70
|
+
it "uses a block" do
|
71
|
+
Batsir::Config.configure do
|
72
|
+
tester3 "test3"
|
73
|
+
tester4 "test4"
|
74
|
+
end
|
75
|
+
Batsir::Config.sidekiq_queue.should == 'batsir'
|
76
|
+
Batsir::Config.tester3.should == "test3"
|
77
|
+
Batsir::Config.tester4.should == "test4"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context "with respect to deleting variables" do
|
84
|
+
it "deletes the given key" do
|
85
|
+
Batsir::Config.sidekiq_queue.should_not be_nil
|
86
|
+
Batsir::Config.delete(:sidekiq_queue)
|
87
|
+
Batsir::Config.sidekiq_queue.should be_nil
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe Batsir::Config, "with respect to resetting the configuration" do
|
93
|
+
it "resets properly" do
|
94
|
+
Batsir::Config.reset
|
95
|
+
Batsir::Config.to_hash.should == Batsir::Config.defaults
|
96
|
+
end
|
97
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.join( File.dirname(__FILE__), "..", "..", "spec_helper")
|
2
2
|
|
3
3
|
describe Batsir::DSL::ChainMapping do
|
4
|
-
it "
|
4
|
+
it "creates a chain" do
|
5
5
|
block = ::Proc.new do
|
6
6
|
aggregator_chain do
|
7
7
|
end
|
@@ -11,7 +11,7 @@ describe Batsir::DSL::ChainMapping do
|
|
11
11
|
chain.should_not be_nil
|
12
12
|
end
|
13
13
|
|
14
|
-
it "
|
14
|
+
it "can add a stage" do
|
15
15
|
block = ::Proc.new do
|
16
16
|
aggregator_chain do
|
17
17
|
stage "simple_stage" do
|
@@ -26,7 +26,7 @@ describe Batsir::DSL::ChainMapping do
|
|
26
26
|
chain.stages.first.name.should == "simple_stage"
|
27
27
|
end
|
28
28
|
|
29
|
-
it "
|
29
|
+
it "sets the chain of the stage to the current chain" do
|
30
30
|
block = ::Proc.new do
|
31
31
|
aggregator_chain do
|
32
32
|
stage "simple_stage" do
|
@@ -40,7 +40,7 @@ describe Batsir::DSL::ChainMapping do
|
|
40
40
|
chain.stages.first.chain.should == chain
|
41
41
|
end
|
42
42
|
|
43
|
-
it "
|
43
|
+
it "can add multiple stages" do
|
44
44
|
block = ::Proc.new do
|
45
45
|
aggregator_chain do
|
46
46
|
stage "first_stage" do
|
@@ -59,7 +59,7 @@ describe Batsir::DSL::ChainMapping do
|
|
59
59
|
chain.stages.last.name.should == "second_stage"
|
60
60
|
end
|
61
61
|
|
62
|
-
it "
|
62
|
+
it "can create a complete aggregator chain" do
|
63
63
|
stage_name = "Complete Stage"
|
64
64
|
operation1 = "Some Operation"
|
65
65
|
operation2 = "Another Operation"
|
@@ -113,5 +113,4 @@ describe Batsir::DSL::ChainMapping do
|
|
113
113
|
stage.notifiers[notification_class2].first.should == {}
|
114
114
|
end
|
115
115
|
end
|
116
|
-
|
117
116
|
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require File.join( File.dirname(__FILE__), "..", "..", "spec_helper")
|
2
|
+
|
3
|
+
describe Batsir::DSL::ConditionalNotifierMapping do
|
4
|
+
it "creates conditional notifier declarations" do
|
5
|
+
block = lambda do
|
6
|
+
conditional do
|
7
|
+
notify_if "message == 'sometext'", Batsir::Notifiers::Notifier
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
conditional = ::Blockenspiel.invoke(block, Batsir::DSL::ConditionalNotifierMapping.new)
|
12
|
+
conditional.notifier_declarations.should_not be_empty
|
13
|
+
conditional_notifier = conditional.notifier_declarations.first
|
14
|
+
conditional_notifier.notifier.should == Batsir::Notifiers::Notifier
|
15
|
+
end
|
16
|
+
|
17
|
+
it "passes options to notifiers" do
|
18
|
+
block = lambda do
|
19
|
+
conditional do
|
20
|
+
notify_if "true", Batsir::Notifiers::Notifier, :some => :options
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
conditional = ::Blockenspiel.invoke(block, Batsir::DSL::ConditionalNotifierMapping.new)
|
25
|
+
conditional.notifier_declarations.should_not be_empty
|
26
|
+
conditional_notifier = conditional.notifier_declarations.first
|
27
|
+
conditional_notifier.options.should have_key :some
|
28
|
+
end
|
29
|
+
|
30
|
+
it "can be used inside a stage" do
|
31
|
+
block = lambda do
|
32
|
+
stage "stage name" do
|
33
|
+
outbound do
|
34
|
+
conditional do
|
35
|
+
notify_if "true", Batsir::Notifiers::Notifier, :some => :options
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
stage = ::Blockenspiel.invoke(block, Batsir::DSL::StageMapping.new)
|
42
|
+
notifier = stage.conditional_notifiers.should_not be_empty
|
43
|
+
end
|
44
|
+
|
45
|
+
context "compiling" do
|
46
|
+
before :all do
|
47
|
+
Celluloid.boot
|
48
|
+
|
49
|
+
block = lambda do
|
50
|
+
stage "stage name" do
|
51
|
+
outbound do
|
52
|
+
conditional do
|
53
|
+
notify_if "true", Batsir::Notifiers::Notifier
|
54
|
+
notify_if "false", Batsir::Notifiers::Notifier
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
stage = ::Blockenspiel.invoke(block, Batsir::DSL::StageMapping.new)
|
61
|
+
created_class = eval( stage.compile )
|
62
|
+
@instance = created_class.new
|
63
|
+
end
|
64
|
+
|
65
|
+
it "stores the conditional notifier" do
|
66
|
+
@instance.filter_queue.notifiers.size == 1
|
67
|
+
conditional = @instance.filter_queue.notifiers.first
|
68
|
+
conditional.should be_kind_of Batsir::Notifiers::ConditionalNotifier
|
69
|
+
conditional.notifiers.size.should == 2
|
70
|
+
conditional.notifiers.first.condition.should be_a Proc
|
71
|
+
end
|
72
|
+
|
73
|
+
it "adds the default transformer" do
|
74
|
+
notifier = @instance.filter_queue.notifiers.first
|
75
|
+
notifier.transformer_queue.size.should == 1
|
76
|
+
notifier.transformer_queue.first.should be_kind_of Batsir::Transformers::Transformer
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.join( File.dirname(__FILE__), "..", "..", "spec_helper")
|
2
2
|
|
3
3
|
describe Batsir::DSL::StageMapping do
|
4
|
-
it "
|
4
|
+
it "creates a simple stage with a name" do
|
5
5
|
block = ::Proc.new do
|
6
6
|
stage "simple_stage" do
|
7
7
|
end
|
@@ -12,7 +12,7 @@ describe Batsir::DSL::StageMapping do
|
|
12
12
|
stage.name.should == "simple_stage"
|
13
13
|
end
|
14
14
|
|
15
|
-
it "
|
15
|
+
it "can add a filter to the stage" do
|
16
16
|
filter = "Operation"
|
17
17
|
|
18
18
|
block = ::Proc.new do
|
@@ -28,7 +28,25 @@ describe Batsir::DSL::StageMapping do
|
|
28
28
|
stage.filters.should include filter
|
29
29
|
end
|
30
30
|
|
31
|
-
it "
|
31
|
+
it "can add a filter with options to the stage" do
|
32
|
+
filter = "Operation"
|
33
|
+
options = { :option => "options" }
|
34
|
+
|
35
|
+
block = ::Proc.new do
|
36
|
+
stage "simple_stage" do
|
37
|
+
filter filter, options
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
stage = ::Blockenspiel.invoke(block, Batsir::DSL::StageMapping.new)
|
42
|
+
stage.should_not be_nil
|
43
|
+
stage.filters.should_not be_nil
|
44
|
+
stage.filters.should_not be_empty
|
45
|
+
declaration = stage.filter_declarations.find{|decl| decl.filter == filter }
|
46
|
+
declaration.options.should == options
|
47
|
+
end
|
48
|
+
|
49
|
+
it "can add multiple filters to the stage" do
|
32
50
|
filter1 = "Operation 1"
|
33
51
|
filter2 = "Operation 2"
|
34
52
|
|
@@ -47,7 +65,7 @@ describe Batsir::DSL::StageMapping do
|
|
47
65
|
stage.filters.should include filter2
|
48
66
|
end
|
49
67
|
|
50
|
-
it "
|
68
|
+
it "can add an inbound section to a stage" do
|
51
69
|
block = ::Proc.new do
|
52
70
|
stage "simple_stage" do
|
53
71
|
inbound do
|
@@ -62,7 +80,7 @@ describe Batsir::DSL::StageMapping do
|
|
62
80
|
stage.acceptors.should be_empty
|
63
81
|
end
|
64
82
|
|
65
|
-
it "
|
83
|
+
it "can add a transformers section to the inbound section of a stage" do
|
66
84
|
block = ::Proc.new do
|
67
85
|
stage "simple_stage" do
|
68
86
|
inbound do
|
@@ -80,7 +98,7 @@ describe Batsir::DSL::StageMapping do
|
|
80
98
|
stage.acceptor_transformers.should be_empty
|
81
99
|
end
|
82
100
|
|
83
|
-
it "
|
101
|
+
it "can add a transformer to the transformers section of the inbound section of a stage" do
|
84
102
|
transformer = :transformer
|
85
103
|
|
86
104
|
block = ::Proc.new do
|
@@ -102,7 +120,7 @@ describe Batsir::DSL::StageMapping do
|
|
102
120
|
stage.acceptor_transformers.first.transformer.should == transformer
|
103
121
|
end
|
104
122
|
|
105
|
-
it "
|
123
|
+
it "can add a transformer with options to the transformers section of the inbound section of a stage" do
|
106
124
|
transformer = :transformer
|
107
125
|
options = {:foo => :bar}
|
108
126
|
|
@@ -126,7 +144,7 @@ describe Batsir::DSL::StageMapping do
|
|
126
144
|
stage.acceptor_transformers.first.options.should == options
|
127
145
|
end
|
128
146
|
|
129
|
-
it "
|
147
|
+
it "can add multiple transformers to the transformers section of the inbound section of a stage" do
|
130
148
|
transformer1 = :transformer1
|
131
149
|
options = {:foo => :bar}
|
132
150
|
transformer2 = :transformer2
|
@@ -154,7 +172,7 @@ describe Batsir::DSL::StageMapping do
|
|
154
172
|
stage.acceptor_transformers.last.options.should == {}
|
155
173
|
end
|
156
174
|
|
157
|
-
it "
|
175
|
+
it "can add an acceptor to a stage" do
|
158
176
|
acceptor_class = :acceptor_class
|
159
177
|
|
160
178
|
block = ::Proc.new do
|
@@ -173,7 +191,7 @@ describe Batsir::DSL::StageMapping do
|
|
173
191
|
stage.acceptors[acceptor_class].first.should == {}
|
174
192
|
end
|
175
193
|
|
176
|
-
it "
|
194
|
+
it "can add an inbound section with an acceptor with options to the stage" do
|
177
195
|
acceptor_class = :acceptor_class
|
178
196
|
options = {:foo => :bar}
|
179
197
|
|
@@ -193,7 +211,7 @@ describe Batsir::DSL::StageMapping do
|
|
193
211
|
stage.acceptors[acceptor_class].first.should == options
|
194
212
|
end
|
195
213
|
|
196
|
-
it "
|
214
|
+
it "can add multiple acceptors to a stage" do
|
197
215
|
acceptor_class1 = :acceptor_class1
|
198
216
|
options = {:foo => :bar}
|
199
217
|
acceptor_class2 = :acceptor_class2
|
@@ -217,7 +235,7 @@ describe Batsir::DSL::StageMapping do
|
|
217
235
|
stage.acceptors[acceptor_class2].first.should == {}
|
218
236
|
end
|
219
237
|
|
220
|
-
it "
|
238
|
+
it "can add an outbound section without any notifiers" do
|
221
239
|
block = ::Proc.new do
|
222
240
|
stage "simple_stage" do
|
223
241
|
outbound do
|
@@ -232,7 +250,7 @@ describe Batsir::DSL::StageMapping do
|
|
232
250
|
stage.notifiers.should be_empty
|
233
251
|
end
|
234
252
|
|
235
|
-
it "
|
253
|
+
it "can add a transformers section to the outbound section of a stage" do
|
236
254
|
block = ::Proc.new do
|
237
255
|
stage "simple_stage" do
|
238
256
|
outbound do
|
@@ -250,7 +268,7 @@ describe Batsir::DSL::StageMapping do
|
|
250
268
|
stage.notifier_transformers.should be_empty
|
251
269
|
end
|
252
270
|
|
253
|
-
it "
|
271
|
+
it "can add a transformer to the transformers section of the outbound section of a stage" do
|
254
272
|
transformer = :transformer
|
255
273
|
|
256
274
|
block = ::Proc.new do
|
@@ -272,7 +290,7 @@ describe Batsir::DSL::StageMapping do
|
|
272
290
|
stage.notifier_transformers.first.transformer.should == transformer
|
273
291
|
end
|
274
292
|
|
275
|
-
it "
|
293
|
+
it "can add a transformer with options to the transformers section of the outbound section of a stage" do
|
276
294
|
transformer = :transformer
|
277
295
|
options = {:foo => :bar}
|
278
296
|
|
@@ -296,7 +314,7 @@ describe Batsir::DSL::StageMapping do
|
|
296
314
|
stage.notifier_transformers.first.options.should == options
|
297
315
|
end
|
298
316
|
|
299
|
-
it "
|
317
|
+
it "can add multiple transformers to the transformers section of the outbound section of a stage" do
|
300
318
|
transformer1 = :transformer1
|
301
319
|
options = {:foo => :bar}
|
302
320
|
transformer2 = :transformer2
|
@@ -324,7 +342,7 @@ describe Batsir::DSL::StageMapping do
|
|
324
342
|
stage.notifier_transformers.last.options.should == {}
|
325
343
|
end
|
326
344
|
|
327
|
-
it "
|
345
|
+
it "can add an outbound section to the stage" do
|
328
346
|
notification_class = :notification_class
|
329
347
|
|
330
348
|
block = ::Proc.new do
|
@@ -342,7 +360,7 @@ describe Batsir::DSL::StageMapping do
|
|
342
360
|
stage.notifiers[notification_class].first.should == {}
|
343
361
|
end
|
344
362
|
|
345
|
-
it "
|
363
|
+
it "can add an outbound section with a notifier with options to the stage" do
|
346
364
|
notification_class = :notification_class
|
347
365
|
options = {:queue => :somequeue}
|
348
366
|
|
@@ -361,7 +379,7 @@ describe Batsir::DSL::StageMapping do
|
|
361
379
|
stage.notifiers[notification_class].first.should == options
|
362
380
|
end
|
363
381
|
|
364
|
-
it "
|
382
|
+
it "can add multiple notifiers to the stage" do
|
365
383
|
notification_class1 = :notification_class1
|
366
384
|
options = {:queue => :somequeue}
|
367
385
|
notification_class2 = :notification_class2
|
@@ -385,7 +403,7 @@ describe Batsir::DSL::StageMapping do
|
|
385
403
|
stage.notifiers[notification_class2].first.should == {}
|
386
404
|
end
|
387
405
|
|
388
|
-
it "
|
406
|
+
it "can create a complete stage" do
|
389
407
|
acceptor_class1 = :acceptor_class1
|
390
408
|
options = {:foo => :bar}
|
391
409
|
acceptor_class2 = :acceptor_class2
|
@@ -1,15 +1,14 @@
|
|
1
1
|
require File.join( File.dirname(__FILE__), "..", "spec_helper" )
|
2
2
|
|
3
3
|
describe Batsir::FilterQueue do
|
4
|
-
it "
|
4
|
+
it "can add a filter to a queue" do
|
5
5
|
queue = Batsir::FilterQueue.new
|
6
6
|
queue.add("Filter")
|
7
7
|
queue.should include "Filter"
|
8
8
|
end
|
9
9
|
|
10
|
-
it "
|
10
|
+
it "does not return nil as last operation when no acceptors or notifiers are added" do
|
11
11
|
queue = Batsir::FilterQueue.new
|
12
|
-
|
13
12
|
queue.add("AnotherFilter")
|
14
13
|
ops = []
|
15
14
|
queue.each do |op|
|
@@ -18,28 +17,26 @@ describe Batsir::FilterQueue do
|
|
18
17
|
ops.last.should_not be_nil
|
19
18
|
end
|
20
19
|
|
21
|
-
it "
|
20
|
+
it "can add a notifier" do
|
22
21
|
queue = Batsir::FilterQueue.new
|
23
22
|
notifier = "Notifier"
|
24
23
|
queue.add_notifier(notifier)
|
25
24
|
queue.should include notifier
|
26
25
|
end
|
27
26
|
|
28
|
-
it "
|
27
|
+
it "can add multiple notifiers" do
|
29
28
|
queue = Batsir::FilterQueue.new
|
30
29
|
ops = []
|
31
30
|
3.times do |index|
|
32
31
|
ops << "Notifier #{index}"
|
33
32
|
queue.add_notifier("Notifier #{index}")
|
34
33
|
end
|
35
|
-
|
36
34
|
ops.each {|op| queue.should include op}
|
37
35
|
end
|
38
36
|
|
39
|
-
it "
|
40
|
-
queue = Batsir::FilterQueue.new
|
37
|
+
it "returns notifiers as the last operations" do
|
41
38
|
notifier = "Notifier"
|
42
|
-
|
39
|
+
queue = Batsir::FilterQueue.new
|
43
40
|
queue.add("SomeFilter")
|
44
41
|
queue.add_notifier(notifier)
|
45
42
|
queue.add("AnotherFilter")
|
@@ -51,23 +48,20 @@ describe Batsir::FilterQueue do
|
|
51
48
|
ops.last.should == notifier
|
52
49
|
end
|
53
50
|
|
54
|
-
it "
|
51
|
+
it "responds true to #empty? when no operations are added" do
|
55
52
|
queue = Batsir::FilterQueue.new
|
56
53
|
queue.should be_empty
|
57
54
|
end
|
58
55
|
|
59
|
-
it "
|
56
|
+
it "is not empty when a notification operation is added" do
|
60
57
|
queue = Batsir::FilterQueue.new
|
61
58
|
operation = "Notifier"
|
62
|
-
|
63
59
|
queue.add_notifier(operation)
|
64
|
-
|
65
60
|
queue.should_not be_empty
|
66
61
|
end
|
67
62
|
|
68
|
-
it "
|
63
|
+
it "is not empty when a regular operation is added" do
|
69
64
|
queue = Batsir::FilterQueue.new
|
70
|
-
|
71
65
|
queue.add("SomeFilter")
|
72
66
|
queue.should_not be_empty
|
73
67
|
end
|
data/spec/batsir/filter_spec.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
require File.join( File.dirname(__FILE__), "..", "spec_helper" )
|
2
2
|
|
3
3
|
describe Batsir::Filter do
|
4
|
-
it "
|
5
|
-
|
6
|
-
filter.should_not be_nil
|
4
|
+
it "has an #execute method" do
|
5
|
+
Batsir::Filter.instance_methods.map{|im| im.to_s}.should include "execute"
|
7
6
|
end
|
8
7
|
|
9
|
-
it "
|
10
|
-
|
8
|
+
it "throws an NotImplementedError when #execute method is not overridden" do
|
9
|
+
lambda{subject.execute("testing..1..2..3")}.should raise_error NotImplementedError
|
11
10
|
end
|
12
11
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require File.join( File.dirname(__FILE__), "..", "spec_helper" )
|
2
|
+
|
3
|
+
describe Batsir::Log do
|
4
|
+
it 'provides a convenience method for logging' do
|
5
|
+
class TestClass
|
6
|
+
include Batsir::Log
|
7
|
+
end
|
8
|
+
TestClass.instance_methods.map{|im| im.to_s}.should include 'log'
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.join( File.dirname(__FILE__), "..", "spec_helper" )
|
2
|
+
|
3
|
+
describe Batsir::Logger do
|
4
|
+
before :all do
|
5
|
+
@logger = Batsir::Logger
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'returns an object of Log4r::Logger class' do
|
9
|
+
@logger.log.should be_a Log4r::Logger
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'allows changing its settings' do
|
13
|
+
@logger.level.should_not == Log4r::DEBUG
|
14
|
+
@logger.level = Log4r::DEBUG
|
15
|
+
@logger.level.should == Log4r::DEBUG
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'can be reset' do
|
19
|
+
current_log = @logger.level
|
20
|
+
Batsir::Logger.reset
|
21
|
+
@logger.level.should_not == current_log
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'is able to use various log levels' do
|
25
|
+
@logger.level = Log4r::DEBUG
|
26
|
+
debug = @logger.debug("debug test message")
|
27
|
+
debug.should be_an Array
|
28
|
+
debug.select{|e| e.is_a?(Log4r::StdoutOutputter)}.should_not be_empty
|
29
|
+
|
30
|
+
info = @logger.info("info test message")
|
31
|
+
info.should be_an Array
|
32
|
+
info.select{|e| e.is_a?(Log4r::StdoutOutputter)}.should_not be_empty
|
33
|
+
|
34
|
+
warn = @logger.warn("warning test message")
|
35
|
+
warn.should be_an Array
|
36
|
+
warn.select{|e| e.is_a?(Log4r::StdoutOutputter)}.should_not be_empty
|
37
|
+
|
38
|
+
err = @logger.error("error test message")
|
39
|
+
err.should be_an Array
|
40
|
+
err.select{|e| e.is_a?(Log4r::StdoutOutputter)}.should_not be_empty
|
41
|
+
|
42
|
+
fatal = @logger.fatal("fatal test message")
|
43
|
+
fatal.should be_an Array
|
44
|
+
fatal.select{|e| e.is_a?(Log4r::StdoutOutputter)}.should_not be_empty
|
45
|
+
end
|
46
|
+
end
|