Adds support for trailing metadata
- removes the status class, replacing it with a Struct
- adds support for trailing metadata, merging into the call's initial metadata
- tracks []
Change on 2014/12/15 by temiola <temiola@google.com>
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=82193372
diff --git a/src/ruby/spec/call_spec.rb b/src/ruby/spec/call_spec.rb
index 1332b3c..8e8e3d3 100644
--- a/src/ruby/spec/call_spec.rb
+++ b/src/ruby/spec/call_spec.rb
@@ -88,29 +88,30 @@
describe '#start_read' do
it 'should fail if called immediately' do
- expect { make_test_call.start_read(@tag) }.to raise_error GRPC::Core::CallError
+ blk = Proc.new { make_test_call.start_read(@tag) }
+ expect(&blk).to raise_error GRPC::Core::CallError
end
end
describe '#start_write' do
it 'should fail if called immediately' do
bytes = GRPC::Core::ByteBuffer.new('test string')
- expect { make_test_call.start_write(bytes, @tag) }
- .to raise_error GRPC::Core::CallError
+ blk = Proc.new { make_test_call.start_write(bytes, @tag) }
+ expect(&blk).to raise_error GRPC::Core::CallError
end
end
describe '#start_write_status' do
it 'should fail if called immediately' do
- sts = GRPC::Core::Status.new(153, 'test detail')
- expect { make_test_call.start_write_status(sts, @tag) }
- .to raise_error GRPC::Core::CallError
+ blk = Proc.new { make_test_call.start_write_status(153, 'x', @tag) }
+ expect(&blk).to raise_error GRPC::Core::CallError
end
end
describe '#writes_done' do
it 'should fail if called immediately' do
- expect { make_test_call.writes_done(@tag) }.to raise_error GRPC::Core::CallError
+ blk = Proc.new { make_test_call.writes_done(Object.new) }
+ expect(&blk).to raise_error GRPC::Core::CallError
end
end
@@ -153,9 +154,9 @@
describe '#status' do
it 'can save the status and read it back' do
call = make_test_call
- sts = GRPC::Core::Status.new(OK, 'OK')
+ sts = Struct::Status.new(OK, 'OK')
expect { call.status = sts }.not_to raise_error
- expect(call.status).to be(sts)
+ expect(call.status).to eq(sts)
end
it 'must be set to a status' do
diff --git a/src/ruby/spec/client_server_spec.rb b/src/ruby/spec/client_server_spec.rb
index 91abfc0..5e68f52 100644
--- a/src/ruby/spec/client_server_spec.rb
+++ b/src/ruby/spec/client_server_spec.rb
@@ -154,8 +154,8 @@
server_call = ev.call
server_call.server_accept(@server_queue, @server_finished_tag)
server_call.server_end_initial_metadata()
- sts = Status.new(StatusCodes::NOT_FOUND, 'not found')
- server_call.start_write_status(sts, @server_tag)
+ server_call.start_write_status(StatusCodes::NOT_FOUND, 'not found',
+ @server_tag)
# client gets an empty response for the read, preceeded by some metadata.
call.start_read(@tag)
@@ -175,8 +175,7 @@
call = new_client_call
client_sends(call)
server_call = server_receives_and_responds_with('server_response')
- sts = Status.new(10101, 'status code is 10101')
- server_call.start_write_status(sts, @server_tag)
+ server_call.start_write_status(10101, 'status code is 10101', @server_tag)
# first the client says writes are done
call.start_read(@tag)
@@ -187,7 +186,7 @@
# but nothing happens until the server sends a status
expect_next_event_on(@server_queue, FINISH_ACCEPTED, @server_tag)
ev = expect_next_event_on(@server_queue, FINISHED, @server_finished_tag)
- expect(ev.result).to be_a(Status)
+ expect(ev.result).to be_a(Struct::Status)
# client gets FINISHED
expect_next_event_on(@client_queue, FINISH_ACCEPTED, @tag)
diff --git a/src/ruby/spec/status_spec.rb b/src/ruby/spec/status_spec.rb
deleted file mode 100644
index 63dcefb..0000000
--- a/src/ruby/spec/status_spec.rb
+++ /dev/null
@@ -1,166 +0,0 @@
-# Copyright 2014, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-require 'grpc'
-
-
-describe GRPC::Core::StatusCodes do
-
- StatusCodes = GRPC::Core::StatusCodes
-
- before(:each) do
- @known_types = {
- :OK => 0,
- :CANCELLED => 1,
- :UNKNOWN => 2,
- :INVALID_ARGUMENT => 3,
- :DEADLINE_EXCEEDED => 4,
- :NOT_FOUND => 5,
- :ALREADY_EXISTS => 6,
- :PERMISSION_DENIED => 7,
- :RESOURCE_EXHAUSTED => 8,
- :FAILED_PRECONDITION => 9,
- :ABORTED => 10,
- :OUT_OF_RANGE => 11,
- :UNIMPLEMENTED => 12,
- :INTERNAL => 13,
- :UNAVAILABLE => 14,
- :DATA_LOSS => 15,
- :UNAUTHENTICATED => 16
- }
- end
-
- it 'should have symbols for all the known status codes' do
- m = StatusCodes
- syms_and_codes = m.constants.collect { |c| [c, m.const_get(c)] }
- expect(Hash[syms_and_codes]).to eq(@known_types)
- end
-
-end
-
-
-describe GRPC::Core::Status do
-
- Status = GRPC::Core::Status
-
- describe '#new' do
- it 'should create new instances' do
- expect { Status.new(142, 'test details') }.to_not raise_error
- end
- end
-
- describe '#details' do
- it 'return the detail' do
- sts = Status.new(142, 'test details')
- expect(sts.details).to eq('test details')
- end
- end
-
- describe '#code' do
- it 'should return the code' do
- sts = Status.new(142, 'test details')
- expect(sts.code).to eq(142)
- end
- end
-
- describe '#dup' do
- it 'should create a copy that returns the correct details' do
- sts = Status.new(142, 'test details')
- expect(sts.dup.code).to eq(142)
- end
-
- it 'should create a copy that returns the correct code' do
- sts = Status.new(142, 'test details')
- expect(sts.dup.details).to eq('test details')
- end
- end
-
-
-end
-
-
-describe GRPC::BadStatus do
-
- BadStatus = GRPC::BadStatus
-
- describe '#new' do
- it 'should create new instances' do
- expect { BadStatus.new(142, 'test details') }.to_not raise_error
- end
- end
-
- describe '#details' do
- it 'return the detail' do
- err = BadStatus.new(142, 'test details')
- expect(err.details).to eq('test details')
- end
- end
-
- describe '#code' do
- it 'should return the code' do
- err = BadStatus.new(142, 'test details')
- expect(err.code).to eq(142)
- end
- end
-
- describe '#dup' do
- it 'should create a copy that returns the correct details' do
- err = BadStatus.new(142, 'test details')
- expect(err.dup.code).to eq(142)
- end
-
- it 'should create a copy that returns the correct code' do
- err = BadStatus.new(142, 'test details')
- expect(err.dup.details).to eq('test details')
- end
- end
-
- describe '#to_status' do
- it 'should create a Status with the same code and details' do
- err = BadStatus.new(142, 'test details')
- sts = err.to_status
- expect(sts.code).to eq(142)
- expect(sts.details).to eq('test details')
- end
-
- it 'should create a copy that returns the correct code' do
- err = BadStatus.new(142, 'test details')
- expect(err.dup.details).to eq('test details')
- end
- end
-
- describe 'as an exception' do
-
- it 'can be raised' do
- blk = Proc.new { raise BadStatus.new(343, 'status 343') }
- expect(&blk).to raise_error(BadStatus)
- end
- end
-
-end