ezmq 0.3.7 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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