grpc 1.31.1-universal-darwin → 1.32.0.pre1-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -4
- data/src/ruby/lib/grpc/2.3/grpc_c.bundle +0 -0
- data/src/ruby/lib/grpc/2.4/grpc_c.bundle +0 -0
- data/src/ruby/lib/grpc/2.5/grpc_c.bundle +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.bundle +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.bundle +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/test/xds_client.rb +101 -17
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03ad97e8bab81c23d0c059ce78946472d59183456400f8bedf60038c2c03f12a
|
4
|
+
data.tar.gz: 4f817a8d2932f1bf6dcd4bc5f2bb3ccafac4ee03975f7796ee2ac832b67523f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20119b3ca4e98bfa82bb3f0ed6da9bb9f3f054d80a46b9a2c26dba653ace4ea2ed36c9f397b66bfa6a9a3d5327bf8a1d6a57f482e0270bc9c35c1446f7aed656
|
7
|
+
data.tar.gz: 7ebc15f8aee3f1a1ada15067aa6e31b093054cd3d87d5dbabf663c50ac19aafcee6914e0983e3337e034d2d8aee3919912da77b836685b1f76457a9fe7101114
|
@@ -165,6 +165,15 @@ static VALUE grpc_rb_channel_credentials_init(int argc, VALUE* argv,
|
|
165
165
|
if (pem_private_key == Qnil && pem_cert_chain == Qnil) {
|
166
166
|
creds = grpc_ssl_credentials_create(pem_root_certs_cstr, NULL, NULL, NULL);
|
167
167
|
} else {
|
168
|
+
if (pem_private_key == Qnil) {
|
169
|
+
rb_raise(
|
170
|
+
rb_eRuntimeError,
|
171
|
+
"could not create a credentials because pem_private_key is NULL");
|
172
|
+
}
|
173
|
+
if (pem_cert_chain == Qnil) {
|
174
|
+
rb_raise(rb_eRuntimeError,
|
175
|
+
"could not create a credentials because pem_cert_chain is NULL");
|
176
|
+
}
|
168
177
|
key_cert_pair.private_key = RSTRING_PTR(pem_private_key);
|
169
178
|
key_cert_pair.cert_chain = RSTRING_PTR(pem_cert_chain);
|
170
179
|
creds = grpc_ssl_credentials_create(pem_root_certs_cstr, &key_cert_pair,
|
@@ -120,12 +120,12 @@ grpc_auth_context_set_peer_identity_property_name_type grpc_auth_context_set_pee
|
|
120
120
|
grpc_ssl_session_cache_create_lru_type grpc_ssl_session_cache_create_lru_import;
|
121
121
|
grpc_ssl_session_cache_destroy_type grpc_ssl_session_cache_destroy_import;
|
122
122
|
grpc_ssl_session_cache_create_channel_arg_type grpc_ssl_session_cache_create_channel_arg_import;
|
123
|
+
grpc_call_credentials_release_type grpc_call_credentials_release_import;
|
123
124
|
grpc_channel_credentials_release_type grpc_channel_credentials_release_import;
|
124
125
|
grpc_google_default_credentials_create_type grpc_google_default_credentials_create_import;
|
125
126
|
grpc_set_ssl_roots_override_callback_type grpc_set_ssl_roots_override_callback_import;
|
126
127
|
grpc_ssl_credentials_create_type grpc_ssl_credentials_create_import;
|
127
128
|
grpc_ssl_credentials_create_ex_type grpc_ssl_credentials_create_ex_import;
|
128
|
-
grpc_call_credentials_release_type grpc_call_credentials_release_import;
|
129
129
|
grpc_composite_channel_credentials_create_type grpc_composite_channel_credentials_create_import;
|
130
130
|
grpc_composite_call_credentials_create_type grpc_composite_call_credentials_create_import;
|
131
131
|
grpc_google_compute_engine_credentials_create_type grpc_google_compute_engine_credentials_create_import;
|
@@ -394,12 +394,12 @@ void grpc_rb_load_imports(HMODULE library) {
|
|
394
394
|
grpc_ssl_session_cache_create_lru_import = (grpc_ssl_session_cache_create_lru_type) GetProcAddress(library, "grpc_ssl_session_cache_create_lru");
|
395
395
|
grpc_ssl_session_cache_destroy_import = (grpc_ssl_session_cache_destroy_type) GetProcAddress(library, "grpc_ssl_session_cache_destroy");
|
396
396
|
grpc_ssl_session_cache_create_channel_arg_import = (grpc_ssl_session_cache_create_channel_arg_type) GetProcAddress(library, "grpc_ssl_session_cache_create_channel_arg");
|
397
|
+
grpc_call_credentials_release_import = (grpc_call_credentials_release_type) GetProcAddress(library, "grpc_call_credentials_release");
|
397
398
|
grpc_channel_credentials_release_import = (grpc_channel_credentials_release_type) GetProcAddress(library, "grpc_channel_credentials_release");
|
398
399
|
grpc_google_default_credentials_create_import = (grpc_google_default_credentials_create_type) GetProcAddress(library, "grpc_google_default_credentials_create");
|
399
400
|
grpc_set_ssl_roots_override_callback_import = (grpc_set_ssl_roots_override_callback_type) GetProcAddress(library, "grpc_set_ssl_roots_override_callback");
|
400
401
|
grpc_ssl_credentials_create_import = (grpc_ssl_credentials_create_type) GetProcAddress(library, "grpc_ssl_credentials_create");
|
401
402
|
grpc_ssl_credentials_create_ex_import = (grpc_ssl_credentials_create_ex_type) GetProcAddress(library, "grpc_ssl_credentials_create_ex");
|
402
|
-
grpc_call_credentials_release_import = (grpc_call_credentials_release_type) GetProcAddress(library, "grpc_call_credentials_release");
|
403
403
|
grpc_composite_channel_credentials_create_import = (grpc_composite_channel_credentials_create_type) GetProcAddress(library, "grpc_composite_channel_credentials_create");
|
404
404
|
grpc_composite_call_credentials_create_import = (grpc_composite_call_credentials_create_type) GetProcAddress(library, "grpc_composite_call_credentials_create");
|
405
405
|
grpc_google_compute_engine_credentials_create_import = (grpc_google_compute_engine_credentials_create_type) GetProcAddress(library, "grpc_google_compute_engine_credentials_create");
|
@@ -335,10 +335,13 @@ extern grpc_ssl_session_cache_destroy_type grpc_ssl_session_cache_destroy_import
|
|
335
335
|
typedef grpc_arg(*grpc_ssl_session_cache_create_channel_arg_type)(grpc_ssl_session_cache* cache);
|
336
336
|
extern grpc_ssl_session_cache_create_channel_arg_type grpc_ssl_session_cache_create_channel_arg_import;
|
337
337
|
#define grpc_ssl_session_cache_create_channel_arg grpc_ssl_session_cache_create_channel_arg_import
|
338
|
+
typedef void(*grpc_call_credentials_release_type)(grpc_call_credentials* creds);
|
339
|
+
extern grpc_call_credentials_release_type grpc_call_credentials_release_import;
|
340
|
+
#define grpc_call_credentials_release grpc_call_credentials_release_import
|
338
341
|
typedef void(*grpc_channel_credentials_release_type)(grpc_channel_credentials* creds);
|
339
342
|
extern grpc_channel_credentials_release_type grpc_channel_credentials_release_import;
|
340
343
|
#define grpc_channel_credentials_release grpc_channel_credentials_release_import
|
341
|
-
typedef grpc_channel_credentials*(*grpc_google_default_credentials_create_type)(
|
344
|
+
typedef grpc_channel_credentials*(*grpc_google_default_credentials_create_type)(grpc_call_credentials* call_credentials);
|
342
345
|
extern grpc_google_default_credentials_create_type grpc_google_default_credentials_create_import;
|
343
346
|
#define grpc_google_default_credentials_create grpc_google_default_credentials_create_import
|
344
347
|
typedef void(*grpc_set_ssl_roots_override_callback_type)(grpc_ssl_roots_override_callback cb);
|
@@ -350,9 +353,6 @@ extern grpc_ssl_credentials_create_type grpc_ssl_credentials_create_import;
|
|
350
353
|
typedef grpc_channel_credentials*(*grpc_ssl_credentials_create_ex_type)(const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pair, const grpc_ssl_verify_peer_options* verify_options, void* reserved);
|
351
354
|
extern grpc_ssl_credentials_create_ex_type grpc_ssl_credentials_create_ex_import;
|
352
355
|
#define grpc_ssl_credentials_create_ex grpc_ssl_credentials_create_ex_import
|
353
|
-
typedef void(*grpc_call_credentials_release_type)(grpc_call_credentials* creds);
|
354
|
-
extern grpc_call_credentials_release_type grpc_call_credentials_release_import;
|
355
|
-
#define grpc_call_credentials_release grpc_call_credentials_release_import
|
356
356
|
typedef grpc_channel_credentials*(*grpc_composite_channel_credentials_create_type)(grpc_channel_credentials* channel_creds, grpc_call_credentials* call_creds, void* reserved);
|
357
357
|
extern grpc_composite_channel_credentials_create_type grpc_composite_channel_credentials_create_import;
|
358
358
|
#define grpc_composite_channel_credentials_create grpc_composite_channel_credentials_create_import
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -81,6 +81,7 @@ class TestTarget < Grpc::Testing::LoadBalancerStatsService::Service
|
|
81
81
|
watcher = {}
|
82
82
|
$watchers_mutex.synchronize do
|
83
83
|
watcher = {
|
84
|
+
"rpcs_by_method" => Hash.new(),
|
84
85
|
"rpcs_by_peer" => Hash.new(0),
|
85
86
|
"rpcs_needed" => req['num_rpcs'],
|
86
87
|
"no_remote_peer" => 0
|
@@ -95,17 +96,45 @@ class TestTarget < Grpc::Testing::LoadBalancerStatsService::Service
|
|
95
96
|
end
|
96
97
|
$watchers.delete_at($watchers.index(watcher))
|
97
98
|
end
|
99
|
+
# convert results into proper proto object
|
100
|
+
rpcs_by_method = {}
|
101
|
+
watcher['rpcs_by_method'].each do |rpc_name, rpcs_by_peer|
|
102
|
+
rpcs_by_method[rpc_name] = LoadBalancerStatsResponse::RpcsByPeer.new(
|
103
|
+
rpcs_by_peer: rpcs_by_peer
|
104
|
+
)
|
105
|
+
end
|
98
106
|
LoadBalancerStatsResponse.new(
|
107
|
+
rpcs_by_method: rpcs_by_method,
|
99
108
|
rpcs_by_peer: watcher['rpcs_by_peer'],
|
100
109
|
num_failures: watcher['no_remote_peer'] + watcher['rpcs_needed']
|
101
110
|
);
|
102
111
|
end
|
103
112
|
end
|
104
113
|
|
114
|
+
# execute 1 RPC and return remote hostname
|
115
|
+
def execute_rpc(op, fail_on_failed_rpcs)
|
116
|
+
remote_peer = ""
|
117
|
+
begin
|
118
|
+
op.execute
|
119
|
+
if op.metadata.key?('hostname')
|
120
|
+
remote_peer = op.metadata['hostname']
|
121
|
+
end
|
122
|
+
rescue GRPC::BadStatus => e
|
123
|
+
GRPC.logger.info("ruby xds: rpc failed:|#{e.message}|, " \
|
124
|
+
"this may or may not be expected")
|
125
|
+
if fail_on_failed_rpcs
|
126
|
+
raise e
|
127
|
+
end
|
128
|
+
end
|
129
|
+
remote_peer
|
130
|
+
end
|
131
|
+
|
105
132
|
# send 1 rpc every 1/qps second
|
106
|
-
def run_test_loop(stub, target_seconds_between_rpcs, fail_on_failed_rpcs
|
133
|
+
def run_test_loop(stub, target_seconds_between_rpcs, fail_on_failed_rpcs,
|
134
|
+
rpcs_to_send, metadata_to_send)
|
107
135
|
include Grpc::Testing
|
108
|
-
|
136
|
+
simple_req = SimpleRequest.new()
|
137
|
+
empty_req = Empty.new()
|
109
138
|
target_next_start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
110
139
|
while !$shutdown
|
111
140
|
now = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
@@ -121,25 +150,42 @@ def run_test_loop(stub, target_seconds_between_rpcs, fail_on_failed_rpcs)
|
|
121
150
|
target_next_start += target_seconds_between_rpcs
|
122
151
|
sleep(sleep_seconds)
|
123
152
|
end
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
153
|
+
deadline = GRPC::Core::TimeConsts::from_relative_time(30) # 30 seconds
|
154
|
+
results = {}
|
155
|
+
rpcs_to_send.each do |rpc|
|
156
|
+
metadata = metadata_to_send.key?(rpc) ? metadata_to_send[rpc] : {}
|
157
|
+
if rpc == 'UnaryCall'
|
158
|
+
op = stub.unary_call(simple_req,
|
159
|
+
metadata: metadata,
|
160
|
+
deadline: deadline,
|
161
|
+
return_op: true)
|
162
|
+
elsif rpc == 'EmptyCall'
|
163
|
+
op = stub.empty_call(empty_req,
|
164
|
+
metadata: metadata,
|
165
|
+
deadline: deadline,
|
166
|
+
return_op: true)
|
167
|
+
else
|
168
|
+
raise "Unsupported rpc %s" % [rpc]
|
134
169
|
end
|
170
|
+
results[rpc] = execute_rpc(op, fail_on_failed_rpcs)
|
135
171
|
end
|
136
172
|
$watchers_mutex.synchronize do
|
137
173
|
$watchers.each do |watcher|
|
174
|
+
# this is counted once when each group of all rpcs_to_send were done
|
138
175
|
watcher['rpcs_needed'] -= 1
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
176
|
+
results.each do |rpc_name, remote_peer|
|
177
|
+
if remote_peer.strip.empty?
|
178
|
+
# error is counted per individual RPC
|
179
|
+
watcher['no_remote_peer'] += 1
|
180
|
+
else
|
181
|
+
if not watcher['rpcs_by_method'].key?(rpc_name)
|
182
|
+
watcher['rpcs_by_method'][rpc_name] = Hash.new(0)
|
183
|
+
end
|
184
|
+
# increment the remote hostname distribution histogram
|
185
|
+
# both by overall, and broken down per RPC
|
186
|
+
watcher['rpcs_by_method'][rpc_name][remote_peer] += 1
|
187
|
+
watcher['rpcs_by_peer'][remote_peer] += 1
|
188
|
+
end
|
143
189
|
end
|
144
190
|
end
|
145
191
|
$watchers_cv.broadcast
|
@@ -149,6 +195,7 @@ end
|
|
149
195
|
|
150
196
|
# Args is used to hold the command line info.
|
151
197
|
Args = Struct.new(:fail_on_failed_rpcs, :num_channels,
|
198
|
+
:rpc, :metadata,
|
152
199
|
:server, :stats_port, :qps)
|
153
200
|
|
154
201
|
# validates the command line options, returning them as a Hash.
|
@@ -156,6 +203,8 @@ def parse_args
|
|
156
203
|
args = Args.new
|
157
204
|
args['fail_on_failed_rpcs'] = false
|
158
205
|
args['num_channels'] = 1
|
206
|
+
args['rpc'] = 'UnaryCall'
|
207
|
+
args['metadata'] = ''
|
159
208
|
OptionParser.new do |opts|
|
160
209
|
opts.on('--fail_on_failed_rpcs BOOL', ['false', 'true']) do |v|
|
161
210
|
args['fail_on_failed_rpcs'] = v == 'true'
|
@@ -163,6 +212,12 @@ def parse_args
|
|
163
212
|
opts.on('--num_channels CHANNELS', 'number of channels') do |v|
|
164
213
|
args['num_channels'] = v.to_i
|
165
214
|
end
|
215
|
+
opts.on('--rpc RPCS_TO_SEND', 'list of RPCs to send') do |v|
|
216
|
+
args['rpc'] = v
|
217
|
+
end
|
218
|
+
opts.on('--metadata METADATA_TO_SEND', 'metadata to send per RPC') do |v|
|
219
|
+
args['metadata'] = v
|
220
|
+
end
|
166
221
|
opts.on('--server SERVER_HOST', 'server hostname') do |v|
|
167
222
|
GRPC.logger.info("ruby xds: server address is #{v}")
|
168
223
|
args['server'] = v
|
@@ -195,11 +250,40 @@ def main
|
|
195
250
|
# The client just sends unary rpcs continuously in a regular interval
|
196
251
|
stub = create_stub(opts)
|
197
252
|
target_seconds_between_rpcs = (1.0 / opts['qps'].to_f)
|
253
|
+
rpcs_to_send = []
|
254
|
+
if opts['rpc']
|
255
|
+
rpcs_to_send = opts['rpc'].split(',')
|
256
|
+
end
|
257
|
+
# Convert 'metadata' input in the form of
|
258
|
+
# rpc1:k1:v1,rpc2:k2:v2,rpc1:k3:v3
|
259
|
+
# into
|
260
|
+
# {
|
261
|
+
# 'rpc1' => {
|
262
|
+
# 'k1' => 'v1',
|
263
|
+
# 'k3' => 'v3',
|
264
|
+
# },
|
265
|
+
# 'rpc2' => {
|
266
|
+
# 'k2' => 'v2'
|
267
|
+
# },
|
268
|
+
# }
|
269
|
+
metadata_to_send = {}
|
270
|
+
if opts['metadata']
|
271
|
+
metadata_entries = opts['metadata'].split(',')
|
272
|
+
metadata_entries.each do |e|
|
273
|
+
(rpc_name, metadata_key, metadata_value) = e.split(':')
|
274
|
+
# initialize if we haven't seen this rpc_name yet
|
275
|
+
if !metadata_to_send.key?(rpc_name)
|
276
|
+
metadata_to_send[rpc_name] = {}
|
277
|
+
end
|
278
|
+
metadata_to_send[rpc_name][metadata_key] = metadata_value
|
279
|
+
end
|
280
|
+
end
|
198
281
|
client_threads = Array.new
|
199
282
|
opts['num_channels'].times {
|
200
283
|
client_threads << Thread.new {
|
201
284
|
run_test_loop(stub, target_seconds_between_rpcs,
|
202
|
-
opts['fail_on_failed_rpcs']
|
285
|
+
opts['fail_on_failed_rpcs'],
|
286
|
+
rpcs_to_send, metadata_to_send)
|
203
287
|
}
|
204
288
|
}
|
205
289
|
|
@@ -50,6 +50,16 @@ describe GRPC::Core::ChannelCredentials do
|
|
50
50
|
blk = proc { ChannelCredentials.new(nil) }
|
51
51
|
expect(&blk).not_to raise_error
|
52
52
|
end
|
53
|
+
|
54
|
+
it 'fails gracefully with constructed with a nil private key' do
|
55
|
+
blk = proc { GRPC::Core::ChannelCredentials.new(nil, nil, '') }
|
56
|
+
expect(&blk).to raise_error
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'fails gracefully with constructed with a nil cert chain' do
|
60
|
+
blk = proc { GRPC::Core::ChannelCredentials.new(nil, '', nil) }
|
61
|
+
expect(&blk).to raise_error
|
62
|
+
end
|
53
63
|
end
|
54
64
|
|
55
65
|
describe '#compose' do
|
@@ -43,6 +43,16 @@ describe GRPC::ActiveCall do
|
|
43
43
|
@server = new_core_server_for_testing(nil)
|
44
44
|
server_port = @server.add_http2_port(host, :this_port_is_insecure)
|
45
45
|
@server.start
|
46
|
+
@received_rpcs_queue = Queue.new
|
47
|
+
@server_thread = Thread.new do
|
48
|
+
begin
|
49
|
+
received_rpc = @server.request_call
|
50
|
+
rescue GRPC::Core::CallError, StandardError => e
|
51
|
+
# enqueue the exception in this case as a way to indicate the error
|
52
|
+
received_rpc = e
|
53
|
+
end
|
54
|
+
@received_rpcs_queue.push(received_rpc)
|
55
|
+
end
|
46
56
|
@ch = GRPC::Core::Channel.new("0.0.0.0:#{server_port}", nil,
|
47
57
|
:this_channel_is_insecure)
|
48
58
|
end
|
@@ -50,6 +60,7 @@ describe GRPC::ActiveCall do
|
|
50
60
|
after(:each) do
|
51
61
|
@server.shutdown_and_notify(deadline)
|
52
62
|
@server.close
|
63
|
+
@server_thread.join
|
53
64
|
end
|
54
65
|
|
55
66
|
describe 'restricted view methods' do
|
@@ -105,7 +116,7 @@ describe GRPC::ActiveCall do
|
|
105
116
|
client_call.remote_send(msg)
|
106
117
|
|
107
118
|
# check that server rpc new was received
|
108
|
-
recvd_rpc = @
|
119
|
+
recvd_rpc = @received_rpcs_queue.pop
|
109
120
|
expect(recvd_rpc).to_not eq nil
|
110
121
|
recvd_call = recvd_rpc.call
|
111
122
|
|
@@ -130,7 +141,7 @@ describe GRPC::ActiveCall do
|
|
130
141
|
client_call.remote_send(msg)
|
131
142
|
|
132
143
|
# confirm that the message was marshalled
|
133
|
-
recvd_rpc = @
|
144
|
+
recvd_rpc = @received_rpcs_queue.pop
|
134
145
|
recvd_call = recvd_rpc.call
|
135
146
|
server_ops = {
|
136
147
|
CallOps::SEND_INITIAL_METADATA => nil
|
@@ -160,7 +171,7 @@ describe GRPC::ActiveCall do
|
|
160
171
|
call.run_batch(CallOps::SEND_CLOSE_FROM_CLIENT => nil) if f == 1
|
161
172
|
|
162
173
|
# confirm that the message was marshalled
|
163
|
-
recvd_rpc = @
|
174
|
+
recvd_rpc = @received_rpcs_queue.pop
|
164
175
|
recvd_call = recvd_rpc.call
|
165
176
|
server_ops = {
|
166
177
|
CallOps::SEND_INITIAL_METADATA => nil
|
@@ -321,7 +332,7 @@ describe GRPC::ActiveCall do
|
|
321
332
|
call = make_test_call
|
322
333
|
metadata = { k1: 'v1', k2: 'v2' }
|
323
334
|
ActiveCall.client_invoke(call, metadata)
|
324
|
-
recvd_rpc = @
|
335
|
+
recvd_rpc = @received_rpcs_queue.pop
|
325
336
|
recvd_call = recvd_rpc.call
|
326
337
|
expect(recvd_call).to_not be_nil
|
327
338
|
expect(recvd_rpc.metadata).to_not be_nil
|
@@ -339,7 +350,7 @@ describe GRPC::ActiveCall do
|
|
339
350
|
call = make_test_call
|
340
351
|
ActiveCall.client_invoke(call)
|
341
352
|
|
342
|
-
recvd_rpc = @
|
353
|
+
recvd_rpc = @received_rpcs_queue.pop
|
343
354
|
server_call = ActiveCall.new(
|
344
355
|
recvd_rpc.call,
|
345
356
|
@pass_through,
|
@@ -405,7 +416,7 @@ describe GRPC::ActiveCall do
|
|
405
416
|
client_call = make_test_call
|
406
417
|
ActiveCall.client_invoke(client_call)
|
407
418
|
|
408
|
-
recvd_rpc = @
|
419
|
+
recvd_rpc = @received_rpcs_queue.pop
|
409
420
|
recvd_call = recvd_rpc.call
|
410
421
|
|
411
422
|
server_call = ActiveCall.new(
|
@@ -575,7 +586,7 @@ describe GRPC::ActiveCall do
|
|
575
586
|
@client_call = make_test_call
|
576
587
|
@client_call.run_batch(CallOps::SEND_INITIAL_METADATA => {})
|
577
588
|
|
578
|
-
recvd_rpc = @
|
589
|
+
recvd_rpc = @received_rpcs_queue.pop
|
579
590
|
recvd_call = recvd_rpc.call
|
580
591
|
@server_call = ActiveCall.new(
|
581
592
|
recvd_call,
|
@@ -654,7 +665,7 @@ describe GRPC::ActiveCall do
|
|
654
665
|
end
|
655
666
|
|
656
667
|
def expect_server_to_be_invoked(**kw)
|
657
|
-
recvd_rpc = @
|
668
|
+
recvd_rpc = @received_rpcs_queue.pop
|
658
669
|
expect(recvd_rpc).to_not eq nil
|
659
670
|
recvd_call = recvd_rpc.call
|
660
671
|
recvd_call.run_batch(CallOps::SEND_INITIAL_METADATA => kw)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grpc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.32.0.pre1
|
5
5
|
platform: universal-darwin
|
6
6
|
authors:
|
7
7
|
- gRPC Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: src/ruby/bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-protobuf
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '3.
|
19
|
+
version: '3.13'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '3.
|
26
|
+
version: '3.13'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: googleapis-common-protos-types
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -346,9 +346,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
346
346
|
version: 2.8.dev
|
347
347
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
348
348
|
requirements:
|
349
|
-
- - "
|
349
|
+
- - ">"
|
350
350
|
- !ruby/object:Gem::Version
|
351
|
-
version:
|
351
|
+
version: 1.3.1
|
352
352
|
requirements: []
|
353
353
|
rubygems_version: 3.1.4
|
354
354
|
signing_key:
|