propono 1.1.3 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/propono/components/queue_subscription.rb +11 -26
- data/lib/propono/version.rb +1 -1
- data/test/components/queue_subscription_test.rb +32 -7
- data/test/integration/slow_queue_test.rb +3 -3
- data/test/integration/sns_to_sqs_test.rb +10 -10
- data/test/integration/tcp_to_sqs_test.rb +2 -2
- data/test/integration/udp_proxy_test.rb +1 -1
- data/test/integration/udp_to_sqs_test.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19a7aae1334abb194ea3fe2ca03a3b7d6641a9b0
|
4
|
+
data.tar.gz: 181145ff80cc31864884a2ed6f6ca3b2c8757f24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43c3d394220ac21226e33245ea52e10e07cb093a367c4747c750421c6c99f8e7267692f8470f1e5b885f7eef60571f9d0e6af1f355ea8e62773f3d8583684df3
|
7
|
+
data.tar.gz: f69c5512d119490b0ef13bd2fd8b219166f660f724cd6539a1176e987ea8d821b8310277700868ed6dff2e42429f252c802eea166535cb8a9af9ecf582248cbd
|
data/CHANGELOG.md
CHANGED
@@ -26,50 +26,35 @@ module Propono
|
|
26
26
|
@failed_queue = QueueCreator.find_or_create("#{queue_name}-failed")
|
27
27
|
@corrupt_queue = QueueCreator.find_or_create("#{queue_name}-corrupt")
|
28
28
|
sns.subscribe(@topic.arn, @queue.arn, 'sqs')
|
29
|
-
sqs.set_queue_attributes(@queue.url, "Policy", generate_policy)
|
29
|
+
sqs.set_queue_attributes(@queue.url, "Policy", generate_policy(@queue, @topic))
|
30
30
|
|
31
31
|
@slow_queue = QueueCreator.find_or_create("#{queue_name}-slow")
|
32
32
|
@slow_topic = TopicCreator.find_or_create(@suffixed_slow_topic_id)
|
33
33
|
sns.subscribe(@slow_topic.arn, @slow_queue.arn, 'sqs')
|
34
|
-
sqs.set_queue_attributes(@slow_queue.url, "Policy",
|
34
|
+
sqs.set_queue_attributes(@slow_queue.url, "Policy", generate_policy(@slow_queue, @slow_topic))
|
35
35
|
end
|
36
36
|
|
37
37
|
private
|
38
38
|
|
39
|
-
def generate_policy
|
39
|
+
def generate_policy(queue, topic)
|
40
40
|
<<-EOS
|
41
41
|
{
|
42
42
|
"Version": "2008-10-17",
|
43
|
-
"Id": "#{
|
43
|
+
"Id": "#{queue.arn}/SQSDefaultPolicy",
|
44
44
|
"Statement": [
|
45
45
|
{
|
46
|
-
"Sid": "#{
|
46
|
+
"Sid": "#{queue.arn}-Sid",
|
47
47
|
"Effect": "Allow",
|
48
48
|
"Principal": {
|
49
49
|
"AWS": "*"
|
50
50
|
},
|
51
51
|
"Action": "SQS:*",
|
52
|
-
"Resource": "#{
|
53
|
-
|
54
|
-
|
55
|
-
}
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
def generate_slow_policy
|
60
|
-
<<-EOS
|
61
|
-
{
|
62
|
-
"Version": "2008-10-17",
|
63
|
-
"Id": "#{@slow_queue.arn}/SQSDefaultPolicy",
|
64
|
-
"Statement": [
|
65
|
-
{
|
66
|
-
"Sid": "#{@slow_queue.arn}-Sid",
|
67
|
-
"Effect": "Allow",
|
68
|
-
"Principal": {
|
69
|
-
"AWS": "*"
|
70
|
-
},
|
71
|
-
"Action": "SQS:*",
|
72
|
-
"Resource": "#{@slow_queue.arn}"
|
52
|
+
"Resource": "#{queue.arn}",
|
53
|
+
"Condition": {
|
54
|
+
"StringEquals": {
|
55
|
+
"aws:SourceArn": "#{topic.arn}"
|
56
|
+
}
|
57
|
+
}
|
73
58
|
}
|
74
59
|
]
|
75
60
|
}
|
data/lib/propono/version.rb
CHANGED
@@ -30,7 +30,7 @@ module Propono
|
|
30
30
|
TopicCreator.stubs(find_or_create: Topic.new("1123"))
|
31
31
|
|
32
32
|
queue_name = subscription.send(:queue_name)
|
33
|
-
|
33
|
+
|
34
34
|
sqs = mock()
|
35
35
|
sqs.expects(:create_queue).with(queue_name).returns(mock(body: {'QueueUrl' => Fog::AWS::SQS::Mock::QueueUrl}))
|
36
36
|
sqs.expects(:create_queue).with(queue_name + '-failed').returns(mock(body: {'QueueUrl' => Fog::AWS::SQS::Mock::QueueUrl}))
|
@@ -75,18 +75,15 @@ module Propono
|
|
75
75
|
def test_create_calls_set_queue_attributes
|
76
76
|
arn = "arn123"
|
77
77
|
policy = "{foobar: 123}"
|
78
|
-
slow_policy = "{foobar: 456}"
|
79
78
|
|
80
79
|
TopicCreator.stubs(find_or_create: Topic.new(arn))
|
81
80
|
QueueCreator.stubs(find_or_create: Queue.new(Fog::AWS::SQS::Mock::QueueUrl))
|
82
81
|
|
83
82
|
sqs = mock()
|
84
|
-
sqs.expects(:set_queue_attributes).with(Fog::AWS::SQS::Mock::QueueUrl, "Policy", policy)
|
85
|
-
sqs.expects(:set_queue_attributes).with(Fog::AWS::SQS::Mock::QueueUrl, "Policy", slow_policy)
|
83
|
+
sqs.expects(:set_queue_attributes).with(Fog::AWS::SQS::Mock::QueueUrl, "Policy", policy).twice
|
86
84
|
subscription = QueueSubscription.new("Some topic")
|
87
85
|
subscription.stubs(sqs: sqs)
|
88
86
|
subscription.stubs(generate_policy: policy)
|
89
|
-
subscription.stubs(generate_slow_policy: slow_policy)
|
90
87
|
subscription.create
|
91
88
|
end
|
92
89
|
|
@@ -102,7 +99,7 @@ module Propono
|
|
102
99
|
QueueCreator.expects(:find_or_create).with('MyApp-SomeTopic-suf-slow').returns(slow_queue)
|
103
100
|
subscription = QueueSubscription.new("SomeTopic")
|
104
101
|
subscription.create
|
105
|
-
|
102
|
+
|
106
103
|
assert_equal queue, subscription.queue
|
107
104
|
assert_equal failed_queue, subscription.failed_queue
|
108
105
|
assert_equal corrupt_queue, subscription.corrupt_queue
|
@@ -116,7 +113,35 @@ module Propono
|
|
116
113
|
end
|
117
114
|
|
118
115
|
def test_generate_policy
|
119
|
-
|
116
|
+
queue_arn = "queue-arn"
|
117
|
+
topic_arn = "topic-arn"
|
118
|
+
queue = mock().tap {|m|m.stubs(arn: queue_arn)}
|
119
|
+
topic = mock().tap {|m|m.stubs(arn: topic_arn)}
|
120
|
+
|
121
|
+
policy = <<-EOS
|
122
|
+
{
|
123
|
+
"Version": "2008-10-17",
|
124
|
+
"Id": "#{queue_arn}/SQSDefaultPolicy",
|
125
|
+
"Statement": [
|
126
|
+
{
|
127
|
+
"Sid": "#{queue_arn}-Sid",
|
128
|
+
"Effect": "Allow",
|
129
|
+
"Principal": {
|
130
|
+
"AWS": "*"
|
131
|
+
},
|
132
|
+
"Action": "SQS:*",
|
133
|
+
"Resource": "#{queue_arn}",
|
134
|
+
"Condition": {
|
135
|
+
"StringEquals": {
|
136
|
+
"aws:SourceArn": "#{topic_arn}"
|
137
|
+
}
|
138
|
+
}
|
139
|
+
}
|
140
|
+
]
|
141
|
+
}
|
142
|
+
EOS
|
143
|
+
|
144
|
+
assert_equal policy, QueueSubscription.new(nil).send(:generate_policy, queue, topic)
|
120
145
|
end
|
121
146
|
end
|
122
147
|
end
|
@@ -3,8 +3,8 @@ require File.expand_path('../integration_test', __FILE__)
|
|
3
3
|
module Propono
|
4
4
|
class SlowQueueTest < IntegrationTest
|
5
5
|
def test_slow_messages_are_received
|
6
|
-
topic = "slow-
|
7
|
-
slow_topic = "slow-
|
6
|
+
topic = "propono-tests-slow-queue-topic"
|
7
|
+
slow_topic = "propono-tests-slow-queue-topic-slow"
|
8
8
|
text = "This is my message #{DateTime.now} #{rand()}"
|
9
9
|
slow_text = "This is my slow message #{DateTime.now} #{rand()}"
|
10
10
|
flunks = []
|
@@ -42,6 +42,6 @@ module Propono
|
|
42
42
|
flunk(flunks.join("\n")) unless flunks.empty?
|
43
43
|
ensure
|
44
44
|
# thread.terminate
|
45
|
-
end
|
45
|
+
end
|
46
46
|
end
|
47
47
|
end
|
@@ -3,7 +3,7 @@ require File.expand_path('../integration_test', __FILE__)
|
|
3
3
|
module Propono
|
4
4
|
class SnsToSqsTest < IntegrationTest
|
5
5
|
def test_the_message_gets_there
|
6
|
-
topic = "
|
6
|
+
topic = "propono-tests-sns-to-sqs-topic"
|
7
7
|
text = "This is my message #{DateTime.now} #{rand()}"
|
8
8
|
flunks = []
|
9
9
|
message_received = false
|
@@ -38,18 +38,18 @@ module Propono
|
|
38
38
|
ensure
|
39
39
|
thread.terminate
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
=begin
|
43
|
-
|
43
|
+
|
44
44
|
|
45
45
|
def test_failed_messge_is_transferred_to_failed_channel
|
46
46
|
topic = "test-topic"
|
47
47
|
text = "This is my message #{DateTime.now} #{rand()}"
|
48
48
|
flunks = []
|
49
49
|
message_received = false
|
50
|
-
|
50
|
+
|
51
51
|
Propono.subscribe_by_queue(topic)
|
52
|
-
|
52
|
+
|
53
53
|
thread = Thread.new do
|
54
54
|
begin
|
55
55
|
Propono.listen_to_queue(topic) do |message, context|
|
@@ -61,7 +61,7 @@ module Propono
|
|
61
61
|
thread.terminate
|
62
62
|
end
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
failure_listener = Thread.new do
|
66
66
|
begin
|
67
67
|
Propono.listen_to_queue(topic, channel: :failed) do |message, context|
|
@@ -75,16 +75,16 @@ module Propono
|
|
75
75
|
thread.terminate
|
76
76
|
end
|
77
77
|
end
|
78
|
-
|
78
|
+
|
79
79
|
Thread.new do
|
80
80
|
sleep(1) while !message_received
|
81
81
|
sleep(5) # Make sure all the message deletion clear up in the thread has happened
|
82
82
|
thread.terminate
|
83
83
|
failure_listener.terminate
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
sleep(1) # Make sure the listener has started
|
87
|
-
|
87
|
+
|
88
88
|
Propono.publish(topic, text)
|
89
89
|
flunks << "Test Timeout" unless wait_for_thread(thread)
|
90
90
|
flunk(flunks.join("\n")) unless flunks.empty?
|
@@ -93,6 +93,6 @@ module Propono
|
|
93
93
|
end
|
94
94
|
|
95
95
|
=end
|
96
|
-
|
96
|
+
|
97
97
|
end
|
98
98
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require File.expand_path('../integration_test', __FILE__)
|
2
2
|
|
3
3
|
module Propono
|
4
|
-
class
|
4
|
+
class TcpToSqsTest < IntegrationTest
|
5
5
|
def test_the_message_gets_there
|
6
|
-
topic = "
|
6
|
+
topic = "propono-tests-tcp-to-sqs-topic"
|
7
7
|
message = "This is my message #{DateTime.now} #{rand()}"
|
8
8
|
flunks = []
|
9
9
|
message_received = false
|
@@ -3,7 +3,7 @@ require File.expand_path('../integration_test', __FILE__)
|
|
3
3
|
module Propono
|
4
4
|
class UdpProxyTest < IntegrationTest
|
5
5
|
def test_the_message_gets_there
|
6
|
-
topic = "
|
6
|
+
topic = "propono-tests-udp-proxy-topic"
|
7
7
|
text = "This is my message #{DateTime.now} #{rand()}"
|
8
8
|
flunks = []
|
9
9
|
message_received = false
|
@@ -3,7 +3,7 @@ require File.expand_path('../integration_test', __FILE__)
|
|
3
3
|
module Propono
|
4
4
|
class UdpToSqsTest < IntegrationTest
|
5
5
|
def test_the_message_gets_there
|
6
|
-
topic = "
|
6
|
+
topic = "propono-tests-udp-to-sqs-topic"
|
7
7
|
message = "This is my message #{DateTime.now} #{rand()}"
|
8
8
|
flunks = []
|
9
9
|
message_received = false
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: propono
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MalcyL
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-05-
|
12
|
+
date: 2014-05-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog
|