protobuf 2.8.0.beta2-java → 2.8.0.beta3-java
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.
- data/lib/protobuf.rb +10 -1
- data/lib/protobuf/field/float_field.rb +1 -5
- data/lib/protobuf/rpc/connectors/zmq.rb +9 -12
- data/lib/protobuf/rpc/servers/zmq/broker.rb +17 -47
- data/lib/protobuf/rpc/servers/zmq/server.rb +36 -45
- data/lib/protobuf/rpc/servers/zmq/worker.rb +22 -62
- data/lib/protobuf/rpc/servers/zmq_runner.rb +2 -3
- data/lib/protobuf/rpc/service_directory.rb +8 -6
- data/lib/protobuf/version.rb +1 -1
- data/spec/functional/zmq_server_spec.rb +41 -23
- data/spec/lib/protobuf/rpc/servers/zmq/server_spec.rb +0 -5
- metadata +2 -2
data/lib/protobuf.rb
CHANGED
@@ -3,7 +3,16 @@ require 'socket'
|
|
3
3
|
require 'pp'
|
4
4
|
require 'stringio'
|
5
5
|
require 'active_support/core_ext/object/blank'
|
6
|
-
require 'active_support/
|
6
|
+
require 'active_support/version'
|
7
|
+
|
8
|
+
if ActiveSupport::VERSION::MAJOR > 2
|
9
|
+
require 'active_support/core_ext/object/try'
|
10
|
+
else
|
11
|
+
require 'active_support/core_ext/module/delegation'
|
12
|
+
require 'active_support/core_ext/kernel/reporting'
|
13
|
+
require 'active_support/core_ext/try'
|
14
|
+
end
|
15
|
+
|
7
16
|
require 'active_support/inflector'
|
8
17
|
require 'active_support/json'
|
9
18
|
|
@@ -4,10 +4,6 @@ module Protobuf
|
|
4
4
|
module Field
|
5
5
|
class FloatField < BaseField
|
6
6
|
def self.default; 0.0; end
|
7
|
-
def self.max; 1.0/0; end
|
8
|
-
def self.min; -1.0/0; end
|
9
|
-
def max; 1.0/0; end
|
10
|
-
def min; -1.0/0; end
|
11
7
|
|
12
8
|
def wire_type
|
13
9
|
WireType::FIXED32
|
@@ -22,7 +18,7 @@ module Protobuf
|
|
22
18
|
end
|
23
19
|
|
24
20
|
def acceptable?(val)
|
25
|
-
(
|
21
|
+
val.respond_to?(:to_f)
|
26
22
|
end
|
27
23
|
end
|
28
24
|
end
|
@@ -19,6 +19,13 @@ module Protobuf
|
|
19
19
|
|
20
20
|
CLIENT_RETRIES = (ENV['PB_CLIENT_RETRIES'] || 3)
|
21
21
|
|
22
|
+
##
|
23
|
+
# Class Methods
|
24
|
+
#
|
25
|
+
def self.zmq_context
|
26
|
+
@zmq_context ||= ZMQ::Context.new
|
27
|
+
end
|
28
|
+
|
22
29
|
##
|
23
30
|
# Instance methods
|
24
31
|
#
|
@@ -47,7 +54,6 @@ module Protobuf
|
|
47
54
|
|
48
55
|
def close_connection
|
49
56
|
socket_close
|
50
|
-
zmq_context_terminate
|
51
57
|
end
|
52
58
|
|
53
59
|
# Establish a request socket connection to the remote rpc_server.
|
@@ -106,7 +112,7 @@ module Protobuf
|
|
106
112
|
read_response
|
107
113
|
return
|
108
114
|
else
|
109
|
-
|
115
|
+
socket_close
|
110
116
|
end
|
111
117
|
end
|
112
118
|
|
@@ -171,16 +177,7 @@ module Protobuf
|
|
171
177
|
# an exit block to ensure the context is terminated correctly.
|
172
178
|
#
|
173
179
|
def zmq_context
|
174
|
-
|
175
|
-
end
|
176
|
-
|
177
|
-
# Terminate the zmq_context (if any).
|
178
|
-
#
|
179
|
-
def zmq_context_terminate
|
180
|
-
log_debug { sign_message("Terminating ZMQ Context") }
|
181
|
-
@zmq_context.try(:terminate)
|
182
|
-
@zmq_context = nil
|
183
|
-
log_debug { sign_message("ZMQ Context terminated") }
|
180
|
+
self.class.zmq_context
|
184
181
|
end
|
185
182
|
|
186
183
|
def zmq_error_check(return_code, source)
|
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
module Protobuf
|
3
2
|
module Rpc
|
4
3
|
module Zmq
|
@@ -11,31 +10,24 @@ module Protobuf
|
|
11
10
|
init_zmq_context
|
12
11
|
init_backend_socket
|
13
12
|
init_frontend_socket
|
14
|
-
init_shutdown_socket
|
15
13
|
init_poller
|
16
14
|
rescue
|
17
15
|
teardown
|
18
16
|
raise
|
19
17
|
end
|
20
18
|
|
21
|
-
def join
|
22
|
-
@thread.try(:join)
|
23
|
-
end
|
24
|
-
|
25
19
|
def run
|
26
20
|
@idle_workers = []
|
27
21
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
throw :shutdown
|
38
|
-
end
|
22
|
+
while running?
|
23
|
+
break if @poller.poll(500) < 0
|
24
|
+
|
25
|
+
@poller.readables.each do |readable|
|
26
|
+
case readable
|
27
|
+
when @frontend_socket
|
28
|
+
process_frontend
|
29
|
+
when @backend_socket
|
30
|
+
process_backend
|
39
31
|
end
|
40
32
|
end
|
41
33
|
end
|
@@ -43,23 +35,8 @@ module Protobuf
|
|
43
35
|
teardown
|
44
36
|
end
|
45
37
|
|
46
|
-
def
|
47
|
-
|
48
|
-
|
49
|
-
@thread = Thread.new { self.run }
|
50
|
-
|
51
|
-
self
|
52
|
-
end
|
53
|
-
|
54
|
-
def shutdown_uri
|
55
|
-
"inproc://#{object_id}"
|
56
|
-
end
|
57
|
-
|
58
|
-
def signal_shutdown
|
59
|
-
socket = @zmq_context.socket(ZMQ::PAIR)
|
60
|
-
zmq_error_check(socket.connect(shutdown_uri))
|
61
|
-
zmq_error_check(socket.send_string ".")
|
62
|
-
zmq_error_check(socket.close)
|
38
|
+
def running?
|
39
|
+
@server.running? || @server.workers.any?
|
63
40
|
end
|
64
41
|
|
65
42
|
private
|
@@ -78,12 +55,6 @@ module Protobuf
|
|
78
55
|
@poller = ZMQ::Poller.new
|
79
56
|
@poller.register_readable(@frontend_socket)
|
80
57
|
@poller.register_readable(@backend_socket)
|
81
|
-
@poller.register_readable(@shutdown_socket)
|
82
|
-
end
|
83
|
-
|
84
|
-
def init_shutdown_socket
|
85
|
-
@shutdown_socket = @zmq_context.socket(ZMQ::PAIR)
|
86
|
-
zmq_error_check(@shutdown_socket.bind(shutdown_uri))
|
87
58
|
end
|
88
59
|
|
89
60
|
def init_zmq_context
|
@@ -108,21 +79,20 @@ module Protobuf
|
|
108
79
|
end
|
109
80
|
|
110
81
|
def read_from_backend
|
111
|
-
[]
|
112
|
-
|
113
|
-
|
82
|
+
frames = []
|
83
|
+
zmq_error_check(@backend_socket.recv_strings(frames))
|
84
|
+
frames
|
114
85
|
end
|
115
86
|
|
116
87
|
def read_from_frontend
|
117
|
-
[]
|
118
|
-
|
119
|
-
|
88
|
+
frames = []
|
89
|
+
zmq_error_check(@frontend_socket.recv_strings(frames))
|
90
|
+
frames
|
120
91
|
end
|
121
92
|
|
122
93
|
def teardown
|
123
94
|
@frontend_socket.try(:close)
|
124
95
|
@backend_socket.try(:close)
|
125
|
-
@shutdown_socket.try(:close)
|
126
96
|
@zmq_context.try(:terminate)
|
127
97
|
end
|
128
98
|
|
@@ -15,7 +15,7 @@ module Protobuf
|
|
15
15
|
:broadcast_beacons => false
|
16
16
|
}
|
17
17
|
|
18
|
-
attr_accessor :options
|
18
|
+
attr_accessor :options, :workers
|
19
19
|
|
20
20
|
def initialize(options)
|
21
21
|
@options = DEFAULT_OPTIONS.merge(options)
|
@@ -23,12 +23,16 @@ module Protobuf
|
|
23
23
|
|
24
24
|
init_zmq_context
|
25
25
|
init_beacon_socket if broadcast_beacons?
|
26
|
-
|
26
|
+
init_shutdown_pipe
|
27
27
|
rescue
|
28
28
|
teardown
|
29
29
|
raise
|
30
30
|
end
|
31
31
|
|
32
|
+
def add_worker
|
33
|
+
@total_workers = total_workers + 1
|
34
|
+
end
|
35
|
+
|
32
36
|
def backend_ip
|
33
37
|
frontend_ip
|
34
38
|
end
|
@@ -120,7 +124,7 @@ module Protobuf
|
|
120
124
|
end
|
121
125
|
|
122
126
|
def maintenance_timeout
|
123
|
-
|
127
|
+
next_maintenance - Time.now.to_i
|
124
128
|
end
|
125
129
|
|
126
130
|
def next_maintenance
|
@@ -131,7 +135,7 @@ module Protobuf
|
|
131
135
|
end
|
132
136
|
|
133
137
|
def minimum_timeout
|
134
|
-
|
138
|
+
0.1
|
135
139
|
end
|
136
140
|
|
137
141
|
def next_beacon
|
@@ -173,8 +177,8 @@ module Protobuf
|
|
173
177
|
start_missing_workers
|
174
178
|
wait_for_shutdown_signal
|
175
179
|
broadcast_flatline if broadcast_beacons?
|
176
|
-
|
177
|
-
|
180
|
+
Thread.pass until reap_dead_workers.empty?
|
181
|
+
@broker.join unless brokerless?
|
178
182
|
ensure
|
179
183
|
@running = false
|
180
184
|
teardown
|
@@ -184,21 +188,6 @@ module Protobuf
|
|
184
188
|
!!@running
|
185
189
|
end
|
186
190
|
|
187
|
-
def shutdown_uri
|
188
|
-
"inproc://#{object_id}"
|
189
|
-
end
|
190
|
-
|
191
|
-
def signal_shutdown
|
192
|
-
socket = @zmq_context.socket ZMQ::PAIR
|
193
|
-
zmq_error_check(socket.connect shutdown_uri)
|
194
|
-
zmq_error_check(socket.send_string ".")
|
195
|
-
zmq_error_check(socket.close)
|
196
|
-
end
|
197
|
-
|
198
|
-
def start_broker
|
199
|
-
@broker = ::Protobuf::Rpc::Zmq::Broker.new(self).start
|
200
|
-
end
|
201
|
-
|
202
191
|
def start_missing_workers
|
203
192
|
missing_workers = total_workers - @workers.size
|
204
193
|
|
@@ -208,26 +197,14 @@ module Protobuf
|
|
208
197
|
end
|
209
198
|
end
|
210
199
|
|
211
|
-
def start_worker
|
212
|
-
@workers << ::Protobuf::Rpc::Zmq::Worker.new(self).start
|
213
|
-
end
|
214
|
-
|
215
200
|
def stop
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
def stop_broker
|
220
|
-
@broker.signal_shutdown
|
221
|
-
@broker.join
|
222
|
-
end
|
223
|
-
|
224
|
-
def stop_workers
|
225
|
-
@workers.each(&:signal_shutdown)
|
226
|
-
Thread.pass until reap_dead_workers.empty?
|
201
|
+
@running = false
|
202
|
+
@shutdown_w.write('.')
|
227
203
|
end
|
228
204
|
|
229
205
|
def teardown
|
230
|
-
@
|
206
|
+
@shutdown_r.try(:close)
|
207
|
+
@shutdown_w.try(:close)
|
231
208
|
@beacon_socket.try(:close)
|
232
209
|
@zmq_context.try(:terminate)
|
233
210
|
@last_reaping = @last_beacon = @timeout = nil
|
@@ -260,12 +237,9 @@ module Protobuf
|
|
260
237
|
end
|
261
238
|
|
262
239
|
def wait_for_shutdown_signal
|
263
|
-
|
264
|
-
|
240
|
+
loop do
|
241
|
+
break if IO.select([@shutdown_r], nil, nil, timeout)
|
265
242
|
|
266
|
-
# If the poller returns 1, a shutdown signal has been received.
|
267
|
-
# If the poller returns -1, something went wrong.
|
268
|
-
while poller.poll(timeout) === 0
|
269
243
|
if reap_dead_workers?
|
270
244
|
reap_dead_workers
|
271
245
|
start_missing_workers
|
@@ -283,14 +257,31 @@ module Protobuf
|
|
283
257
|
@beacon_socket.connect(beacon_ip, beacon_port)
|
284
258
|
end
|
285
259
|
|
286
|
-
def
|
287
|
-
@
|
288
|
-
zmq_error_check(@shutdown_socket.bind shutdown_uri)
|
260
|
+
def init_shutdown_pipe
|
261
|
+
@shutdown_r, @shutdown_w = IO.pipe
|
289
262
|
end
|
290
263
|
|
291
264
|
def init_zmq_context
|
292
265
|
@zmq_context = ZMQ::Context.new
|
293
266
|
end
|
267
|
+
|
268
|
+
def start_broker
|
269
|
+
@broker = Thread.new(self) do |server|
|
270
|
+
::Protobuf::Rpc::Zmq::Broker.new(server).run
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
def start_worker
|
275
|
+
@workers << Thread.new(self) do |server|
|
276
|
+
begin
|
277
|
+
::Protobuf::Rpc::Zmq::Worker.new(server).run
|
278
|
+
rescue => e
|
279
|
+
message = "Worker failed: #{e.inspect}\n #{e.backtrace.join($/)}"
|
280
|
+
$stderr.puts(message)
|
281
|
+
log_error { message }
|
282
|
+
end
|
283
|
+
end
|
284
|
+
end
|
294
285
|
end
|
295
286
|
end
|
296
287
|
end
|
@@ -13,9 +13,9 @@ module Protobuf
|
|
13
13
|
#
|
14
14
|
def initialize(server)
|
15
15
|
@server = server
|
16
|
+
|
16
17
|
init_zmq_context
|
17
18
|
init_backend_socket
|
18
|
-
init_shutdown_socket
|
19
19
|
rescue
|
20
20
|
teardown
|
21
21
|
raise
|
@@ -24,14 +24,6 @@ module Protobuf
|
|
24
24
|
##
|
25
25
|
# Instance Methods
|
26
26
|
#
|
27
|
-
def alive?
|
28
|
-
@thread.try(:alive?) || false
|
29
|
-
end
|
30
|
-
|
31
|
-
def join
|
32
|
-
@thread.try(:join)
|
33
|
-
end
|
34
|
-
|
35
27
|
def process_request
|
36
28
|
@client_address, empty, @request_data = read_from_backend
|
37
29
|
|
@@ -41,12 +33,6 @@ module Protobuf
|
|
41
33
|
end
|
42
34
|
end
|
43
35
|
|
44
|
-
def read_from_backend
|
45
|
-
[].tap do |frames|
|
46
|
-
zmq_error_check(@backend_socket.recv_strings(frames))
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
36
|
def run
|
51
37
|
poller = ::ZMQ::Poller.new
|
52
38
|
poller.register_readable(@backend_socket)
|
@@ -55,23 +41,22 @@ module Protobuf
|
|
55
41
|
# Send request to broker telling it we are ready
|
56
42
|
write_to_backend([::Protobuf::Rpc::Zmq::WORKER_READY_MESSAGE])
|
57
43
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
process_request
|
65
|
-
when @shutdown_socket
|
66
|
-
throw :shutdown
|
67
|
-
end
|
68
|
-
end
|
44
|
+
while running?
|
45
|
+
break if poller.poll(500) < 0
|
46
|
+
|
47
|
+
if poller.readables.any?
|
48
|
+
initialize_request!
|
49
|
+
process_request
|
69
50
|
end
|
70
51
|
end
|
71
52
|
ensure
|
72
53
|
teardown
|
73
54
|
end
|
74
55
|
|
56
|
+
def running?
|
57
|
+
@server.running?
|
58
|
+
end
|
59
|
+
|
75
60
|
def send_data
|
76
61
|
data = @response.serialize_to_string
|
77
62
|
|
@@ -80,56 +65,31 @@ module Protobuf
|
|
80
65
|
write_to_backend([@client_address, "", data])
|
81
66
|
end
|
82
67
|
|
83
|
-
|
84
|
-
"inproc://#{object_id}"
|
85
|
-
end
|
68
|
+
private
|
86
69
|
|
87
|
-
def
|
88
|
-
|
89
|
-
zmq_error_check(socket.connect(shutdown_uri))
|
90
|
-
zmq_error_check(socket.send_string("."))
|
91
|
-
zmq_error_check(socket.close)
|
70
|
+
def init_zmq_context
|
71
|
+
@zmq_context = ZMQ::Context.new
|
92
72
|
end
|
93
73
|
|
94
|
-
def
|
95
|
-
@
|
96
|
-
|
97
|
-
|
98
|
-
rescue => e
|
99
|
-
message = "Worker failed: #{e.inspect}\n #{e.backtrace.join($/)}"
|
100
|
-
$stderr.puts(message)
|
101
|
-
log_error { message }
|
102
|
-
end
|
103
|
-
end
|
74
|
+
def init_backend_socket
|
75
|
+
@backend_socket = @zmq_context.socket(ZMQ::REQ)
|
76
|
+
zmq_error_check(@backend_socket.connect(@server.backend_uri))
|
77
|
+
end
|
104
78
|
|
105
|
-
|
79
|
+
def read_from_backend
|
80
|
+
frames = []
|
81
|
+
zmq_error_check(@backend_socket.recv_strings(frames))
|
82
|
+
frames
|
106
83
|
end
|
107
84
|
|
108
85
|
def teardown
|
109
86
|
@backend_socket.try(:close)
|
110
|
-
@shutdown_socket.try(:close)
|
111
87
|
@zmq_context.try(:terminate)
|
112
88
|
end
|
113
89
|
|
114
90
|
def write_to_backend(frames)
|
115
91
|
zmq_error_check(@backend_socket.send_strings(frames))
|
116
92
|
end
|
117
|
-
|
118
|
-
private
|
119
|
-
|
120
|
-
def init_zmq_context
|
121
|
-
@zmq_context = ZMQ::Context.new
|
122
|
-
end
|
123
|
-
|
124
|
-
def init_backend_socket
|
125
|
-
@backend_socket = @zmq_context.socket(ZMQ::REQ)
|
126
|
-
zmq_error_check(@backend_socket.connect(@server.backend_uri))
|
127
|
-
end
|
128
|
-
|
129
|
-
def init_shutdown_socket
|
130
|
-
@shutdown_socket = @zmq_context.socket(ZMQ::PAIR)
|
131
|
-
zmq_error_check(@shutdown_socket.bind(shutdown_uri))
|
132
|
-
end
|
133
93
|
end
|
134
94
|
end
|
135
95
|
end
|
@@ -36,9 +36,8 @@ module Protobuf
|
|
36
36
|
|
37
37
|
def register_signals
|
38
38
|
trap(:TTIN) do
|
39
|
-
|
40
|
-
@server.
|
41
|
-
log_info { "Worker count : #{::Protobuf::Rpc::Zmq::Server.threads.size}" }
|
39
|
+
@server.add_worker
|
40
|
+
log_info { "Increased worker size to: #{@server.total_workers}" }
|
42
41
|
end
|
43
42
|
end
|
44
43
|
end
|
@@ -183,7 +183,8 @@ module Protobuf
|
|
183
183
|
|
184
184
|
def run
|
185
185
|
loop do
|
186
|
-
|
186
|
+
beacon = wait_for_beacon
|
187
|
+
process_beacon(beacon)
|
187
188
|
remove_expired_listings
|
188
189
|
end
|
189
190
|
rescue => e
|
@@ -194,12 +195,13 @@ module Protobuf
|
|
194
195
|
def wait_for_beacon
|
195
196
|
data, addr = @socket.recvfrom(2048)
|
196
197
|
|
197
|
-
::Protobuf::Rpc::DynamicDiscovery::Beacon.new
|
198
|
-
|
198
|
+
beacon = ::Protobuf::Rpc::DynamicDiscovery::Beacon.new
|
199
|
+
beacon.parse_from_string(data)
|
199
200
|
|
200
|
-
|
201
|
-
|
202
|
-
|
201
|
+
# Favor the address captured by the socket
|
202
|
+
beacon.try(:server).try(:address=, addr[3])
|
203
|
+
|
204
|
+
beacon
|
203
205
|
end
|
204
206
|
end
|
205
207
|
end
|
data/lib/protobuf/version.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
|
2
3
|
require 'spec/support/test/resource_service'
|
3
4
|
require 'protobuf/rpc/service_directory'
|
4
5
|
|
@@ -13,11 +14,13 @@ describe 'Functional ZMQ Client' do
|
|
13
14
|
}}
|
14
15
|
|
15
16
|
let(:server) { ::Protobuf::Rpc::Zmq::Server.new(options) }
|
16
|
-
let(:server_thread) { Thread.new(server) { |server| server.run } }
|
17
|
+
let!(:server_thread) { Thread.new(server) { |server| server.run } }
|
17
18
|
|
18
|
-
before do
|
19
|
+
before(:all) do
|
19
20
|
load "protobuf/zmq.rb"
|
20
|
-
|
21
|
+
end
|
22
|
+
|
23
|
+
before do
|
21
24
|
Thread.pass until server.running?
|
22
25
|
end
|
23
26
|
|
@@ -43,17 +46,36 @@ describe 'Functional ZMQ Client' do
|
|
43
46
|
}.to_not raise_error
|
44
47
|
end
|
45
48
|
|
49
|
+
it 'runs under heavy load' do
|
50
|
+
100.times do |x|
|
51
|
+
50.times.map do |y|
|
52
|
+
Thread.new do
|
53
|
+
client = ::Test::ResourceService.client
|
54
|
+
|
55
|
+
client.find(:name => 'Test Name', :active => true) do |c|
|
56
|
+
c.on_success do |succ|
|
57
|
+
succ.name.should eq("Test Name")
|
58
|
+
succ.status.should eq(::Test::StatusType::ENABLED)
|
59
|
+
end
|
60
|
+
|
61
|
+
c.on_failure do |err|
|
62
|
+
raise err.inspect
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end.each(&:join)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
46
70
|
context 'when a message is malformed' do
|
47
71
|
it 'calls the on_failure callback' do
|
48
72
|
error = nil
|
49
|
-
|
50
|
-
|
51
|
-
client = ::Test::ResourceService.client
|
73
|
+
request = ::Test::ResourceFindRequest.new(:active => true)
|
74
|
+
client = ::Test::ResourceService.client
|
52
75
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
76
|
+
client.find(request) do |c|
|
77
|
+
c.on_success { raise "shouldn't pass" }
|
78
|
+
c.on_failure {|e| error = e }
|
57
79
|
end
|
58
80
|
error.message.should match(/name.*required/)
|
59
81
|
end
|
@@ -62,14 +84,12 @@ describe 'Functional ZMQ Client' do
|
|
62
84
|
context 'when the request type is wrong' do
|
63
85
|
it 'calls the on_failure callback' do
|
64
86
|
error = nil
|
65
|
-
|
66
|
-
|
67
|
-
client = ::Test::ResourceService.client
|
87
|
+
request = ::Test::Resource.new(:name => 'Test Name')
|
88
|
+
client = ::Test::ResourceService.client
|
68
89
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
end
|
90
|
+
client.find(request) do |c|
|
91
|
+
c.on_success { raise "shouldn't pass" }
|
92
|
+
c.on_failure {|e| error = e}
|
73
93
|
end
|
74
94
|
error.message.should match(/expected request.*ResourceFindRequest.*Resource instead/i)
|
75
95
|
end
|
@@ -78,13 +98,11 @@ describe 'Functional ZMQ Client' do
|
|
78
98
|
context 'when the server takes too long to respond' do
|
79
99
|
it 'responds with a timeout error' do
|
80
100
|
error = nil
|
81
|
-
|
82
|
-
client = ::Test::ResourceService.client(:timeout => 1)
|
101
|
+
client = ::Test::ResourceService.client(:timeout => 1)
|
83
102
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
end
|
103
|
+
client.find_with_sleep(:sleep => 2) do |c|
|
104
|
+
c.on_success { raise "shouldn't pass" }
|
105
|
+
c.on_failure { |e| error = e }
|
88
106
|
end
|
89
107
|
error.message.should match(/The server took longer than 1 seconds to respond/i)
|
90
108
|
end
|
@@ -32,11 +32,6 @@ describe Protobuf::Rpc::Zmq::Server do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
describe '.stop' do
|
35
|
-
it 'signals shutdown' do
|
36
|
-
subject.should_receive(:signal_shutdown)
|
37
|
-
subject.stop
|
38
|
-
end
|
39
|
-
|
40
35
|
it 'sets running to false' do
|
41
36
|
subject.instance_variable_set(:@workers, [])
|
42
37
|
subject.stop
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 6
|
5
|
-
version: 2.8.0.
|
5
|
+
version: 2.8.0.beta3
|
6
6
|
platform: java
|
7
7
|
authors:
|
8
8
|
- BJ Neilsen
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-06-
|
13
|
+
date: 2013-06-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|