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.
@@ -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.3.7
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-02 00:00:00.000000000 Z
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