grpc 1.66.0-x64-mingw-ucrt → 1.67.0.pre1-x64-mingw-ucrt
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.
- checksums.yaml +4 -4
- data/grpc_c.64-ucrt.ruby +0 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -1
- data/src/ruby/ext/grpc/rb_call_credentials.c +34 -27
- data/src/ruby/ext/grpc/rb_channel.c +22 -16
- data/src/ruby/ext/grpc/rb_event_thread.c +3 -2
- data/src/ruby/ext/grpc/rb_grpc.c +9 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -10
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -15
- data/src/ruby/ext/grpc/rb_server.c +10 -8
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.2/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.3/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/generic/active_call.rb +8 -5
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/call_spec.rb +53 -40
- data/src/ruby/spec/channel_spec.rb +4 -2
- data/src/ruby/spec/client_server_spec.rb +148 -507
- data/src/ruby/spec/generic/active_call_spec.rb +64 -86
- data/src/ruby/spec/support/services.rb +3 -0
- metadata +3 -3
@@ -55,17 +55,20 @@ describe GRPC::ActiveCall do
|
|
55
55
|
end
|
56
56
|
@ch = GRPC::Core::Channel.new("0.0.0.0:#{server_port}", nil,
|
57
57
|
:this_channel_is_insecure)
|
58
|
+
@call = make_test_call
|
58
59
|
end
|
59
60
|
|
60
61
|
after(:each) do
|
61
62
|
@server.shutdown_and_notify(deadline)
|
62
63
|
@server.close
|
63
64
|
@server_thread.join
|
65
|
+
# Don't rely on GC to unref the call, since that can prevent
|
66
|
+
# the channel connectivity state polling thread from shutting down.
|
67
|
+
@call.close
|
64
68
|
end
|
65
69
|
|
66
70
|
describe 'restricted view methods' do
|
67
71
|
before(:each) do
|
68
|
-
@call = make_test_call
|
69
72
|
ActiveCall.client_invoke(@call)
|
70
73
|
@client_call = ActiveCall.new(@call, @pass_through,
|
71
74
|
@pass_through, deadline)
|
@@ -117,9 +120,8 @@ describe GRPC::ActiveCall do
|
|
117
120
|
|
118
121
|
describe '#remote_send' do
|
119
122
|
it 'allows a client to send a payload to the server', test: true do
|
120
|
-
call
|
121
|
-
ActiveCall.
|
122
|
-
client_call = ActiveCall.new(call, @pass_through,
|
123
|
+
ActiveCall.client_invoke(@call)
|
124
|
+
client_call = ActiveCall.new(@call, @pass_through,
|
123
125
|
@pass_through, deadline)
|
124
126
|
msg = 'message is a string'
|
125
127
|
client_call.remote_send(msg)
|
@@ -137,15 +139,14 @@ describe GRPC::ActiveCall do
|
|
137
139
|
expect(server_call.remote_read).to eq(msg)
|
138
140
|
# finish the call
|
139
141
|
server_call.send_initial_metadata
|
140
|
-
call.run_batch(CallOps::RECV_INITIAL_METADATA => nil)
|
141
|
-
send_and_receive_close_and_status(call, recvd_call)
|
142
|
+
@call.run_batch(CallOps::RECV_INITIAL_METADATA => nil)
|
143
|
+
send_and_receive_close_and_status(@call, recvd_call)
|
142
144
|
end
|
143
145
|
|
144
146
|
it 'marshals the payload using the marshal func' do
|
145
|
-
call
|
146
|
-
ActiveCall.client_invoke(call)
|
147
|
+
ActiveCall.client_invoke(@call)
|
147
148
|
marshal = proc { |x| 'marshalled:' + x }
|
148
|
-
client_call = ActiveCall.new(call, marshal, @pass_through, deadline)
|
149
|
+
client_call = ActiveCall.new(@call, marshal, @pass_through, deadline)
|
149
150
|
msg = 'message is a string'
|
150
151
|
client_call.remote_send(msg)
|
151
152
|
|
@@ -161,23 +162,22 @@ describe GRPC::ActiveCall do
|
|
161
162
|
metadata_received: true)
|
162
163
|
expect(server_call.remote_read).to eq('marshalled:' + msg)
|
163
164
|
# finish the call
|
164
|
-
call.run_batch(CallOps::RECV_INITIAL_METADATA => nil)
|
165
|
-
send_and_receive_close_and_status(call, recvd_call)
|
165
|
+
@call.run_batch(CallOps::RECV_INITIAL_METADATA => nil)
|
166
|
+
send_and_receive_close_and_status(@call, recvd_call)
|
166
167
|
end
|
167
168
|
|
168
169
|
TEST_WRITE_FLAGS = [WriteFlags::BUFFER_HINT, WriteFlags::NO_COMPRESS]
|
169
170
|
TEST_WRITE_FLAGS.each do |f|
|
170
171
|
it "successfully makes calls with write_flag set to #{f}" do
|
171
|
-
call
|
172
|
-
ActiveCall.client_invoke(call)
|
172
|
+
ActiveCall.client_invoke(@call)
|
173
173
|
marshal = proc { |x| 'marshalled:' + x }
|
174
|
-
client_call = ActiveCall.new(call, marshal,
|
174
|
+
client_call = ActiveCall.new(@call, marshal,
|
175
175
|
@pass_through, deadline)
|
176
176
|
msg = 'message is a string'
|
177
177
|
client_call.write_flag = f
|
178
178
|
client_call.remote_send(msg)
|
179
179
|
# flush the message in case writes are set to buffered
|
180
|
-
call.run_batch(CallOps::SEND_CLOSE_FROM_CLIENT => nil) if f == 1
|
180
|
+
@call.run_batch(CallOps::SEND_CLOSE_FROM_CLIENT => nil) if f == 1
|
181
181
|
|
182
182
|
# confirm that the message was marshalled
|
183
183
|
recvd_rpc = @received_rpcs_queue.pop
|
@@ -199,9 +199,8 @@ describe GRPC::ActiveCall do
|
|
199
199
|
|
200
200
|
describe 'sending initial metadata', send_initial_metadata: true do
|
201
201
|
it 'sends metadata before sending a message if it hasnt been sent yet' do
|
202
|
-
call = make_test_call
|
203
202
|
@client_call = ActiveCall.new(
|
204
|
-
call,
|
203
|
+
@call,
|
205
204
|
@pass_through,
|
206
205
|
@pass_through,
|
207
206
|
deadline,
|
@@ -213,13 +212,13 @@ describe GRPC::ActiveCall do
|
|
213
212
|
|
214
213
|
message = 'phony message'
|
215
214
|
|
216
|
-
expect(call).to(
|
215
|
+
expect(@call).to(
|
217
216
|
receive(:run_batch)
|
218
217
|
.with(
|
219
218
|
hash_including(
|
220
219
|
CallOps::SEND_INITIAL_METADATA => metadata)).once)
|
221
220
|
|
222
|
-
expect(call).to(
|
221
|
+
expect(@call).to(
|
223
222
|
receive(:run_batch).with(hash_including(
|
224
223
|
CallOps::SEND_MESSAGE => message)).once)
|
225
224
|
@client_call.remote_send(message)
|
@@ -228,14 +227,12 @@ describe GRPC::ActiveCall do
|
|
228
227
|
end
|
229
228
|
|
230
229
|
it 'doesnt send metadata if it thinks its already been sent' do
|
231
|
-
|
232
|
-
|
233
|
-
@client_call = ActiveCall.new(call,
|
230
|
+
@client_call = ActiveCall.new(@call,
|
234
231
|
@pass_through,
|
235
232
|
@pass_through,
|
236
233
|
deadline)
|
237
234
|
expect(@client_call.metadata_sent).to eql(true)
|
238
|
-
expect(call).to(
|
235
|
+
expect(@call).to(
|
239
236
|
receive(:run_batch).with(hash_including(
|
240
237
|
CallOps::SEND_INITIAL_METADATA)).never)
|
241
238
|
|
@@ -243,9 +240,7 @@ describe GRPC::ActiveCall do
|
|
243
240
|
end
|
244
241
|
|
245
242
|
it 'sends metadata if it is explicitly sent and ok to do so' do
|
246
|
-
|
247
|
-
|
248
|
-
@client_call = ActiveCall.new(call,
|
243
|
+
@client_call = ActiveCall.new(@call,
|
249
244
|
@pass_through,
|
250
245
|
@pass_through,
|
251
246
|
deadline,
|
@@ -257,7 +252,7 @@ describe GRPC::ActiveCall do
|
|
257
252
|
@client_call.merge_metadata_to_send(metadata)
|
258
253
|
expect(@client_call.metadata_to_send).to eq(metadata)
|
259
254
|
|
260
|
-
expect(call).to(
|
255
|
+
expect(@call).to(
|
261
256
|
receive(:run_batch).with(hash_including(
|
262
257
|
CallOps::SEND_INITIAL_METADATA =>
|
263
258
|
metadata)).once)
|
@@ -265,9 +260,7 @@ describe GRPC::ActiveCall do
|
|
265
260
|
end
|
266
261
|
|
267
262
|
it 'explicit sending does nothing if metadata has already been sent' do
|
268
|
-
|
269
|
-
|
270
|
-
@client_call = ActiveCall.new(call,
|
263
|
+
@client_call = ActiveCall.new(@call,
|
271
264
|
@pass_through,
|
272
265
|
@pass_through,
|
273
266
|
deadline)
|
@@ -284,7 +277,6 @@ describe GRPC::ActiveCall do
|
|
284
277
|
|
285
278
|
describe '#merge_metadata_to_send', merge_metadata_to_send: true do
|
286
279
|
it 'adds to existing metadata when there is existing metadata to send' do
|
287
|
-
call = make_test_call
|
288
280
|
starting_metadata = {
|
289
281
|
k1: 'key1_val',
|
290
282
|
k2: 'key2_val',
|
@@ -292,7 +284,7 @@ describe GRPC::ActiveCall do
|
|
292
284
|
}
|
293
285
|
|
294
286
|
@client_call = ActiveCall.new(
|
295
|
-
call,
|
287
|
+
@call,
|
296
288
|
@pass_through, @pass_through,
|
297
289
|
deadline,
|
298
290
|
started: false,
|
@@ -318,9 +310,8 @@ describe GRPC::ActiveCall do
|
|
318
310
|
end
|
319
311
|
|
320
312
|
it 'fails when initial metadata has already been sent' do
|
321
|
-
call = make_test_call
|
322
313
|
@client_call = ActiveCall.new(
|
323
|
-
call,
|
314
|
+
@call,
|
324
315
|
@pass_through,
|
325
316
|
@pass_through,
|
326
317
|
deadline,
|
@@ -338,9 +329,8 @@ describe GRPC::ActiveCall do
|
|
338
329
|
|
339
330
|
describe '#client_invoke' do
|
340
331
|
it 'sends metadata to the server when present' do
|
341
|
-
call = make_test_call
|
342
332
|
metadata = { k1: 'v1', k2: 'v2' }
|
343
|
-
ActiveCall.client_invoke(call, metadata)
|
333
|
+
ActiveCall.client_invoke(@call, metadata)
|
344
334
|
recvd_rpc = @received_rpcs_queue.pop
|
345
335
|
recvd_call = recvd_rpc.call
|
346
336
|
expect(recvd_call).to_not be_nil
|
@@ -349,15 +339,14 @@ describe GRPC::ActiveCall do
|
|
349
339
|
expect(recvd_rpc.metadata['k2']).to eq('v2')
|
350
340
|
# finish the call
|
351
341
|
recvd_call.run_batch(CallOps::SEND_INITIAL_METADATA => {})
|
352
|
-
call.run_batch(CallOps::RECV_INITIAL_METADATA => nil)
|
353
|
-
send_and_receive_close_and_status(call, recvd_call)
|
342
|
+
@call.run_batch(CallOps::RECV_INITIAL_METADATA => nil)
|
343
|
+
send_and_receive_close_and_status(@call, recvd_call)
|
354
344
|
end
|
355
345
|
end
|
356
346
|
|
357
347
|
describe '#send_status', send_status: true do
|
358
348
|
it 'works when no metadata or messages have been sent yet' do
|
359
|
-
call
|
360
|
-
ActiveCall.client_invoke(call)
|
349
|
+
ActiveCall.client_invoke(@call)
|
361
350
|
|
362
351
|
recvd_rpc = @received_rpcs_queue.pop
|
363
352
|
server_call = ActiveCall.new(
|
@@ -375,9 +364,8 @@ describe GRPC::ActiveCall do
|
|
375
364
|
|
376
365
|
describe '#remote_read', remote_read: true do
|
377
366
|
it 'reads the response sent by a server' do
|
378
|
-
call
|
379
|
-
ActiveCall.
|
380
|
-
client_call = ActiveCall.new(call, @pass_through,
|
367
|
+
ActiveCall.client_invoke(@call)
|
368
|
+
client_call = ActiveCall.new(@call, @pass_through,
|
381
369
|
@pass_through, deadline)
|
382
370
|
msg = 'message is a string'
|
383
371
|
client_call.remote_send(msg)
|
@@ -385,13 +373,12 @@ describe GRPC::ActiveCall do
|
|
385
373
|
server_call.remote_send('server_response')
|
386
374
|
expect(client_call.remote_read).to eq('server_response')
|
387
375
|
send_and_receive_close_and_status(
|
388
|
-
call, inner_call_of_active_call(server_call))
|
376
|
+
@call, inner_call_of_active_call(server_call))
|
389
377
|
end
|
390
378
|
|
391
379
|
it 'saves no metadata when the server adds no metadata' do
|
392
|
-
call
|
393
|
-
ActiveCall.
|
394
|
-
client_call = ActiveCall.new(call, @pass_through,
|
380
|
+
ActiveCall.client_invoke(@call)
|
381
|
+
client_call = ActiveCall.new(@call, @pass_through,
|
395
382
|
@pass_through, deadline)
|
396
383
|
msg = 'message is a string'
|
397
384
|
client_call.remote_send(msg)
|
@@ -401,13 +388,12 @@ describe GRPC::ActiveCall do
|
|
401
388
|
client_call.remote_read
|
402
389
|
expect(client_call.metadata).to eq({})
|
403
390
|
send_and_receive_close_and_status(
|
404
|
-
call, inner_call_of_active_call(server_call))
|
391
|
+
@call, inner_call_of_active_call(server_call))
|
405
392
|
end
|
406
393
|
|
407
394
|
it 'saves metadata add by the server' do
|
408
|
-
call
|
409
|
-
ActiveCall.
|
410
|
-
client_call = ActiveCall.new(call, @pass_through,
|
395
|
+
ActiveCall.client_invoke(@call)
|
396
|
+
client_call = ActiveCall.new(@call, @pass_through,
|
411
397
|
@pass_through, deadline)
|
412
398
|
msg = 'message is a string'
|
413
399
|
client_call.remote_send(msg)
|
@@ -418,12 +404,11 @@ describe GRPC::ActiveCall do
|
|
418
404
|
expected = { 'k1' => 'v1', 'k2' => 'v2' }
|
419
405
|
expect(client_call.metadata).to eq(expected)
|
420
406
|
send_and_receive_close_and_status(
|
421
|
-
call, inner_call_of_active_call(server_call))
|
407
|
+
@call, inner_call_of_active_call(server_call))
|
422
408
|
end
|
423
409
|
|
424
410
|
it 'get a status from server when nothing else sent from server' do
|
425
|
-
|
426
|
-
ActiveCall.client_invoke(client_call)
|
411
|
+
ActiveCall.client_invoke(@call)
|
427
412
|
|
428
413
|
recvd_rpc = @received_rpcs_queue.pop
|
429
414
|
recvd_call = recvd_rpc.call
|
@@ -438,22 +423,21 @@ describe GRPC::ActiveCall do
|
|
438
423
|
server_call.send_status(OK, 'OK')
|
439
424
|
|
440
425
|
# Check that we can receive initial metadata and a status
|
441
|
-
|
426
|
+
@call.run_batch(
|
442
427
|
CallOps::RECV_INITIAL_METADATA => nil)
|
443
|
-
batch_result =
|
428
|
+
batch_result = @call.run_batch(
|
444
429
|
CallOps::RECV_STATUS_ON_CLIENT => nil)
|
445
430
|
|
446
431
|
expect(batch_result.status.code).to eq(OK)
|
447
432
|
end
|
448
433
|
|
449
434
|
it 'get a nil msg before a status when an OK status is sent' do
|
450
|
-
call
|
451
|
-
ActiveCall.
|
452
|
-
client_call = ActiveCall.new(call, @pass_through,
|
435
|
+
ActiveCall.client_invoke(@call)
|
436
|
+
client_call = ActiveCall.new(@call, @pass_through,
|
453
437
|
@pass_through, deadline)
|
454
438
|
msg = 'message is a string'
|
455
439
|
client_call.remote_send(msg)
|
456
|
-
call.run_batch(CallOps::SEND_CLOSE_FROM_CLIENT => nil)
|
440
|
+
@call.run_batch(CallOps::SEND_CLOSE_FROM_CLIENT => nil)
|
457
441
|
server_call = expect_server_to_receive(msg)
|
458
442
|
server_call.remote_send('server_response')
|
459
443
|
server_call.send_status(OK, 'OK')
|
@@ -463,10 +447,9 @@ describe GRPC::ActiveCall do
|
|
463
447
|
end
|
464
448
|
|
465
449
|
it 'unmarshals the response using the unmarshal func' do
|
466
|
-
call
|
467
|
-
ActiveCall.client_invoke(call)
|
450
|
+
ActiveCall.client_invoke(@call)
|
468
451
|
unmarshal = proc { |x| 'unmarshalled:' + x }
|
469
|
-
client_call = ActiveCall.new(call, @pass_through,
|
452
|
+
client_call = ActiveCall.new(@call, @pass_through,
|
470
453
|
unmarshal, deadline)
|
471
454
|
|
472
455
|
# confirm the client receives the unmarshalled message
|
@@ -476,14 +459,13 @@ describe GRPC::ActiveCall do
|
|
476
459
|
server_call.remote_send('server_response')
|
477
460
|
expect(client_call.remote_read).to eq('unmarshalled:server_response')
|
478
461
|
send_and_receive_close_and_status(
|
479
|
-
call, inner_call_of_active_call(server_call))
|
462
|
+
@call, inner_call_of_active_call(server_call))
|
480
463
|
end
|
481
464
|
end
|
482
465
|
|
483
466
|
describe '#each_remote_read' do
|
484
467
|
it 'creates an Enumerator' do
|
485
|
-
|
486
|
-
client_call = ActiveCall.new(call, @pass_through,
|
468
|
+
client_call = ActiveCall.new(@call, @pass_through,
|
487
469
|
@pass_through, deadline)
|
488
470
|
expect(client_call.each_remote_read).to be_a(Enumerator)
|
489
471
|
# finish the call
|
@@ -491,9 +473,8 @@ describe GRPC::ActiveCall do
|
|
491
473
|
end
|
492
474
|
|
493
475
|
it 'the returned enumerator can read n responses' do
|
494
|
-
call
|
495
|
-
ActiveCall.
|
496
|
-
client_call = ActiveCall.new(call, @pass_through,
|
476
|
+
ActiveCall.client_invoke(@call)
|
477
|
+
client_call = ActiveCall.new(@call, @pass_through,
|
497
478
|
@pass_through, deadline)
|
498
479
|
msg = 'message is a string'
|
499
480
|
reply = 'server_response'
|
@@ -506,18 +487,17 @@ describe GRPC::ActiveCall do
|
|
506
487
|
expect(e.next).to eq(reply)
|
507
488
|
end
|
508
489
|
send_and_receive_close_and_status(
|
509
|
-
call, inner_call_of_active_call(server_call))
|
490
|
+
@call, inner_call_of_active_call(server_call))
|
510
491
|
end
|
511
492
|
|
512
493
|
it 'the returns an enumerator that stops after an OK Status' do
|
513
|
-
call
|
514
|
-
ActiveCall.
|
515
|
-
client_call = ActiveCall.new(call, @pass_through,
|
494
|
+
ActiveCall.client_invoke(@call)
|
495
|
+
client_call = ActiveCall.new(@call, @pass_through,
|
516
496
|
@pass_through, deadline)
|
517
497
|
msg = 'message is a string'
|
518
498
|
reply = 'server_response'
|
519
499
|
client_call.remote_send(msg)
|
520
|
-
call.run_batch(CallOps::SEND_CLOSE_FROM_CLIENT => nil)
|
500
|
+
@call.run_batch(CallOps::SEND_CLOSE_FROM_CLIENT => nil)
|
521
501
|
server_call = expect_server_to_receive(msg)
|
522
502
|
e = client_call.each_remote_read
|
523
503
|
n = 3 # arbitrary value > 1
|
@@ -532,14 +512,13 @@ describe GRPC::ActiveCall do
|
|
532
512
|
|
533
513
|
describe '#closing the call from the client' do
|
534
514
|
it 'finishes ok if the server sends a status response' do
|
535
|
-
call
|
536
|
-
ActiveCall.
|
537
|
-
client_call = ActiveCall.new(call, @pass_through,
|
515
|
+
ActiveCall.client_invoke(@call)
|
516
|
+
client_call = ActiveCall.new(@call, @pass_through,
|
538
517
|
@pass_through, deadline)
|
539
518
|
msg = 'message is a string'
|
540
519
|
client_call.remote_send(msg)
|
541
520
|
expect do
|
542
|
-
call.run_batch(CallOps::SEND_CLOSE_FROM_CLIENT => nil)
|
521
|
+
@call.run_batch(CallOps::SEND_CLOSE_FROM_CLIENT => nil)
|
543
522
|
end.to_not raise_error
|
544
523
|
server_call = expect_server_to_receive(msg)
|
545
524
|
server_call.remote_send('server_response')
|
@@ -549,9 +528,8 @@ describe GRPC::ActiveCall do
|
|
549
528
|
end
|
550
529
|
|
551
530
|
it 'finishes ok if the server sends an early status response' do
|
552
|
-
call
|
553
|
-
ActiveCall.
|
554
|
-
client_call = ActiveCall.new(call, @pass_through,
|
531
|
+
ActiveCall.client_invoke(@call)
|
532
|
+
client_call = ActiveCall.new(@call, @pass_through,
|
555
533
|
@pass_through, deadline)
|
556
534
|
msg = 'message is a string'
|
557
535
|
client_call.remote_send(msg)
|
@@ -560,15 +538,14 @@ describe GRPC::ActiveCall do
|
|
560
538
|
server_call.send_status(OK, 'status code is OK')
|
561
539
|
expect(client_call.remote_read).to eq('server_response')
|
562
540
|
expect do
|
563
|
-
call.run_batch(CallOps::SEND_CLOSE_FROM_CLIENT => nil)
|
541
|
+
@call.run_batch(CallOps::SEND_CLOSE_FROM_CLIENT => nil)
|
564
542
|
end.to_not raise_error
|
565
543
|
expect { client_call.receive_and_check_status }.to_not raise_error
|
566
544
|
end
|
567
545
|
|
568
546
|
it 'finishes ok if SEND_CLOSE and RECV_STATUS has been sent' do
|
569
|
-
call
|
570
|
-
ActiveCall.
|
571
|
-
client_call = ActiveCall.new(call, @pass_through,
|
547
|
+
ActiveCall.client_invoke(@call)
|
548
|
+
client_call = ActiveCall.new(@call, @pass_through,
|
572
549
|
@pass_through, deadline)
|
573
550
|
msg = 'message is a string'
|
574
551
|
client_call.remote_send(msg)
|
@@ -577,7 +554,7 @@ describe GRPC::ActiveCall do
|
|
577
554
|
server_call.send_status(OK, 'status code is OK')
|
578
555
|
expect(client_call.remote_read).to eq('server_response')
|
579
556
|
expect do
|
580
|
-
call.run_batch(
|
557
|
+
@call.run_batch(
|
581
558
|
CallOps::SEND_CLOSE_FROM_CLIENT => nil,
|
582
559
|
CallOps::RECV_STATUS_ON_CLIENT => nil)
|
583
560
|
end.to_not raise_error
|
@@ -631,6 +608,7 @@ describe GRPC::ActiveCall do
|
|
631
608
|
batch_result = @client_call.run_batch(
|
632
609
|
CallOps::RECV_STATUS_ON_CLIENT => nil)
|
633
610
|
expect(batch_result.status.code).to eq(@server_status)
|
611
|
+
@client_call.close
|
634
612
|
end
|
635
613
|
|
636
614
|
it 'sends the initial metadata implicitly if not already sent' do
|
@@ -41,14 +41,17 @@ class EchoService
|
|
41
41
|
rpc :a_bidi_rpc, stream(EchoMsg), stream(EchoMsg)
|
42
42
|
rpc :a_client_streaming_rpc_unimplemented, stream(EchoMsg), EchoMsg
|
43
43
|
attr_reader :received_md
|
44
|
+
attr_accessor :on_call_started
|
44
45
|
|
45
46
|
def initialize(**kw)
|
46
47
|
@trailing_metadata = kw
|
47
48
|
@received_md = []
|
49
|
+
@on_call_started = nil
|
48
50
|
end
|
49
51
|
|
50
52
|
def an_rpc(req, call)
|
51
53
|
GRPC.logger.info('echo service received a request')
|
54
|
+
on_call_started&.call(call)
|
52
55
|
call.output_metadata.update(@trailing_metadata)
|
53
56
|
@received_md << call.metadata unless call.metadata.nil?
|
54
57
|
req
|
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.67.0.pre1
|
5
5
|
platform: x64-mingw-ucrt
|
6
6
|
authors:
|
7
7
|
- gRPC Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: src/ruby/bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-protobuf
|
@@ -358,7 +358,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
358
358
|
- !ruby/object:Gem::Version
|
359
359
|
version: '0'
|
360
360
|
requirements: []
|
361
|
-
rubygems_version: 3.5.
|
361
|
+
rubygems_version: 3.5.18
|
362
362
|
signing_key:
|
363
363
|
specification_version: 4
|
364
364
|
summary: GRPC system in Ruby
|