gilmour 0.2.4

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.
@@ -0,0 +1,103 @@
1
+ class TestSubscriber < TestServiceBase
2
+ ExclusiveTimeoutTopic = 'test.exclusive_topic'
3
+ ExclusiveTimeoutReturn = 'test.exclusive_return'
4
+
5
+ MultiTimeoutTopic = 'test.multi_timeout'
6
+ MultiTimeoutReturn = 'test.multi_return'
7
+
8
+ TimeoutTopic = "test.timeout"
9
+ Topic = 'test.topic'
10
+ WildcardTopic = 'test.wildcard.*'
11
+ Simulation = 'simulate.topic'
12
+ Republish = 'test.republish'
13
+ GroupReturn = "group_return"
14
+ GroupTopic = "test.group"
15
+ ExclusiveTopic = "test.exclusive"
16
+ ExitTopic = "topic.exit"
17
+ ReListenTopic = "topic.relisten"
18
+
19
+
20
+ def self.get_callback
21
+ @callback
22
+ end
23
+
24
+ def self.callback
25
+ @callback = Proc.new
26
+ end
27
+
28
+ 2.times do |i|
29
+ listen_to ExclusiveTopic, {exclusive: true} do
30
+ publish(i, TestSubscriber::GroupReturn)
31
+ end
32
+ end
33
+
34
+ 2.times do
35
+ listen_to GroupTopic do
36
+ publish(request.body, TestSubscriber::GroupReturn)
37
+ publish("2", TestSubscriber::GroupReturn)
38
+ end
39
+ end
40
+
41
+
42
+ listen_to ExclusiveTimeoutTopic, {exclusive: true} do
43
+ data, _, _ = Gilmour::Protocol.parse_response(request.body)
44
+ logger.info "Will sleep for #{data} seconds now. But allowed timeout is 2."
45
+ sleep data
46
+ publish("2", TestSubscriber::ExclusiveTimeoutReturn)
47
+ end
48
+
49
+ 3.times do
50
+ listen_to MultiTimeoutTopic do
51
+ data, _, _ = Gilmour::Protocol.parse_response(request.body)
52
+ logger.info "Will sleep for #{data} seconds now. But allowed timeout is 2."
53
+ sleep data
54
+ publish("2", TestSubscriber::MultiTimeoutReturn)
55
+ end
56
+ end
57
+
58
+ listen_to TimeoutTopic, {exclusive: false, timeout: 2} do
59
+ data, _, _ = Gilmour::Protocol.parse_response(request.body)
60
+ logger.info "Will sleep for #{data} seconds now. But allowed timeout is 2."
61
+ sleep data
62
+ respond 'Pong!'
63
+ end
64
+
65
+ listen_to ExitTopic do
66
+ logger.info "Sleeping for 2 seconds, and then will exit"
67
+ sleep 2
68
+ exit!
69
+ end
70
+
71
+ listen_to ReListenTopic do
72
+ # In forked environment this should not work.
73
+ add_listener "test.world" do
74
+ respond "Pong!"
75
+ end
76
+ respond "Pong"
77
+ end
78
+
79
+ listen_to Topic do
80
+ if TestSubscriber.get_callback
81
+ TestSubscriber.get_callback.call(request.topic, request.body)
82
+ end
83
+ respond 'Pong!' if request.body == 'Ping!'
84
+ end
85
+
86
+ listen_to WildcardTopic do
87
+ if TestSubscriber.get_callback
88
+ TestSubscriber.get_callback.call(request.topic, request.body)
89
+ end
90
+ respond request.body, 200
91
+ end
92
+
93
+ listen_to Simulation do |topic, data|
94
+ @callback.call(topic, data)
95
+ end
96
+
97
+ listen_to Republish do
98
+ resp = self
99
+ publish(request.body, Topic) do |data, code|
100
+ resp.respond data, 200, now: true
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,10 @@
1
+ require 'amqp'
2
+ require_relative '../../lib/gilmour'
3
+
4
+ class TestServiceBase
5
+ include Gilmour::Base
6
+
7
+ def initialize(options, backend)
8
+ enable_backend(backend, options)
9
+ end
10
+ end
data/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module Gilmour
2
+ VERSION = '0.2.4'
3
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gilmour
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.4
5
+ platform: ruby
6
+ authors:
7
+ - Aditya Godbole
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec-given
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mash
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: redis
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: gilmour-em-hiredis
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: amqp
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: This gem provides a Sinatra like DSL and a simple protocol to enable
98
+ writing services that communicate over AMQP
99
+ email:
100
+ - code.aa@gdbl.me
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".gitignore"
106
+ - ".travis.yml"
107
+ - Gemfile
108
+ - LICENSE
109
+ - README.md
110
+ - examples/echoclient.rb
111
+ - examples/server.rb
112
+ - examples/thread_example.rb
113
+ - gilmour.gemspec
114
+ - lib/gilmour.rb
115
+ - lib/gilmour/backends/backend.rb
116
+ - lib/gilmour/backends/redis.rb
117
+ - lib/gilmour/base.rb
118
+ - lib/gilmour/protocol.rb
119
+ - lib/gilmour/responder.rb
120
+ - lib/gilmour/waiter.rb
121
+ - test/spec/helpers/common.rb
122
+ - test/spec/helpers/connection.rb
123
+ - test/spec/helpers/data.yml
124
+ - test/spec/test_service_base.rb
125
+ - test/spec/test_subscriber_redis.rb
126
+ - test/spec/test_subscriber_redis_forked.rb
127
+ - test/testservice/subscribers/test_subscriber.rb
128
+ - test/testservice/test_service_base.rb
129
+ - version.rb
130
+ homepage: ''
131
+ licenses: []
132
+ metadata: {}
133
+ post_install_message:
134
+ rdoc_options: []
135
+ require_paths:
136
+ - lib
137
+ required_ruby_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ required_rubygems_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ requirements: []
148
+ rubyforge_project:
149
+ rubygems_version: 2.2.2
150
+ signing_key:
151
+ specification_version: 4
152
+ summary: A Sinatra like DSL for implementing AMQP services
153
+ test_files:
154
+ - test/spec/helpers/common.rb
155
+ - test/spec/helpers/connection.rb
156
+ - test/spec/helpers/data.yml
157
+ - test/spec/test_service_base.rb
158
+ - test/spec/test_subscriber_redis.rb
159
+ - test/spec/test_subscriber_redis_forked.rb
160
+ - test/testservice/subscribers/test_subscriber.rb
161
+ - test/testservice/test_service_base.rb