larva 0.7.2 → 0.7.3
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.
- checksums.yaml +13 -5
- data/CHANGELOG.md +3 -0
- data/lib/larva.rb +1 -0
- data/lib/larva/message_replayer.rb +34 -0
- data/lib/larva/version.rb +1 -1
- data/test/message_replayer_test.rb +66 -0
- metadata +12 -9
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZmE0Y2NmMmMwNTBkMDgwZTMyYzMxZjgxMTI4YWUxZjExNjJiOGIwMg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MGRmM2IyNzkwMmU1ZWY3M2E0ZmMxODkwYzlhMzBjMWE1MDhlZGU4ZQ==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NGRiYmViOWJhYTNjMDMyYWUyZmY2OTZkMDUzMmJlNzNlMTM5YWQ3NjEwNWE1
|
10
|
+
OTI1ZDE3MWVmMGU3ZTcwY2M1NjczMjMzNGFkZjUxZjQyY2UwMGNkZTMxN2Zm
|
11
|
+
ZGVhYTA3Y2NlODI5ZTdmMmZkODExM2FjNmUyMjJhYjVlNmNkMWM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
OWI4Y2EwNjVjOWM4MGI3NTAyMDVmNGIyNjY4Y2FlM2VhMTYwY2ZkM2E4MWE4
|
14
|
+
YTFiMmQwYzllOGFiYjBjMDBiM2YxNjNlYzE1N2YwNzA1MzAwMGRlYmY1NDJh
|
15
|
+
ZGIxMGI2ODI1Y2VhNmNhYWM5NjJhYmViNmI4MzRiYTBlODU1MzI=
|
data/CHANGELOG.md
CHANGED
data/lib/larva.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
module Larva
|
2
|
+
class MessageReplayer
|
3
|
+
|
4
|
+
def self.reprocess_failed(topic_name, count=1)
|
5
|
+
new(topic_name).reprocess_failed(count)
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(topic_name)
|
9
|
+
@topic_name = topic_name
|
10
|
+
end
|
11
|
+
|
12
|
+
def reprocess_failed(count)
|
13
|
+
Filum.logger.info "Reprocessing #{count} message(s) for topic: #{@topic_name}"
|
14
|
+
|
15
|
+
subscription = Propono::QueueSubscription.create(@topic_name)
|
16
|
+
original_url = subscription.queue.url
|
17
|
+
failed_url = subscription.failed_queue.url
|
18
|
+
|
19
|
+
sqs = Fog::AWS::SQS.new(Propono.aws_options)
|
20
|
+
response = sqs.receive_message( failed_url, {'MaxNumberOfMessages' => count.to_i} )
|
21
|
+
messages = response.body['Message']
|
22
|
+
if messages.empty?
|
23
|
+
raise StandardError.new "Message empty"
|
24
|
+
else
|
25
|
+
messages.each do |msg|
|
26
|
+
sqs_message = Propono::SqsMessage.new(msg)
|
27
|
+
puts "Message : #{sqs_message}"
|
28
|
+
sqs.send_message(original_url, sqs_message.to_json_with_exception(StandardError.new "Fake Exception"))
|
29
|
+
sqs.delete_message(failed_url, msg['ReceiptHandle'])
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/larva/version.rb
CHANGED
@@ -0,0 +1,66 @@
|
|
1
|
+
require File.expand_path('../test_helper', __FILE__)
|
2
|
+
|
3
|
+
module Larva
|
4
|
+
class MessageReplayerTest < Minitest::Test
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@topic_name = 'my-topic'
|
8
|
+
|
9
|
+
@original_url = 'http://mock-sqs/my-topic-queue'
|
10
|
+
@failed_url = 'http://mock-sqs/my-topic-queue-failed'
|
11
|
+
|
12
|
+
original_queue = stub(url: @original_url)
|
13
|
+
failed_queue = stub(url: @failed_url)
|
14
|
+
|
15
|
+
subscription = stub(queue: original_queue, failed_queue: failed_queue)
|
16
|
+
Propono::QueueSubscription.expects(:create).with(@topic_name).returns(subscription)
|
17
|
+
|
18
|
+
aws_options = stub()
|
19
|
+
Propono.expects(:aws_options).returns(aws_options)
|
20
|
+
|
21
|
+
@sqs = mock()
|
22
|
+
Fog::AWS::SQS.expects(:new).with(aws_options).returns(@sqs)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_reprocess_failed_when_no_messages_on_queue
|
26
|
+
stub_sqs_response = stub(body: {'Message' => []})
|
27
|
+
@sqs.expects(:receive_message).with(@failed_url, {'MaxNumberOfMessages' => 1}).returns(stub_sqs_response)
|
28
|
+
|
29
|
+
replayer = MessageReplayer.new(@topic_name)
|
30
|
+
assert_raises StandardError do
|
31
|
+
replayer.reprocess_failed(1)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_should_request_message_count_from_sqs
|
36
|
+
stub_sqs_response = stub(body: {'Message' => []})
|
37
|
+
@sqs.expects(:receive_message).with(@failed_url, {'MaxNumberOfMessages' => 7}).returns(stub_sqs_response)
|
38
|
+
|
39
|
+
replayer = MessageReplayer.new(@topic_name)
|
40
|
+
begin
|
41
|
+
replayer.reprocess_failed(7)
|
42
|
+
rescue
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_reprocess_failed_when_single_message_on_queue
|
47
|
+
receipt_handle = 'my-receipt-handle'
|
48
|
+
@message = { 'ReceiptHandle' => receipt_handle }
|
49
|
+
@message_to_replay = {}
|
50
|
+
@parsed_msg = stub(to_json_with_exception: @message_to_replay)
|
51
|
+
|
52
|
+
# Stub out the message parsing in Propono
|
53
|
+
Propono::SqsMessage.stubs(:new).with(@message).returns(@parsed_msg)
|
54
|
+
|
55
|
+
stub_sqs_response = stub(body: {'Message' => [@message]})
|
56
|
+
@sqs.stubs(:receive_message).with(@failed_url, {'MaxNumberOfMessages' => 1}).returns(stub_sqs_response)
|
57
|
+
@sqs.expects(:send_message).with(@original_url, @message_to_replay)
|
58
|
+
@sqs.expects(:delete_message).with(@failed_url, receipt_handle)
|
59
|
+
|
60
|
+
replayer = MessageReplayer.new(@topic_name)
|
61
|
+
replayer.reprocess_failed(1)
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: larva
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iHiD
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: propono
|
@@ -70,28 +70,28 @@ dependencies:
|
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - '>='
|
73
|
+
- - ! '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - '>='
|
80
|
+
- - ! '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: mocha
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - '>='
|
87
|
+
- - ! '>='
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - '>='
|
94
|
+
- - ! '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
@@ -131,6 +131,7 @@ files:
|
|
131
131
|
- lib/larva/configurator.rb
|
132
132
|
- lib/larva/daemon.rb
|
133
133
|
- lib/larva/listener.rb
|
134
|
+
- lib/larva/message_replayer.rb
|
134
135
|
- lib/larva/mocker.rb
|
135
136
|
- lib/larva/processor.rb
|
136
137
|
- lib/larva/version.rb
|
@@ -157,6 +158,7 @@ files:
|
|
157
158
|
- test/daemon_test.rb
|
158
159
|
- test/larva_test.rb
|
159
160
|
- test/listener_test.rb
|
161
|
+
- test/message_replayer_test.rb
|
160
162
|
- test/mocker_test.rb
|
161
163
|
- test/processor_test.rb
|
162
164
|
- test/test_helper.rb
|
@@ -171,17 +173,17 @@ require_paths:
|
|
171
173
|
- lib
|
172
174
|
required_ruby_version: !ruby/object:Gem::Requirement
|
173
175
|
requirements:
|
174
|
-
- - '>='
|
176
|
+
- - ! '>='
|
175
177
|
- !ruby/object:Gem::Version
|
176
178
|
version: '0'
|
177
179
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
180
|
requirements:
|
179
|
-
- - '>='
|
181
|
+
- - ! '>='
|
180
182
|
- !ruby/object:Gem::Version
|
181
183
|
version: '0'
|
182
184
|
requirements: []
|
183
185
|
rubyforge_project:
|
184
|
-
rubygems_version: 2.
|
186
|
+
rubygems_version: 2.1.9
|
185
187
|
signing_key:
|
186
188
|
specification_version: 4
|
187
189
|
summary: Some Meducation specific helper files for ur pub/sub network
|
@@ -191,6 +193,7 @@ test_files:
|
|
191
193
|
- test/daemon_test.rb
|
192
194
|
- test/larva_test.rb
|
193
195
|
- test/listener_test.rb
|
196
|
+
- test/message_replayer_test.rb
|
194
197
|
- test/mocker_test.rb
|
195
198
|
- test/processor_test.rb
|
196
199
|
- test/test_helper.rb
|