ezmq 0.3.7 → 0.4.0
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 +4 -4
- data/.coveralls.yml +2 -0
- data/.travis.yml +4 -0
- data/README.md +13 -5
- data/Rakefile +15 -6
- data/UPGRADING.md +9 -0
- data/doc/EZMQ.html +2 -2
- data/doc/EZMQ/Client.html +1 -1
- data/doc/EZMQ/Context.html +2 -3
- data/doc/EZMQ/Pair.html +1 -1
- data/doc/EZMQ/Publisher.html +1 -1
- data/doc/EZMQ/Puller.html +1 -1
- data/doc/EZMQ/Pusher.html +1 -1
- data/doc/EZMQ/Server.html +1 -1
- data/doc/EZMQ/Socket.html +21 -31
- data/doc/EZMQ/Subscriber.html +14 -24
- data/doc/_index.html +1 -1
- data/doc/file.README.html +13 -5
- data/doc/index.html +13 -5
- data/doc/top-level-namespace.html +1 -1
- data/ezmq.gemspec +5 -1
- data/lib/ezmq/context.rb +1 -1
- data/lib/ezmq/pair.rb +3 -3
- data/lib/ezmq/socket.rb +11 -15
- data/lib/ezmq/subscribe.rb +3 -8
- data/tests/ezmq.rb +28 -0
- data/tests/ezmq/context.rb +9 -0
- data/tests/ezmq/pair.rb +63 -0
- data/tests/ezmq/publish.rb +19 -0
- data/tests/ezmq/pull.rb +15 -0
- data/tests/ezmq/push.rb +12 -0
- data/tests/ezmq/reply.rb +35 -0
- data/tests/ezmq/request.rb +28 -0
- data/tests/ezmq/socket.rb +44 -0
- data/tests/ezmq/subscribe.rb +82 -0
- metadata +70 -2
data/doc/_index.html
CHANGED
@@ -188,7 +188,7 @@
|
|
188
188
|
</div>
|
189
189
|
|
190
190
|
<div id="footer">
|
191
|
-
Generated on
|
191
|
+
Generated on Tue Feb 3 09:55:04 2015 by
|
192
192
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
193
193
|
0.8.7.6 (ruby-2.0.0).
|
194
194
|
</div>
|
data/doc/file.README.html
CHANGED
@@ -84,7 +84,9 @@
|
|
84
84
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
85
85
|
|
86
86
|
<span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
87
|
-
<span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
87
|
+
<span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_message'>message</span><span class='op'>|</span>
|
88
|
+
<span class='id identifier rubyid_message'>message</span>
|
89
|
+
<span class='kw'>end</span>
|
88
90
|
</code></pre>
|
89
91
|
|
90
92
|
<h2>Synchronous Client Request</h2>
|
@@ -118,7 +120,9 @@
|
|
118
120
|
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
119
121
|
|
120
122
|
<span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='label'>encode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span><span class='comma'>,</span> <span class='label'>decode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span>
|
121
|
-
<span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
123
|
+
<span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_message'>message</span><span class='op'>|</span>
|
124
|
+
<span class='id identifier rubyid_message'>message</span>
|
125
|
+
<span class='kw'>end</span>
|
122
126
|
</code></pre>
|
123
127
|
|
124
128
|
<h2>JSON Synchronous Client Request</h2>
|
@@ -154,7 +158,9 @@
|
|
154
158
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
155
159
|
|
156
160
|
<span class='id identifier rubyid_subscriber'>subscriber</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='period'>.</span><span class='const'>Subscriber</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='label'>topic:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>foorever</span><span class='tstring_end'>'</span></span>
|
157
|
-
<span class='id identifier rubyid_subscriber'>subscriber</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
161
|
+
<span class='id identifier rubyid_subscriber'>subscriber</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_message'>message</span><span class='comma'>,</span> <span class='id identifier rubyid_topic'>topic</span><span class='op'>|</span>
|
162
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>[</span><span class='embexpr_beg'>#{</span> <span class='id identifier rubyid_topic'>topic</span> <span class='embexpr_end'>}</span><span class='tstring_content'>] </span><span class='embexpr_beg'>#{</span> <span class='id identifier rubyid_message'>message</span> <span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
163
|
+
<span class='kw'>end</span>
|
158
164
|
</code></pre>
|
159
165
|
|
160
166
|
<h2>Pipeline Work Generator</h2>
|
@@ -208,7 +214,9 @@
|
|
208
214
|
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
209
215
|
|
210
216
|
<span class='id identifier rubyid_collector'>collector</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Puller</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='label'>port:</span> <span class='int'>5556</span>
|
211
|
-
<span class='id identifier rubyid_collector'>collector</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
217
|
+
<span class='id identifier rubyid_collector'>collector</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_message'>message</span><span class='op'>|</span>
|
218
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_message'>message</span>
|
219
|
+
<span class='kw'>end</span>
|
212
220
|
</code></pre>
|
213
221
|
|
214
222
|
<h1>Operating System Notes</h1>
|
@@ -230,7 +238,7 @@ sudo aptitude install libzmq3-dev
|
|
230
238
|
</div></div>
|
231
239
|
|
232
240
|
<div id="footer">
|
233
|
-
Generated on
|
241
|
+
Generated on Tue Feb 3 09:55:04 2015 by
|
234
242
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
235
243
|
0.8.7.6 (ruby-2.0.0).
|
236
244
|
</div>
|
data/doc/index.html
CHANGED
@@ -84,7 +84,9 @@
|
|
84
84
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
85
85
|
|
86
86
|
<span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
87
|
-
<span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
87
|
+
<span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_message'>message</span><span class='op'>|</span>
|
88
|
+
<span class='id identifier rubyid_message'>message</span>
|
89
|
+
<span class='kw'>end</span>
|
88
90
|
</code></pre>
|
89
91
|
|
90
92
|
<h2>Synchronous Client Request</h2>
|
@@ -118,7 +120,9 @@
|
|
118
120
|
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
119
121
|
|
120
122
|
<span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='label'>encode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span><span class='comma'>,</span> <span class='label'>decode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span>
|
121
|
-
<span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
123
|
+
<span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_message'>message</span><span class='op'>|</span>
|
124
|
+
<span class='id identifier rubyid_message'>message</span>
|
125
|
+
<span class='kw'>end</span>
|
122
126
|
</code></pre>
|
123
127
|
|
124
128
|
<h2>JSON Synchronous Client Request</h2>
|
@@ -154,7 +158,9 @@
|
|
154
158
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
155
159
|
|
156
160
|
<span class='id identifier rubyid_subscriber'>subscriber</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='period'>.</span><span class='const'>Subscriber</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='label'>topic:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>foorever</span><span class='tstring_end'>'</span></span>
|
157
|
-
<span class='id identifier rubyid_subscriber'>subscriber</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
161
|
+
<span class='id identifier rubyid_subscriber'>subscriber</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_message'>message</span><span class='comma'>,</span> <span class='id identifier rubyid_topic'>topic</span><span class='op'>|</span>
|
162
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>[</span><span class='embexpr_beg'>#{</span> <span class='id identifier rubyid_topic'>topic</span> <span class='embexpr_end'>}</span><span class='tstring_content'>] </span><span class='embexpr_beg'>#{</span> <span class='id identifier rubyid_message'>message</span> <span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
163
|
+
<span class='kw'>end</span>
|
158
164
|
</code></pre>
|
159
165
|
|
160
166
|
<h2>Pipeline Work Generator</h2>
|
@@ -208,7 +214,9 @@
|
|
208
214
|
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
209
215
|
|
210
216
|
<span class='id identifier rubyid_collector'>collector</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Puller</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='label'>port:</span> <span class='int'>5556</span>
|
211
|
-
<span class='id identifier rubyid_collector'>collector</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
217
|
+
<span class='id identifier rubyid_collector'>collector</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_message'>message</span><span class='op'>|</span>
|
218
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_message'>message</span>
|
219
|
+
<span class='kw'>end</span>
|
212
220
|
</code></pre>
|
213
221
|
|
214
222
|
<h1>Operating System Notes</h1>
|
@@ -230,7 +238,7 @@ sudo aptitude install libzmq3-dev
|
|
230
238
|
</div></div>
|
231
239
|
|
232
240
|
<div id="footer">
|
233
|
-
Generated on
|
241
|
+
Generated on Tue Feb 3 09:55:04 2015 by
|
234
242
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
235
243
|
0.8.7.6 (ruby-2.0.0).
|
236
244
|
</div>
|
@@ -103,7 +103,7 @@
|
|
103
103
|
</div>
|
104
104
|
|
105
105
|
<div id="footer">
|
106
|
-
Generated on
|
106
|
+
Generated on Tue Feb 3 09:55:04 2015 by
|
107
107
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
108
108
|
0.8.7.6 (ruby-2.0.0).
|
109
109
|
</div>
|
data/ezmq.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |gem|
|
2
2
|
gem.name = 'ezmq'
|
3
|
-
gem.version = '0.
|
3
|
+
gem.version = '0.4.0'
|
4
4
|
gem.licenses = 'MIT'
|
5
5
|
gem.authors = ['Chris Olstrom']
|
6
6
|
gem.email = 'chris@olstrom.com'
|
@@ -24,4 +24,8 @@ Gem::Specification.new do |gem|
|
|
24
24
|
gem.add_development_dependency 'churn'
|
25
25
|
gem.add_development_dependency 'yard'
|
26
26
|
gem.add_development_dependency 'inch'
|
27
|
+
gem.add_development_dependency 'kintama'
|
28
|
+
gem.add_development_dependency 'simplecov'
|
29
|
+
gem.add_development_dependency 'coveralls'
|
30
|
+
gem.add_development_dependency 'codeclimate-test-reporter'
|
27
31
|
end
|
data/lib/ezmq/context.rb
CHANGED
@@ -10,7 +10,7 @@ module EZMQ
|
|
10
10
|
# allow multiple sockets to share access to system resources, and an
|
11
11
|
# entire context can be terminated, closing all sockets within it.
|
12
12
|
#
|
13
|
-
# Contexts are useful when dealing with the
|
13
|
+
# Contexts are useful when dealing with the :inproc transport.
|
14
14
|
# Any sockets that need to communicate in-process must share a context.
|
15
15
|
#
|
16
16
|
# @return [Context] a new instance of Context.
|
data/lib/ezmq/pair.rb
CHANGED
@@ -22,15 +22,15 @@ module EZMQ
|
|
22
22
|
end
|
23
23
|
|
24
24
|
# Returns a pair of EZMQ::Pair sockets connected to each other.
|
25
|
-
#
|
25
|
+
#
|
26
26
|
# @param [Hash] options optional parameters.
|
27
27
|
# @see EZMQ::Socket EZMQ::Socket for optional parameters.
|
28
|
-
#
|
28
|
+
#
|
29
29
|
# @return [Array<EZMQ::Pair>]
|
30
30
|
#
|
31
31
|
def self.create_linked_pair(**options)
|
32
32
|
options[:context] ||= EZMQ::Context.new
|
33
|
-
options[:
|
33
|
+
options[:transport] ||= :inproc
|
34
34
|
options[:address] ||= options[:context].context.address
|
35
35
|
%i(bind connect).map do |mode|
|
36
36
|
EZMQ::Pair.new mode, options
|
data/lib/ezmq/socket.rb
CHANGED
@@ -16,10 +16,10 @@ module EZMQ
|
|
16
16
|
# (one will be created if not provided).
|
17
17
|
# @option options [lambda] encode how to encode messages.
|
18
18
|
# @option options [lambda] decode how to decode messages.
|
19
|
-
# @option options [
|
19
|
+
# @option options [Symbol] transport (:tcp) transport for transport.
|
20
20
|
# @option options [String] address ('127.0.0.1') address for endpoint.
|
21
21
|
# @option options [Fixnum] port (5555) port for endpoint.
|
22
|
-
# @note port is ignored unless
|
22
|
+
# @note port is ignored unless transport is one of :tcp, :pgm or :epgm
|
23
23
|
#
|
24
24
|
# @return [Socket] a new instance of Socket.
|
25
25
|
#
|
@@ -29,7 +29,7 @@ module EZMQ
|
|
29
29
|
@socket = @context.socket type
|
30
30
|
@encode = options[:encode] || -> m { m }
|
31
31
|
@decode = options[:decode] || -> m { m }
|
32
|
-
endpoint = options.select { |k, _| %i(
|
32
|
+
endpoint = options.select { |k, _| %i(transport address port).include? k }
|
33
33
|
method(mode).call endpoint
|
34
34
|
end
|
35
35
|
|
@@ -76,37 +76,33 @@ module EZMQ
|
|
76
76
|
# @note This method can be called as #bind, in which case it binds to the
|
77
77
|
# specified address instead.
|
78
78
|
#
|
79
|
-
# @param [
|
79
|
+
# @param [Symbol] transport (:tcp) transport for transport.
|
80
80
|
# @param [String] address ('127.0.0.1') address for endpoint.
|
81
81
|
# @note Binding to 'localhost' is not consistent on all platforms.
|
82
82
|
# Prefer '127.0.0.1' instead.
|
83
83
|
# @param [Fixnum] port (5555) port for endpoint.
|
84
|
-
# @note port is ignored unless
|
84
|
+
# @note port is ignored unless transport is one of :tcp, :pgm or :epgm
|
85
85
|
#
|
86
86
|
# @return [Boolean] was connection successful?
|
87
87
|
#
|
88
|
-
def connect(
|
89
|
-
endpoint = "#{
|
90
|
-
endpoint
|
88
|
+
def connect(transport: :tcp, address: '127.0.0.1', port: 5555)
|
89
|
+
endpoint = "#{ transport }://#{ address }"
|
90
|
+
endpoint << ":#{ port }" if %i(tcp pgm epgm).include? transport
|
91
91
|
@socket.method(__callee__).call(endpoint) == 0
|
92
92
|
end
|
93
93
|
|
94
94
|
alias_method :bind, :connect
|
95
95
|
|
96
|
-
#
|
96
|
+
# Like receive, but doesn't stop at one message.
|
97
97
|
#
|
98
98
|
# @yield message passes the message received to the block.
|
99
99
|
# @yieldparam [String] message the message received.
|
100
100
|
#
|
101
101
|
# @return [void]
|
102
102
|
#
|
103
|
-
def listen
|
103
|
+
def listen(&block)
|
104
104
|
loop do
|
105
|
-
|
106
|
-
yield receive
|
107
|
-
else
|
108
|
-
puts receive
|
109
|
-
end
|
105
|
+
block.call receive
|
110
106
|
end
|
111
107
|
end
|
112
108
|
end
|
data/lib/ezmq/subscribe.rb
CHANGED
@@ -46,7 +46,7 @@ module EZMQ
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
#
|
49
|
+
# Like receive, but doesn't stop at one message.
|
50
50
|
#
|
51
51
|
# @yield [message, topic] passes the message body and topic to the block.
|
52
52
|
# @yieldparam [String] message the message received.
|
@@ -54,14 +54,9 @@ module EZMQ
|
|
54
54
|
#
|
55
55
|
# @return [void]
|
56
56
|
#
|
57
|
-
def listen
|
57
|
+
def listen(&block)
|
58
58
|
loop do
|
59
|
-
|
60
|
-
yield(*receive)
|
61
|
-
else
|
62
|
-
message, topic = receive
|
63
|
-
puts "#{ topic } #{ message }"
|
64
|
-
end
|
59
|
+
block.call(*receive)
|
65
60
|
end
|
66
61
|
end
|
67
62
|
|
data/tests/ezmq.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "codeclimate-test-reporter"
|
4
|
+
CodeClimate::TestReporter.start
|
5
|
+
|
6
|
+
require 'simplecov'
|
7
|
+
require 'coveralls'
|
8
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
9
|
+
SimpleCov::Formatter::HTMLFormatter,
|
10
|
+
Coveralls::SimpleCov::Formatter
|
11
|
+
]
|
12
|
+
SimpleCov.command_name 'Kintama'
|
13
|
+
SimpleCov.start { add_filter '/tests/' }
|
14
|
+
|
15
|
+
require 'kintama'
|
16
|
+
require 'timeout'
|
17
|
+
require 'json'
|
18
|
+
|
19
|
+
require_relative '../lib/ezmq'
|
20
|
+
require_relative 'ezmq/context'
|
21
|
+
require_relative 'ezmq/socket'
|
22
|
+
require_relative 'ezmq/request'
|
23
|
+
require_relative 'ezmq/reply'
|
24
|
+
require_relative 'ezmq/publish'
|
25
|
+
require_relative 'ezmq/subscribe'
|
26
|
+
require_relative 'ezmq/push'
|
27
|
+
require_relative 'ezmq/pull'
|
28
|
+
require_relative 'ezmq/pair'
|
data/tests/ezmq/pair.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
context 'Paired sockets' do
|
2
|
+
setup do
|
3
|
+
@bound, @connected = EZMQ.create_linked_pair
|
4
|
+
end
|
5
|
+
|
6
|
+
should 'initialize properly' do
|
7
|
+
assert_kind_of EZMQ::Socket, @bound
|
8
|
+
assert_kind_of EZMQ::Socket, @connected
|
9
|
+
end
|
10
|
+
|
11
|
+
should 'return the length of messages they send' do
|
12
|
+
assert_equal 7, @connected.send('message')
|
13
|
+
end
|
14
|
+
|
15
|
+
should 'return the contents of messages they receive' do
|
16
|
+
@connected.send 'message'
|
17
|
+
assert_equal 'message', @bound.receive
|
18
|
+
end
|
19
|
+
|
20
|
+
should 'yield the contents of messages they receive, if given a block' do
|
21
|
+
@bound.send 'message'
|
22
|
+
assert_equal 'message', @connected.receive { |m| m }
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'block if no message is present' do
|
26
|
+
assert_raises Timeout::Error do
|
27
|
+
Timeout.timeout(0.1) do
|
28
|
+
@connected.receive
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
should 'receive multiple messages if listening' do
|
34
|
+
3.times { @bound.send 'message' }
|
35
|
+
messages = []
|
36
|
+
begin
|
37
|
+
Timeout.timeout(0.1) do
|
38
|
+
@connected.listen do |message|
|
39
|
+
messages << message
|
40
|
+
end
|
41
|
+
end
|
42
|
+
rescue Timeout::Error
|
43
|
+
assert_equal 3, messages.size
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'Paired sockets with encoding/decoding' do
|
49
|
+
setup do
|
50
|
+
e = -> message { JSON.dump message }
|
51
|
+
d = -> message { JSON.load message }
|
52
|
+
@bound, @connected = EZMQ.create_linked_pair encoding: e, decoding: d
|
53
|
+
end
|
54
|
+
|
55
|
+
should 'return the length of messages they send' do
|
56
|
+
assert_equal 7, @connected.send('message')
|
57
|
+
end
|
58
|
+
|
59
|
+
should 'return the contents of messages they receive' do
|
60
|
+
@connected.send 'message'
|
61
|
+
assert_equal 'message', @bound.receive
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
context 'Publishers' do
|
2
|
+
setup do
|
3
|
+
@context = EZMQ::Context.new
|
4
|
+
options = { transport: :inproc, address: 'test', context: @context }
|
5
|
+
@publisher = EZMQ::Publisher.new options
|
6
|
+
@subscriber = EZMQ::Subscriber.new options
|
7
|
+
Thread.new do
|
8
|
+
socket.receive
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
should 'return the length of messages they send (without a topic)' do
|
13
|
+
assert_equal 8, @publisher.send('message')
|
14
|
+
end
|
15
|
+
|
16
|
+
should 'return the length of messages they send (with a topic)' do
|
17
|
+
assert_equal 8, @publisher.send('message')
|
18
|
+
end
|
19
|
+
end
|
data/tests/ezmq/pull.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
context 'Pullers' do
|
2
|
+
setup do
|
3
|
+
@context = EZMQ::Context.new
|
4
|
+
options = { transport: :inproc, address: 'test', context: @context }
|
5
|
+
@pusher = EZMQ::Pusher.new options
|
6
|
+
@puller = EZMQ::Puller.new options
|
7
|
+
Thread.new do
|
8
|
+
@pusher.send 'message'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
should 'return the contents of messages they receive' do
|
13
|
+
assert_equal 'message', @puller.receive
|
14
|
+
end
|
15
|
+
end
|
data/tests/ezmq/push.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
context 'Pushers' do
|
2
|
+
setup do
|
3
|
+
@context = EZMQ::Context.new
|
4
|
+
options = { transport: :inproc, address: 'test', context: @context }
|
5
|
+
@pusher = EZMQ::Pusher.new options
|
6
|
+
@puller = EZMQ::Puller.new options
|
7
|
+
end
|
8
|
+
|
9
|
+
should 'return the length of messages they send' do
|
10
|
+
assert_equal 7, @pusher.send('message')
|
11
|
+
end
|
12
|
+
end
|
data/tests/ezmq/reply.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
context 'Servers' do
|
2
|
+
setup do
|
3
|
+
@context = EZMQ::Context.new
|
4
|
+
options = { transport: :inproc, address: 'test', context: @context }
|
5
|
+
@server = EZMQ::Server.new options
|
6
|
+
@client = EZMQ::Client.new options
|
7
|
+
Thread.new do
|
8
|
+
@client.request 'message'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
should 'yield the contents of a request, if given a block' do
|
13
|
+
assert_nothing_raised do
|
14
|
+
Timeout.timeout(0.1) do
|
15
|
+
@server.listen do |request|
|
16
|
+
assert_equal request, 'message'
|
17
|
+
break
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
should 'return the length of messages they send' do
|
24
|
+
@server.receive
|
25
|
+
assert_equal 7, @server.send('message')
|
26
|
+
end
|
27
|
+
|
28
|
+
should 'return the contents of a request they receive' do
|
29
|
+
assert_equal 'message', @server.receive
|
30
|
+
end
|
31
|
+
|
32
|
+
should 'yield the contents of reply, if given a block' do
|
33
|
+
assert_equal 'message', @server.receive { |m| m }
|
34
|
+
end
|
35
|
+
end
|