aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ruby/spec/generic
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2016-05-24 06:55:28 -0700
committerGravatar Craig Tiller <ctiller@google.com>2016-05-24 06:55:28 -0700
commit48abdde19722a9d24d4f590b9d197db29f498ed1 (patch)
tree97f138ce898ff271d2ee4606996c446fb3648daa /src/ruby/spec/generic
parent77758f5cb9f913a891be231f24eaa8306d5047b3 (diff)
parent6db0232c3abe800a302d5cc889e4cadf060e221c (diff)
Merge github.com:grpc/grpc into error
Diffstat (limited to 'src/ruby/spec/generic')
-rw-r--r--src/ruby/spec/generic/active_call_spec.rb5
-rw-r--r--src/ruby/spec/generic/client_stub_spec.rb51
-rw-r--r--src/ruby/spec/generic/rpc_desc_spec.rb22
-rw-r--r--src/ruby/spec/generic/rpc_server_spec.rb103
4 files changed, 83 insertions, 98 deletions
diff --git a/src/ruby/spec/generic/active_call_spec.rb b/src/ruby/spec/generic/active_call_spec.rb
index c0181e21fb..d9c9780c93 100644
--- a/src/ruby/spec/generic/active_call_spec.rb
+++ b/src/ruby/spec/generic/active_call_spec.rb
@@ -159,9 +159,10 @@ describe GRPC::ActiveCall do
end
describe '#client_invoke' do
- it 'sends keywords as metadata to the server when the are present' do
+ it 'sends metadata to the server when present' do
call = make_test_call
- ActiveCall.client_invoke(call, @client_queue, k1: 'v1', k2: 'v2')
+ metadata = { k1: 'v1', k2: 'v2' }
+ ActiveCall.client_invoke(call, @client_queue, metadata)
recvd_rpc = @server.request_call(@server_queue, @server_tag, deadline)
recvd_call = recvd_rpc.call
expect(recvd_call).to_not be_nil
diff --git a/src/ruby/spec/generic/client_stub_spec.rb b/src/ruby/spec/generic/client_stub_spec.rb
index dd8e2e9f7a..168e7fb791 100644
--- a/src/ruby/spec/generic/client_stub_spec.rb
+++ b/src/ruby/spec/generic/client_stub_spec.rb
@@ -68,15 +68,7 @@ describe 'ClientStub' do
describe '#new' do
let(:fake_host) { 'localhost:0' }
it 'can be created from a host and args' do
- opts = { a_channel_arg: 'an_arg' }
- blk = proc do
- GRPC::ClientStub.new(fake_host, @cq, :this_channel_is_insecure, **opts)
- end
- expect(&blk).not_to raise_error
- end
-
- it 'can be created with a default deadline' do
- opts = { a_channel_arg: 'an_arg', deadline: 5 }
+ opts = { channel_args: { a_channel_arg: 'an_arg' } }
blk = proc do
GRPC::ClientStub.new(fake_host, @cq, :this_channel_is_insecure, **opts)
end
@@ -84,7 +76,10 @@ describe 'ClientStub' do
end
it 'can be created with an channel override' do
- opts = { a_channel_arg: 'an_arg', channel_override: @ch }
+ opts = {
+ channel_args: { a_channel_arg: 'an_arg' },
+ channel_override: @ch
+ }
blk = proc do
GRPC::ClientStub.new(fake_host, @cq, :this_channel_is_insecure, **opts)
end
@@ -93,7 +88,10 @@ describe 'ClientStub' do
it 'cannot be created with a bad channel override' do
blk = proc do
- opts = { a_channel_arg: 'an_arg', channel_override: Object.new }
+ opts = {
+ channel_args: { a_channel_arg: 'an_arg' },
+ channel_override: Object.new
+ }
GRPC::ClientStub.new(fake_host, @cq, :this_channel_is_insecure, **opts)
end
expect(&blk).to raise_error
@@ -101,7 +99,7 @@ describe 'ClientStub' do
it 'cannot be created with bad credentials' do
blk = proc do
- opts = { a_channel_arg: 'an_arg' }
+ opts = { channel_args: { a_channel_arg: 'an_arg' } }
GRPC::ClientStub.new(fake_host, @cq, Object.new, **opts)
end
expect(&blk).to raise_error
@@ -111,8 +109,10 @@ describe 'ClientStub' do
certs = load_test_certs
blk = proc do
opts = {
- GRPC::Core::Channel::SSL_TARGET => 'foo.test.google.fr',
- a_channel_arg: 'an_arg'
+ channel_args: {
+ GRPC::Core::Channel::SSL_TARGET => 'foo.test.google.fr',
+ a_channel_arg: 'an_arg'
+ }
}
creds = GRPC::Core::ChannelCredentials.new(certs[0], nil, nil)
GRPC::ClientStub.new(fake_host, @cq, creds, **opts)
@@ -172,7 +172,7 @@ describe 'ClientStub' do
describe 'without a call operation' do
def get_response(stub)
stub.request_response(@method, @sent_msg, noop, noop,
- k1: 'v1', k2: 'v2')
+ metadata: { k1: 'v1', k2: 'v2' })
end
it_behaves_like 'request response'
@@ -181,7 +181,8 @@ describe 'ClientStub' do
describe 'via a call operation' do
def get_response(stub)
op = stub.request_response(@method, @sent_msg, noop, noop,
- return_op: true, k1: 'v1', k2: 'v2')
+ return_op: true,
+ metadata: { k1: 'v1', k2: 'v2' })
expect(op).to be_a(GRPC::ActiveCall::Operation)
op.execute
end
@@ -196,7 +197,7 @@ describe 'ClientStub' do
server_port = create_test_server
host = "localhost:#{server_port}"
@stub = GRPC::ClientStub.new(host, @cq, :this_channel_is_insecure)
- @options = { k1: 'v1', k2: 'v2' }
+ @metadata = { k1: 'v1', k2: 'v2' }
@sent_msgs = Array.new(3) { |i| 'msg_' + (i + 1).to_s }
@resp = 'a_reply'
end
@@ -208,7 +209,7 @@ describe 'ClientStub' do
end
it 'should send metadata to the server ok' do
- th = run_client_streamer(@sent_msgs, @resp, @pass, @options)
+ th = run_client_streamer(@sent_msgs, @resp, @pass, **@metadata)
expect(get_response(@stub)).to eq(@resp)
th.join
end
@@ -221,7 +222,7 @@ describe 'ClientStub' do
end
it 'should raise ArgumentError if metadata contains invalid values' do
- @options.merge!(k3: 3)
+ @metadata.merge!(k3: 3)
expect do
get_response(@stub)
end.to raise_error(ArgumentError,
@@ -231,7 +232,8 @@ describe 'ClientStub' do
describe 'without a call operation' do
def get_response(stub)
- stub.client_streamer(@method, @sent_msgs, noop, noop, @options)
+ stub.client_streamer(@method, @sent_msgs, noop, noop,
+ metadata: @metadata)
end
it_behaves_like 'client streaming'
@@ -240,7 +242,7 @@ describe 'ClientStub' do
describe 'via a call operation' do
def get_response(stub)
op = stub.client_streamer(@method, @sent_msgs, noop, noop,
- @options.merge(return_op: true))
+ return_op: true, metadata: @metadata)
expect(op).to be_a(GRPC::ActiveCall::Operation)
op.execute
end
@@ -290,7 +292,7 @@ describe 'ClientStub' do
describe 'without a call operation' do
def get_responses(stub)
e = stub.server_streamer(@method, @sent_msg, noop, noop,
- k1: 'v1', k2: 'v2')
+ metadata: { k1: 'v1', k2: 'v2' })
expect(e).to be_a(Enumerator)
e
end
@@ -301,7 +303,8 @@ describe 'ClientStub' do
describe 'via a call operation' do
def get_responses(stub)
op = stub.server_streamer(@method, @sent_msg, noop, noop,
- return_op: true, k1: 'v1', k2: 'v2')
+ return_op: true,
+ metadata: { k1: 'v1', k2: 'v2' })
expect(op).to be_a(GRPC::ActiveCall::Operation)
e = op.execute
expect(e).to be_a(Enumerator)
@@ -383,7 +386,7 @@ describe 'ClientStub' do
stub = GRPC::ClientStub.new(@host, @cq, :this_channel_is_insecure)
blk = proc do
e = stub.bidi_streamer(@method, @sent_msgs, noop, noop,
- timeout: 0.001)
+ deadline: from_relative_time(0.001))
e.collect { |r| r }
end
expect(&blk).to raise_error GRPC::BadStatus, /Deadline Exceeded/
diff --git a/src/ruby/spec/generic/rpc_desc_spec.rb b/src/ruby/spec/generic/rpc_desc_spec.rb
index 083632a080..d2080b7ca2 100644
--- a/src/ruby/spec/generic/rpc_desc_spec.rb
+++ b/src/ruby/spec/generic/rpc_desc_spec.rb
@@ -56,14 +56,14 @@ describe GRPC::RpcDesc do
it 'sends the specified status if BadStatus is raised' do
expect(@call).to receive(:remote_read).once.and_return(Object.new)
expect(@call).to receive(:send_status).once.with(@bs_code, 'NOK', false,
- {})
+ metadata: {})
this_desc.run_server_method(@call, method(:bad_status))
end
it 'sends status UNKNOWN if other StandardErrors are raised' do
expect(@call).to receive(:remote_read).once.and_return(Object.new)
expect(@call).to receive(:send_status) .once.with(UNKNOWN, @no_reason,
- false, {})
+ false, metadata: {})
this_desc.run_server_method(@call, method(:other_error))
end
@@ -93,7 +93,7 @@ describe GRPC::RpcDesc do
expect(@call).to receive(:remote_send).once.with(@ok_response)
expect(@call).to receive(:output_metadata).and_return(fake_md)
expect(@call).to receive(:send_status).once.with(OK, 'OK', true,
- **fake_md)
+ metadata: fake_md)
this_desc.run_server_method(@call, method(:fake_reqresp))
end
end
@@ -106,13 +106,13 @@ describe GRPC::RpcDesc do
it 'sends the specified status if BadStatus is raised' do
expect(@call).to receive(:send_status).once.with(@bs_code, 'NOK', false,
- {})
+ metadata: {})
@client_streamer.run_server_method(@call, method(:bad_status_alt))
end
it 'sends status UNKNOWN if other StandardErrors are raised' do
- expect(@call).to receive(:send_status) .once.with(UNKNOWN, @no_reason,
- false, {})
+ expect(@call).to receive(:send_status).once.with(UNKNOWN, @no_reason,
+ false, metadata: {})
@client_streamer.run_server_method(@call, method(:other_error_alt))
end
@@ -128,7 +128,7 @@ describe GRPC::RpcDesc do
expect(@call).to receive(:remote_send).once.with(@ok_response)
expect(@call).to receive(:output_metadata).and_return(fake_md)
expect(@call).to receive(:send_status).once.with(OK, 'OK', true,
- **fake_md)
+ metadata: fake_md)
@client_streamer.run_server_method(@call, method(:fake_clstream))
end
end
@@ -148,7 +148,7 @@ describe GRPC::RpcDesc do
expect(@call).to receive(:remote_send).twice.with(@ok_response)
expect(@call).to receive(:output_metadata).and_return(fake_md)
expect(@call).to receive(:send_status).once.with(OK, 'OK', true,
- **fake_md)
+ metadata: fake_md)
@server_streamer.run_server_method(@call, method(:fake_svstream))
end
end
@@ -165,14 +165,14 @@ describe GRPC::RpcDesc do
e = GRPC::BadStatus.new(@bs_code, 'NOK')
expect(@call).to receive(:run_server_bidi).and_raise(e)
expect(@call).to receive(:send_status).once.with(@bs_code, 'NOK', false,
- {})
+ metadata: {})
@bidi_streamer.run_server_method(@call, method(:bad_status_alt))
end
it 'sends status UNKNOWN if other StandardErrors are raised' do
expect(@call).to receive(:run_server_bidi).and_raise(StandardError)
expect(@call).to receive(:send_status).once.with(UNKNOWN, @no_reason,
- false, {})
+ false, metadata: {})
@bidi_streamer.run_server_method(@call, method(:other_error_alt))
end
@@ -180,7 +180,7 @@ describe GRPC::RpcDesc do
expect(@call).to receive(:run_server_bidi)
expect(@call).to receive(:output_metadata).and_return(fake_md)
expect(@call).to receive(:send_status).once.with(OK, 'OK', true,
- **fake_md)
+ metadata: fake_md)
@bidi_streamer.run_server_method(@call, method(:fake_bidistream))
end
end
diff --git a/src/ruby/spec/generic/rpc_server_spec.rb b/src/ruby/spec/generic/rpc_server_spec.rb
index 2a42736237..943502cea2 100644
--- a/src/ruby/spec/generic/rpc_server_spec.rb
+++ b/src/ruby/spec/generic/rpc_server_spec.rb
@@ -99,7 +99,7 @@ class FailingService
end
def an_rpc(_req, _call)
- fail GRPC::BadStatus.new(@code, @details, **@md)
+ fail GRPC::BadStatus.new(@code, @details, @md)
end
end
@@ -137,24 +137,11 @@ describe GRPC::RpcServer do
@noop = proc { |x| x }
@server_queue = GRPC::Core::CompletionQueue.new
- server_host = '0.0.0.0:0'
- @server = GRPC::Core::Server.new(@server_queue, nil)
- server_port = @server.add_http2_port(server_host, :this_port_is_insecure)
- @host = "localhost:#{server_port}"
- @ch = GRPC::Core::Channel.new(@host, nil, :this_channel_is_insecure)
end
describe '#new' do
it 'can be created with just some args' do
- opts = { a_channel_arg: 'an_arg' }
- blk = proc do
- RpcServer.new(**opts)
- end
- expect(&blk).not_to raise_error
- end
-
- it 'can be created with a default deadline' do
- opts = { a_channel_arg: 'an_arg', deadline: 5 }
+ opts = { server_args: { a_channel_arg: 'an_arg' } }
blk = proc do
RpcServer.new(**opts)
end
@@ -163,7 +150,7 @@ describe GRPC::RpcServer do
it 'can be created with a completion queue override' do
opts = {
- a_channel_arg: 'an_arg',
+ server_args: { a_channel_arg: 'an_arg' },
completion_queue_override: @server_queue
}
blk = proc do
@@ -175,7 +162,7 @@ describe GRPC::RpcServer do
it 'cannot be created with a bad completion queue override' do
blk = proc do
opts = {
- a_channel_arg: 'an_arg',
+ server_args: { a_channel_arg: 'an_arg' },
completion_queue_override: Object.new
}
RpcServer.new(**opts)
@@ -186,38 +173,20 @@ describe GRPC::RpcServer do
it 'cannot be created with invalid ServerCredentials' do
blk = proc do
opts = {
- a_channel_arg: 'an_arg',
+ server_args: { a_channel_arg: 'an_arg' },
creds: Object.new
}
RpcServer.new(**opts)
end
expect(&blk).to raise_error
end
-
- it 'can be created with a server override' do
- opts = { a_channel_arg: 'an_arg', server_override: @server }
- blk = proc do
- RpcServer.new(**opts)
- end
- expect(&blk).not_to raise_error
- end
-
- it 'cannot be created with a bad server override' do
- blk = proc do
- opts = {
- a_channel_arg: 'an_arg',
- server_override: Object.new
- }
- RpcServer.new(**opts)
- end
- expect(&blk).to raise_error
- end
end
describe '#stopped?' do
before(:each) do
- opts = { a_channel_arg: 'an_arg', poll_period: 1.5 }
+ opts = { server_args: { a_channel_arg: 'an_arg' }, poll_period: 1.5 }
@srv = RpcServer.new(**opts)
+ @srv.add_http2_port('0.0.0.0:0', :this_port_is_insecure)
end
it 'starts out false' do
@@ -245,28 +214,30 @@ describe GRPC::RpcServer do
describe '#running?' do
it 'starts out false' do
- opts = { a_channel_arg: 'an_arg', server_override: @server }
+ opts = {
+ server_args: { a_channel_arg: 'an_arg' }
+ }
r = RpcServer.new(**opts)
expect(r.running?).to be(false)
end
it 'is false if run is called with no services registered', server: true do
opts = {
- a_channel_arg: 'an_arg',
- poll_period: 2,
- server_override: @server
+ server_args: { a_channel_arg: 'an_arg' },
+ poll_period: 2
}
r = RpcServer.new(**opts)
+ r.add_http2_port('0.0.0.0:0', :this_port_is_insecure)
expect { r.run }.to raise_error(RuntimeError)
end
it 'is true after run is called with a registered service' do
opts = {
- a_channel_arg: 'an_arg',
- poll_period: 2.5,
- server_override: @server
+ server_args: { a_channel_arg: 'an_arg' },
+ poll_period: 2.5
}
r = RpcServer.new(**opts)
+ r.add_http2_port('0.0.0.0:0', :this_port_is_insecure)
r.handle(EchoService)
t = Thread.new { r.run }
r.wait_till_running
@@ -278,8 +249,9 @@ describe GRPC::RpcServer do
describe '#handle' do
before(:each) do
- @opts = { a_channel_arg: 'an_arg', poll_period: 1 }
+ @opts = { server_args: { a_channel_arg: 'an_arg' }, poll_period: 1 }
@srv = RpcServer.new(**@opts)
+ @srv.add_http2_port('0.0.0.0:0', :this_port_is_insecure)
end
it 'raises if #run has already been called' do
@@ -322,11 +294,13 @@ describe GRPC::RpcServer do
context 'with no connect_metadata' do
before(:each) do
server_opts = {
- server_override: @server,
completion_queue_override: @server_queue,
poll_period: 1
}
@srv = RpcServer.new(**server_opts)
+ server_port = @srv.add_http2_port('0.0.0.0:0', :this_port_is_insecure)
+ @host = "localhost:#{server_port}"
+ @ch = GRPC::Core::Channel.new(@host, nil, :this_channel_is_insecure)
end
it 'should return NOT_FOUND status on unknown methods', server: true do
@@ -383,7 +357,8 @@ describe GRPC::RpcServer do
@srv.wait_till_running
req = EchoMsg.new
stub = EchoStub.new(@host, :this_channel_is_insecure, **client_opts)
- expect(stub.an_rpc(req, k1: 'v1', k2: 'v2')).to be_a(EchoMsg)
+ expect(stub.an_rpc(req, metadata: { k1: 'v1', k2: 'v2' }))
+ .to be_a(EchoMsg)
wanted_md = [{ 'k1' => 'v1', 'k2' => 'v2' }]
check_md(wanted_md, service.received_md)
@srv.stop
@@ -397,8 +372,11 @@ describe GRPC::RpcServer do
@srv.wait_till_running
req = EchoMsg.new
stub = SlowStub.new(@host, :this_channel_is_insecure, **client_opts)
- timeout = service.delay + 1.0 # wait for long enough
- resp = stub.an_rpc(req, timeout: timeout, k1: 'v1', k2: 'v2')
+ timeout = service.delay + 1.0
+ deadline = GRPC::Core::TimeConsts.from_relative_time(timeout)
+ resp = stub.an_rpc(req,
+ deadline: deadline,
+ metadata: { k1: 'v1', k2: 'v2' })
expect(resp).to be_a(EchoMsg)
wanted_md = [{ 'k1' => 'v1', 'k2' => 'v2' }]
check_md(wanted_md, service.received_md)
@@ -413,7 +391,7 @@ describe GRPC::RpcServer do
@srv.wait_till_running
req = EchoMsg.new
stub = SlowStub.new(@host, :this_channel_is_insecure, **client_opts)
- op = stub.an_rpc(req, k1: 'v1', k2: 'v2', return_op: true)
+ op = stub.an_rpc(req, metadata: { k1: 'v1', k2: 'v2' }, return_op: true)
Thread.new do # cancel the call
sleep 0.1
op.cancel
@@ -443,8 +421,7 @@ describe GRPC::RpcServer do
it 'should return RESOURCE_EXHAUSTED on too many jobs', server: true do
opts = {
- a_channel_arg: 'an_arg',
- server_override: @server,
+ server_args: { a_channel_arg: 'an_arg' },
completion_queue_override: @server_queue,
pool_size: 1,
poll_period: 1,
@@ -452,6 +429,8 @@ describe GRPC::RpcServer do
}
alt_srv = RpcServer.new(**opts)
alt_srv.handle(SlowService)
+ alt_port = alt_srv.add_http2_port('0.0.0.0:0', :this_port_is_insecure)
+ alt_host = "0.0.0.0:#{alt_port}"
t = Thread.new { alt_srv.run }
alt_srv.wait_till_running
req = EchoMsg.new
@@ -460,7 +439,7 @@ describe GRPC::RpcServer do
one_failed_as_unavailable = false
n.times do
threads << Thread.new do
- stub = SlowStub.new(@host, :this_channel_is_insecure, **client_opts)
+ stub = SlowStub.new(alt_host, :this_channel_is_insecure)
begin
stub.an_rpc(req)
rescue GRPC::BadStatus => e
@@ -487,12 +466,13 @@ describe GRPC::RpcServer do
end
before(:each) do
server_opts = {
- server_override: @server,
completion_queue_override: @server_queue,
poll_period: 1,
connect_md_proc: test_md_proc
}
@srv = RpcServer.new(**server_opts)
+ alt_port = @srv.add_http2_port('0.0.0.0:0', :this_port_is_insecure)
+ @alt_host = "0.0.0.0:#{alt_port}"
end
it 'should send connect metadata to the client', server: true do
@@ -501,8 +481,8 @@ describe GRPC::RpcServer do
t = Thread.new { @srv.run }
@srv.wait_till_running
req = EchoMsg.new
- stub = EchoStub.new(@host, :this_channel_is_insecure, **client_opts)
- op = stub.an_rpc(req, k1: 'v1', k2: 'v2', return_op: true)
+ stub = EchoStub.new(@alt_host, :this_channel_is_insecure)
+ op = stub.an_rpc(req, metadata: { k1: 'v1', k2: 'v2' }, return_op: true)
expect(op.metadata).to be nil
expect(op.execute).to be_a(EchoMsg)
wanted_md = {
@@ -522,11 +502,12 @@ describe GRPC::RpcServer do
context 'with trailing metadata' do
before(:each) do
server_opts = {
- server_override: @server,
completion_queue_override: @server_queue,
poll_period: 1
}
@srv = RpcServer.new(**server_opts)
+ alt_port = @srv.add_http2_port('0.0.0.0:0', :this_port_is_insecure)
+ @alt_host = "0.0.0.0:#{alt_port}"
end
it 'should be added to BadStatus when requests fail', server: true do
@@ -535,7 +516,7 @@ describe GRPC::RpcServer do
t = Thread.new { @srv.run }
@srv.wait_till_running
req = EchoMsg.new
- stub = FailingStub.new(@host, :this_channel_is_insecure, **client_opts)
+ stub = FailingStub.new(@alt_host, :this_channel_is_insecure)
blk = proc { stub.an_rpc(req) }
# confirm it raise the expected error
@@ -560,8 +541,8 @@ describe GRPC::RpcServer do
t = Thread.new { @srv.run }
@srv.wait_till_running
req = EchoMsg.new
- stub = EchoStub.new(@host, :this_channel_is_insecure, **client_opts)
- op = stub.an_rpc(req, k1: 'v1', k2: 'v2', return_op: true)
+ stub = EchoStub.new(@alt_host, :this_channel_is_insecure)
+ op = stub.an_rpc(req, return_op: true, metadata: { k1: 'v1', k2: 'v2' })
expect(op.metadata).to be nil
expect(op.execute).to be_a(EchoMsg)
expect(op.metadata).to eq(wanted_trailers)