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
@@ -0,0 +1,28 @@
|
|
1
|
+
context 'Clients' 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
|
+
@server.listen
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
should 'return the length of messages they send' do
|
13
|
+
assert_equal 7, @client.send('message')
|
14
|
+
end
|
15
|
+
|
16
|
+
should 'return the contents of messages they receive' do
|
17
|
+
@client.send 'message'
|
18
|
+
assert_equal 'message', @client.receive
|
19
|
+
end
|
20
|
+
|
21
|
+
should 'return the reply from a request they send' do
|
22
|
+
assert_equal 'message', @client.request('message')
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'yield the contents of reply, if given a block' do
|
26
|
+
assert_equal 'message', @client.request('message') { |m| m }
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
%i(inproc ipc tcp pgm epgm).each do |transport|
|
2
|
+
%i(bind connect).each do |mode|
|
3
|
+
context "Sockets with #{ transport } transport in #{ mode } mode" do
|
4
|
+
setup do
|
5
|
+
options = { transport: transport }
|
6
|
+
opposing_mode = %i(bind connect).reject { |m| m == mode }.first
|
7
|
+
@unimportant = EZMQ::Socket.new opposing_mode, ZMQ::PAIR, options
|
8
|
+
@socket = EZMQ::Socket.new mode, ZMQ::PAIR, options
|
9
|
+
end
|
10
|
+
|
11
|
+
should 'instantiate properly' do
|
12
|
+
assert_kind_of EZMQ::Socket, @socket
|
13
|
+
end
|
14
|
+
|
15
|
+
should 'expose their contexts' do
|
16
|
+
assert_kind_of EZMQ::Context, @socket.context
|
17
|
+
end
|
18
|
+
|
19
|
+
should 'have a bind method' do
|
20
|
+
assert @socket.respond_to? :bind
|
21
|
+
end
|
22
|
+
|
23
|
+
should 'have a connect method' do
|
24
|
+
assert @socket.respond_to? :connect
|
25
|
+
end
|
26
|
+
|
27
|
+
should 'have a send method' do
|
28
|
+
assert @socket.respond_to? :send
|
29
|
+
end
|
30
|
+
|
31
|
+
should 'have a receive method' do
|
32
|
+
assert @socket.respond_to? :receive
|
33
|
+
end
|
34
|
+
|
35
|
+
should 'have an encode method' do
|
36
|
+
assert @socket.respond_to? :encode
|
37
|
+
end
|
38
|
+
|
39
|
+
should 'have a decode method' do
|
40
|
+
assert @socket.respond_to? :decode
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
context 'Subscribers' 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
|
+
loop do
|
9
|
+
@publisher.send 'message'
|
10
|
+
@publisher.send 'message', topic: 'bad'
|
11
|
+
@publisher.send 'message', topic: 'good'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
should 'receive messages' do
|
17
|
+
messages, topics = [], []
|
18
|
+
@subscriber.subscribe ''
|
19
|
+
1000.times do
|
20
|
+
message, topic = @subscriber.receive
|
21
|
+
messages << message
|
22
|
+
topics << topic
|
23
|
+
end
|
24
|
+
assert_equal 1000, messages.select { |m| m == 'message' }.size
|
25
|
+
assert topics.include? ''
|
26
|
+
assert topics.include? 'bad'
|
27
|
+
assert topics.include? 'good'
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'subscribe to a topic' do
|
31
|
+
assert @subscriber.subscribe 'good'
|
32
|
+
end
|
33
|
+
|
34
|
+
should 'unsubscribe from a topic' do
|
35
|
+
assert @subscriber.subscribe 'bad'
|
36
|
+
assert @subscriber.subscribe 'good'
|
37
|
+
assert @subscriber.unsubscribe 'bad'
|
38
|
+
topics = []
|
39
|
+
1000.times do
|
40
|
+
_, topic = @subscriber.receive
|
41
|
+
topics << topic
|
42
|
+
end
|
43
|
+
assert_equal false, topics.include?('bad')
|
44
|
+
end
|
45
|
+
|
46
|
+
should 'yield the message body and topic, if given a block' do
|
47
|
+
@subscriber.subscribe 'good'
|
48
|
+
@subscriber.receive do |message, topic|
|
49
|
+
assert_equal 'good', topic
|
50
|
+
assert_equal 'message', message
|
51
|
+
break
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
should 'yield the message body and topic, if given a block and listening' do
|
56
|
+
@subscriber.subscribe 'good'
|
57
|
+
assert_nothing_raised do
|
58
|
+
Timeout.timeout(0.1) do
|
59
|
+
@subscriber.listen do |message, topic|
|
60
|
+
assert_equal 'good', topic
|
61
|
+
assert_equal 'message', message
|
62
|
+
break
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
should 'not receive messages with topics other than those subscribed to' do
|
69
|
+
topics = []
|
70
|
+
@subscriber.subscribe 'good'
|
71
|
+
1000.times do
|
72
|
+
_, topic = @subscriber.receive
|
73
|
+
topics << topic
|
74
|
+
end
|
75
|
+
assert topics.include? 'good'
|
76
|
+
assert_equal false, topics.include?('bad')
|
77
|
+
end
|
78
|
+
|
79
|
+
should 'return the contents of a message with a subscribed topic' do
|
80
|
+
# assert
|
81
|
+
end
|
82
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ezmq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Olstrom
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi-rzmq
|
@@ -150,6 +150,62 @@ dependencies:
|
|
150
150
|
- - '>='
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: kintama
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: simplecov
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - '>='
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: coveralls
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - '>='
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - '>='
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: codeclimate-test-reporter
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - '>='
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - '>='
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
153
209
|
description: Syntactic sugar around FFI bindings for ZMQ, to stop C from seeping into
|
154
210
|
your Ruby.
|
155
211
|
email: chris@olstrom.com
|
@@ -157,7 +213,9 @@ executables: []
|
|
157
213
|
extensions: []
|
158
214
|
extra_rdoc_files: []
|
159
215
|
files:
|
216
|
+
- .coveralls.yml
|
160
217
|
- .gitignore
|
218
|
+
- .travis.yml
|
161
219
|
- Gemfile
|
162
220
|
- LICENSE
|
163
221
|
- README.md
|
@@ -198,6 +256,16 @@ files:
|
|
198
256
|
- lib/ezmq/request.rb
|
199
257
|
- lib/ezmq/socket.rb
|
200
258
|
- lib/ezmq/subscribe.rb
|
259
|
+
- tests/ezmq.rb
|
260
|
+
- tests/ezmq/context.rb
|
261
|
+
- tests/ezmq/pair.rb
|
262
|
+
- tests/ezmq/publish.rb
|
263
|
+
- tests/ezmq/pull.rb
|
264
|
+
- tests/ezmq/push.rb
|
265
|
+
- tests/ezmq/reply.rb
|
266
|
+
- tests/ezmq/request.rb
|
267
|
+
- tests/ezmq/socket.rb
|
268
|
+
- tests/ezmq/subscribe.rb
|
201
269
|
homepage: http://colstrom.github.io/ezmq/
|
202
270
|
licenses:
|
203
271
|
- MIT
|