message_bus 2.0.5 → 2.0.6
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.
Potentially problematic release.
This version of message_bus might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG +9 -1
- data/Gemfile +4 -0
- data/lib/message_bus.rb +4 -1
- data/lib/message_bus/backends/redis.rb +3 -2
- data/lib/message_bus/rack/middleware.rb +1 -1
- data/lib/message_bus/version.rb +1 -1
- data/spec/lib/message_bus/rack/middleware_spec.rb +56 -58
- data/spec/lib/message_bus_spec.rb +35 -32
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e3233d29ea9404805798a4b1a4caddf2a50477c
|
4
|
+
data.tar.gz: f77eed645f31f2182dc28d94fdf80dc8746ffffd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a1b8e23c41ea624f21012e8c9f83be06217d1cfb103dd5c13417aff52bf49fab6dde813185f5186b8bdd226267bd5ac2aec859cdd49c35323e35f8c51a8af57
|
7
|
+
data.tar.gz: b1285bcba99c5263eba003781a8423245d198edb88bf2c1265d895a771d6b75bc1da89e119cb973d08a58fa4c98726d9bb75ed425c8b28f089c5fdbed70db8f1
|
data/CHANGELOG
CHANGED
@@ -1,6 +1,14 @@
|
|
1
|
+
29-09-2017
|
2
|
+
|
3
|
+
- Version 2.0.6
|
4
|
+
|
5
|
+
- Fix: correct after_fork so it correctly disconnnects redis
|
6
|
+
- Fix: correct message_bus #destroy used in tests to clean up spec (deadlock)
|
7
|
+
- Fix: deliver backlog unconditionally when polling (and not long polling)
|
8
|
+
|
1
9
|
16-08-2017
|
2
10
|
|
3
|
-
- Version 2.0.
|
11
|
+
- Version 2.0.5
|
4
12
|
|
5
13
|
- Quick fix, build on earlier version of Ruby cause https://github.com/rubygems/rubygems/issues/1448 is still open
|
6
14
|
|
data/Gemfile
CHANGED
data/lib/message_bus.rb
CHANGED
@@ -313,10 +313,13 @@ module MessageBus::Implementation
|
|
313
313
|
end
|
314
314
|
end
|
315
315
|
|
316
|
+
# mostly used in tests to detroy entire bus
|
316
317
|
def destroy
|
318
|
+
return if @destroyed
|
319
|
+
reliable_pub_sub.global_unsubscribe
|
320
|
+
|
317
321
|
@mutex.synchronize do
|
318
322
|
@subscriptions ||= {}
|
319
|
-
reliable_pub_sub.global_unsubscribe
|
320
323
|
@destroyed = true
|
321
324
|
end
|
322
325
|
@subscriber_thread.join if @subscriber_thread
|
@@ -45,7 +45,7 @@ class MessageBus::Redis::ReliablePubSub
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def after_fork
|
48
|
-
pub_redis.
|
48
|
+
pub_redis.disconnect!
|
49
49
|
end
|
50
50
|
|
51
51
|
def redis_channel_name
|
@@ -270,7 +270,8 @@ class MessageBus::Redis::ReliablePubSub
|
|
270
270
|
|
271
271
|
def global_unsubscribe
|
272
272
|
if @redis_global
|
273
|
-
|
273
|
+
# new connection to avoid deadlock
|
274
|
+
new_redis_connection.publish(redis_channel_name, UNSUB_MESSAGE)
|
274
275
|
@redis_global.disconnect
|
275
276
|
@redis_global = nil
|
276
277
|
end
|
data/lib/message_bus/version.rb
CHANGED
@@ -6,7 +6,7 @@ require 'rack/test'
|
|
6
6
|
|
7
7
|
describe MessageBus::Rack::Middleware do
|
8
8
|
include Rack::Test::Methods
|
9
|
-
let(:extra_middleware){nil}
|
9
|
+
let(:extra_middleware) { nil }
|
10
10
|
|
11
11
|
before do
|
12
12
|
bus = @bus = MessageBus::Instance.new
|
@@ -15,10 +15,10 @@ describe MessageBus::Rack::Middleware do
|
|
15
15
|
|
16
16
|
e_m = extra_middleware
|
17
17
|
builder = Rack::Builder.new {
|
18
|
-
use FakeAsyncMiddleware, :
|
18
|
+
use FakeAsyncMiddleware, message_bus: bus
|
19
19
|
use e_m if e_m
|
20
|
-
use MessageBus::Rack::Middleware, :
|
21
|
-
run lambda {|env| [500, {'Content-Type' => 'text/html'}, 'should not be called' ]}
|
20
|
+
use MessageBus::Rack::Middleware, message_bus: bus
|
21
|
+
run lambda { |env| [500, { 'Content-Type' => 'text/html' }, 'should not be called' ] }
|
22
22
|
}
|
23
23
|
|
24
24
|
@async_middleware = builder.to_app
|
@@ -63,11 +63,11 @@ describe MessageBus::Rack::Middleware do
|
|
63
63
|
bus = @bus
|
64
64
|
|
65
65
|
@bus.extra_response_headers_lookup do |env|
|
66
|
-
{"FOO" => "BAR"}
|
66
|
+
{ "FOO" => "BAR" }
|
67
67
|
end
|
68
68
|
|
69
69
|
Thread.new do
|
70
|
-
wait_for(2000) {middleware.in_async?}
|
70
|
+
wait_for(2000) { middleware.in_async? }
|
71
71
|
bus.publish "/foo", "םוֹלשָׁ"
|
72
72
|
end
|
73
73
|
|
@@ -119,13 +119,13 @@ describe MessageBus::Rack::Middleware do
|
|
119
119
|
end
|
120
120
|
|
121
121
|
it "should get a 200 with html for an authorized user" do
|
122
|
-
def @bus.is_admin_lookup; proc{|_| true} end
|
122
|
+
def @bus.is_admin_lookup; proc { |_| true } end
|
123
123
|
get "/message-bus/_diagnostics"
|
124
124
|
last_response.status.must_equal 200
|
125
125
|
end
|
126
126
|
|
127
127
|
it "should get the script it asks for" do
|
128
|
-
def @bus.is_admin_lookup; proc{|_| true} end
|
128
|
+
def @bus.is_admin_lookup; proc { |_| true } end
|
129
129
|
get "/message-bus/_diagnostics/assets/message-bus.js"
|
130
130
|
last_response.status.must_equal 200
|
131
131
|
last_response.content_type.must_equal "text/javascript;"
|
@@ -140,16 +140,15 @@ describe MessageBus::Rack::Middleware do
|
|
140
140
|
|
141
141
|
it "should include access control headers" do
|
142
142
|
@bus.extra_response_headers_lookup do |env|
|
143
|
-
{"FOO" => "BAR"}
|
143
|
+
{ "FOO" => "BAR" }
|
144
144
|
end
|
145
145
|
|
146
146
|
client_id = "ABCD"
|
147
147
|
|
148
148
|
# client always keeps a list of channels with last message id they got on each
|
149
|
-
post "/message-bus/#{client_id}",
|
149
|
+
post "/message-bus/#{client_id}",
|
150
150
|
'/foo' => nil,
|
151
151
|
'/bar' => nil
|
152
|
-
}
|
153
152
|
|
154
153
|
last_response.headers["FOO"].must_equal "BAR"
|
155
154
|
end
|
@@ -158,39 +157,47 @@ describe MessageBus::Rack::Middleware do
|
|
158
157
|
client_id = "ABCD"
|
159
158
|
|
160
159
|
# client always keeps a list of channels with last message id they got on each
|
161
|
-
post "/message-bus/#{client_id}",
|
160
|
+
post "/message-bus/#{client_id}",
|
162
161
|
'/foo' => nil,
|
163
162
|
'/bar' => nil
|
164
|
-
|
163
|
+
|
165
164
|
last_response.ok?.must_equal true
|
166
165
|
end
|
167
166
|
|
168
167
|
it "should correctly understand that -1 means stuff from now onwards" do
|
169
168
|
|
170
|
-
|
169
|
+
# even if allow chunked
|
170
|
+
@bus.chunked_encoding_enabled = true
|
171
|
+
|
172
|
+
@bus.publish('/foo', 'bar')
|
173
|
+
@bus.publish('/baz', 'test')
|
174
|
+
@bus.publish('/boom', 'bang')
|
175
|
+
|
176
|
+
post "/message-bus/ABCD",
|
177
|
+
'/foo' => -1,
|
178
|
+
'/baz' => @bus.last_id('/baz') + 1,
|
179
|
+
'/boom' => -1
|
171
180
|
|
172
|
-
post "/message-bus/ABCD", {
|
173
|
-
'/foo' => -1
|
174
|
-
}
|
175
181
|
last_response.ok?.must_equal true
|
176
182
|
parsed = JSON.parse(last_response.body)
|
183
|
+
|
177
184
|
parsed.length.must_equal 1
|
178
185
|
parsed[0]["channel"].must_equal "/__status"
|
179
|
-
parsed[0]["data"]["/foo"].must_equal@bus.last_id("/foo")
|
186
|
+
parsed[0]["data"]["/foo"].must_equal @bus.last_id("/foo")
|
187
|
+
parsed[0]["data"]["/boom"].must_equal @bus.last_id("/boom")
|
180
188
|
|
181
189
|
end
|
182
190
|
|
183
191
|
it "should respond with the data if messages exist in the backlog" do
|
184
|
-
id
|
192
|
+
id = @bus.last_id('/foo')
|
185
193
|
|
186
194
|
@bus.publish("/foo", "barbs")
|
187
195
|
@bus.publish("/foo", "borbs")
|
188
196
|
|
189
197
|
client_id = "ABCD"
|
190
|
-
post "/message-bus/#{client_id}",
|
198
|
+
post "/message-bus/#{client_id}",
|
191
199
|
'/foo' => id,
|
192
200
|
'/bar' => nil
|
193
|
-
}
|
194
201
|
|
195
202
|
parsed = JSON.parse(last_response.body)
|
196
203
|
parsed.length.must_equal 2
|
@@ -202,16 +209,15 @@ describe MessageBus::Rack::Middleware do
|
|
202
209
|
|
203
210
|
seq = 0
|
204
211
|
@bus.site_id_lookup do
|
205
|
-
(seq+=1).to_s
|
212
|
+
(seq += 1).to_s
|
206
213
|
end
|
207
214
|
|
208
215
|
# published on channel 1
|
209
216
|
msg = @bus.publish("/foo", "test")
|
210
217
|
|
211
218
|
# subscribed on channel 2
|
212
|
-
post "/message-bus/ABCD",
|
213
|
-
'/foo' => (msg-1)
|
214
|
-
}
|
219
|
+
post "/message-bus/ABCD",
|
220
|
+
'/foo' => (msg - 1)
|
215
221
|
|
216
222
|
parsed = JSON.parse(last_response.body)
|
217
223
|
parsed.length.must_equal 0
|
@@ -222,14 +228,13 @@ describe MessageBus::Rack::Middleware do
|
|
222
228
|
|
223
229
|
seq = 0
|
224
230
|
@bus.site_id_lookup do
|
225
|
-
(seq+=1).to_s
|
231
|
+
(seq += 1).to_s
|
226
232
|
end
|
227
233
|
|
228
234
|
msg = @bus.publish("/global/foo", "test")
|
229
235
|
|
230
|
-
post "/message-bus/ABCD",
|
231
|
-
'/global/foo' => (msg-1)
|
232
|
-
}
|
236
|
+
post "/message-bus/ABCD",
|
237
|
+
'/global/foo' => (msg - 1)
|
233
238
|
|
234
239
|
parsed = JSON.parse(last_response.body)
|
235
240
|
parsed.length.must_equal 1
|
@@ -237,27 +242,25 @@ describe MessageBus::Rack::Middleware do
|
|
237
242
|
|
238
243
|
it "should not get consumed messages" do
|
239
244
|
@bus.publish("/foo", "barbs")
|
240
|
-
id
|
245
|
+
id = @bus.last_id('/foo')
|
241
246
|
|
242
247
|
client_id = "ABCD"
|
243
|
-
post "/message-bus/#{client_id}",
|
248
|
+
post "/message-bus/#{client_id}",
|
244
249
|
'/foo' => id
|
245
|
-
}
|
246
250
|
|
247
251
|
parsed = JSON.parse(last_response.body)
|
248
252
|
parsed.length.must_equal 0
|
249
253
|
end
|
250
254
|
|
251
255
|
it "should filter by user correctly" do
|
252
|
-
id
|
256
|
+
id = @bus.publish("/foo", "test", user_ids: [1])
|
253
257
|
@bus.user_id_lookup do |env|
|
254
258
|
0
|
255
259
|
end
|
256
260
|
|
257
261
|
client_id = "ABCD"
|
258
|
-
post "/message-bus/#{client_id}",
|
262
|
+
post "/message-bus/#{client_id}",
|
259
263
|
'/foo' => id - 1
|
260
|
-
}
|
261
264
|
|
262
265
|
parsed = JSON.parse(last_response.body)
|
263
266
|
parsed.length.must_equal 1
|
@@ -271,24 +274,22 @@ describe MessageBus::Rack::Middleware do
|
|
271
274
|
1
|
272
275
|
end
|
273
276
|
|
274
|
-
post "/message-bus/#{client_id}",
|
277
|
+
post "/message-bus/#{client_id}",
|
275
278
|
'/foo' => id - 1
|
276
|
-
}
|
277
279
|
|
278
280
|
parsed = JSON.parse(last_response.body)
|
279
281
|
parsed.length.must_equal 1
|
280
282
|
end
|
281
283
|
|
282
284
|
it "should filter by group correctly" do
|
283
|
-
id
|
285
|
+
id = @bus.publish("/foo", "test", group_ids: [3, 4, 5])
|
284
286
|
@bus.group_ids_lookup do |env|
|
285
|
-
[0,1,2]
|
287
|
+
[0, 1, 2]
|
286
288
|
end
|
287
289
|
|
288
290
|
client_id = "ABCD"
|
289
|
-
post "/message-bus/#{client_id}",
|
291
|
+
post "/message-bus/#{client_id}",
|
290
292
|
'/foo' => id - 1
|
291
|
-
}
|
292
293
|
|
293
294
|
parsed = JSON.parse(last_response.body)
|
294
295
|
message = parsed.first
|
@@ -297,12 +298,11 @@ describe MessageBus::Rack::Middleware do
|
|
297
298
|
message["data"].must_equal("/foo" => 1)
|
298
299
|
|
299
300
|
@bus.group_ids_lookup do |env|
|
300
|
-
[1,7,4,100]
|
301
|
+
[1, 7, 4, 100]
|
301
302
|
end
|
302
303
|
|
303
|
-
post "/message-bus/#{client_id}",
|
304
|
+
post "/message-bus/#{client_id}",
|
304
305
|
'/foo' => id - 1
|
305
|
-
}
|
306
306
|
|
307
307
|
parsed = JSON.parse(last_response.body)
|
308
308
|
parsed.length.must_equal 1
|
@@ -310,11 +310,11 @@ describe MessageBus::Rack::Middleware do
|
|
310
310
|
|
311
311
|
it "can decode a JSON encoded request" do
|
312
312
|
id = @bus.last_id('/foo')
|
313
|
-
@bus.publish("/foo",
|
314
|
-
post(
|
315
|
-
JSON.generate(
|
316
|
-
|
317
|
-
JSON.parse(last_response.body).first["data"].must_equal(
|
313
|
+
@bus.publish("/foo", json: true)
|
314
|
+
post("/message-bus/1234",
|
315
|
+
JSON.generate('/foo' => id),
|
316
|
+
"CONTENT_TYPE" => "application/json")
|
317
|
+
JSON.parse(last_response.body).first["data"].must_equal('json' => true)
|
318
318
|
end
|
319
319
|
|
320
320
|
describe "on_middleware_error handling" do
|
@@ -322,7 +322,7 @@ describe MessageBus::Rack::Middleware do
|
|
322
322
|
|
323
323
|
@bus.on_middleware_error do |env, err|
|
324
324
|
if ArgumentError === err
|
325
|
-
[407,{},[]]
|
325
|
+
[407, {}, []]
|
326
326
|
end
|
327
327
|
end
|
328
328
|
|
@@ -330,9 +330,9 @@ describe MessageBus::Rack::Middleware do
|
|
330
330
|
raise ArgumentError
|
331
331
|
end
|
332
332
|
|
333
|
-
post(
|
334
|
-
JSON.generate(
|
335
|
-
|
333
|
+
post("/message-bus/1234",
|
334
|
+
JSON.generate('/foo' => 1),
|
335
|
+
"CONTENT_TYPE" => "application/json")
|
336
336
|
|
337
337
|
last_response.status.must_equal 407
|
338
338
|
|
@@ -349,7 +349,7 @@ describe MessageBus::Rack::Middleware do
|
|
349
349
|
end
|
350
350
|
|
351
351
|
def call(env)
|
352
|
-
@app.call(env.merge('message_bus.channels'=>{'/foo'=>0}))
|
352
|
+
@app.call(env.merge('message_bus.channels' => { '/foo' => 0 }))
|
353
353
|
end
|
354
354
|
end
|
355
355
|
end
|
@@ -359,16 +359,14 @@ describe MessageBus::Rack::Middleware do
|
|
359
359
|
foo_id = @bus.publish("/foo", "testfoo")
|
360
360
|
bar_id = @bus.publish("/bar", "testbar")
|
361
361
|
|
362
|
-
post "/message-bus/ABCD",
|
362
|
+
post "/message-bus/ABCD",
|
363
363
|
'/foo' => foo_id - 1
|
364
|
-
}
|
365
364
|
|
366
365
|
parsed = JSON.parse(last_response.body)
|
367
366
|
parsed.first['data'].must_equal 'testfoo'
|
368
367
|
|
369
|
-
post "/message-bus/ABCD",
|
368
|
+
post "/message-bus/ABCD",
|
370
369
|
'/bar' => bar_id - 1
|
371
|
-
}
|
372
370
|
|
373
371
|
parsed = JSON.parse(last_response.body)
|
374
372
|
parsed.first['data'].must_equal 'testfoo'
|
@@ -2,7 +2,6 @@ require_relative '../spec_helper'
|
|
2
2
|
require 'message_bus'
|
3
3
|
require 'redis'
|
4
4
|
|
5
|
-
|
6
5
|
describe MessageBus do
|
7
6
|
|
8
7
|
before do
|
@@ -56,9 +55,8 @@ describe MessageBus do
|
|
56
55
|
client_ids = msg.client_ids
|
57
56
|
end
|
58
57
|
|
59
|
-
@bus.publish("/chuck", {:
|
60
|
-
|
61
|
-
wait_for(2000){ client_ids}
|
58
|
+
@bus.publish("/chuck", { yeager: true }, client_ids: ['a', 'b'])
|
59
|
+
wait_for(2000) { client_ids }
|
62
60
|
|
63
61
|
client_ids.must_equal ['a', 'b']
|
64
62
|
|
@@ -70,15 +68,15 @@ describe MessageBus do
|
|
70
68
|
@bus.subscribe("/chuck") do |msg|
|
71
69
|
data = msg.data
|
72
70
|
end
|
73
|
-
@bus.publish("/chuck",
|
74
|
-
@bus.publish("/chuck",
|
75
|
-
@bus.publish("/chuck",
|
71
|
+
@bus.publish("/chuck", norris: true)
|
72
|
+
@bus.publish("/chuck", norris: true)
|
73
|
+
@bus.publish("/chuck", norris: true)
|
76
74
|
|
77
75
|
@bus.reliable_pub_sub.reset!
|
78
76
|
|
79
|
-
@bus.publish("/chuck",
|
77
|
+
@bus.publish("/chuck", yeager: true)
|
80
78
|
|
81
|
-
wait_for(2000){ data && data["yeager"]}
|
79
|
+
wait_for(2000) { data && data["yeager"] }
|
82
80
|
|
83
81
|
data["yeager"].must_equal true
|
84
82
|
|
@@ -89,14 +87,14 @@ describe MessageBus do
|
|
89
87
|
@bus.subscribe("/chuck") do |msg|
|
90
88
|
data = msg.data
|
91
89
|
end
|
92
|
-
@bus.publish("/chuck",
|
93
|
-
wait_for(2000){ data }
|
90
|
+
@bus.publish("/chuck", norris: true)
|
91
|
+
wait_for(2000) { data }
|
94
92
|
|
95
93
|
data["norris"].must_equal true
|
96
94
|
end
|
97
95
|
|
98
96
|
it "should get a message if it subscribes to it" do
|
99
|
-
user_ids,data,site_id,channel = nil
|
97
|
+
user_ids, data, site_id, channel = nil
|
100
98
|
|
101
99
|
@bus.subscribe("/chuck") do |msg|
|
102
100
|
data = msg.data
|
@@ -105,20 +103,19 @@ describe MessageBus do
|
|
105
103
|
user_ids = msg.user_ids
|
106
104
|
end
|
107
105
|
|
108
|
-
@bus.publish("/chuck", "norris", user_ids: [1,2,3])
|
106
|
+
@bus.publish("/chuck", "norris", user_ids: [1, 2, 3])
|
109
107
|
|
110
|
-
wait_for(2000){data}
|
108
|
+
wait_for(2000) { data }
|
111
109
|
|
112
110
|
data.must_equal 'norris'
|
113
111
|
site_id.must_equal 'magic'
|
114
112
|
channel.must_equal '/chuck'
|
115
|
-
user_ids.must_equal [1,2,3]
|
113
|
+
user_ids.must_equal [1, 2, 3]
|
116
114
|
|
117
115
|
end
|
118
116
|
|
119
|
-
|
120
117
|
it "should get global messages if it subscribes to them" do
|
121
|
-
data,site_id,channel = nil
|
118
|
+
data, site_id, channel = nil
|
122
119
|
|
123
120
|
@bus.subscribe do |msg|
|
124
121
|
data = msg.data
|
@@ -128,7 +125,7 @@ describe MessageBus do
|
|
128
125
|
|
129
126
|
@bus.publish("/chuck", "norris")
|
130
127
|
|
131
|
-
wait_for(2000){data}
|
128
|
+
wait_for(2000) { data }
|
132
129
|
|
133
130
|
data.must_equal 'norris'
|
134
131
|
site_id.must_equal 'magic'
|
@@ -143,7 +140,7 @@ describe MessageBus do
|
|
143
140
|
|
144
141
|
r = @bus.backlog("/chuck", id)
|
145
142
|
|
146
|
-
r.map{|i| i.data}.to_a.must_equal ['foo', 'bar']
|
143
|
+
r.map { |i| i.data }.to_a.must_equal ['foo', 'bar']
|
147
144
|
end
|
148
145
|
|
149
146
|
it "should correctly get full backlog of a channel" do
|
@@ -151,7 +148,7 @@ describe MessageBus do
|
|
151
148
|
@bus.publish("/chuck", "foo")
|
152
149
|
@bus.publish("/chuckles", "bar")
|
153
150
|
|
154
|
-
@bus.backlog("/chuck").map{|i| i.data}.to_a.must_equal ['norris', 'foo']
|
151
|
+
@bus.backlog("/chuck").map { |i| i.data }.to_a.must_equal ['norris', 'foo']
|
155
152
|
|
156
153
|
end
|
157
154
|
|
@@ -166,7 +163,7 @@ describe MessageBus do
|
|
166
163
|
before do
|
167
164
|
seq = 0
|
168
165
|
@bus.site_id_lookup do
|
169
|
-
(seq+=1).to_s
|
166
|
+
(seq += 1).to_s
|
170
167
|
end
|
171
168
|
end
|
172
169
|
|
@@ -183,7 +180,7 @@ describe MessageBus do
|
|
183
180
|
end
|
184
181
|
|
185
182
|
@bus.publish("/global/test", "test")
|
186
|
-
wait_for(1000){ data }
|
183
|
+
wait_for(1000) { data }
|
187
184
|
|
188
185
|
data.must_equal "test"
|
189
186
|
end
|
@@ -196,7 +193,7 @@ describe MessageBus do
|
|
196
193
|
end
|
197
194
|
|
198
195
|
@bus.publish("/global/test", "test")
|
199
|
-
wait_for(1000){ data }
|
196
|
+
wait_for(1000) { data }
|
200
197
|
|
201
198
|
data.must_equal "test"
|
202
199
|
end
|
@@ -217,27 +214,33 @@ describe MessageBus do
|
|
217
214
|
|
218
215
|
unless MESSAGE_BUS_CONFIG[:backend] == :memory
|
219
216
|
it "should support forking properly do" do
|
220
|
-
data =
|
217
|
+
data = []
|
221
218
|
@bus.subscribe do |msg|
|
222
|
-
data
|
219
|
+
data << msg.data
|
223
220
|
end
|
224
221
|
|
225
222
|
@bus.publish("/hello", "world")
|
226
|
-
|
227
|
-
wait_for(2000){ data }
|
223
|
+
wait_for(2000) { data.length > 0 }
|
228
224
|
|
229
225
|
if child = Process.fork
|
230
|
-
|
226
|
+
|
227
|
+
wait_for(2000) { data.include?("ready") }
|
228
|
+
data.must_include "ready"
|
229
|
+
|
231
230
|
@bus.publish("/hello", "world1")
|
232
|
-
|
233
|
-
data.
|
231
|
+
|
232
|
+
wait_for(2000) { data.include?("got it") }
|
233
|
+
data.must_include "got it"
|
234
234
|
Process.wait(child)
|
235
|
+
|
235
236
|
else
|
236
237
|
begin
|
237
238
|
@bus.after_fork
|
238
239
|
@bus.publish("/hello", "ready")
|
239
|
-
|
240
|
-
|
240
|
+
|
241
|
+
wait_for(2000) { data.include? "world1" }
|
242
|
+
|
243
|
+
if (data.include? "world1")
|
241
244
|
@bus.publish("/hello", "got it")
|
242
245
|
end
|
243
246
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: message_bus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Saffron
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|