class TestTarget
A runnable implementation of the schema-specified testing service, with each service method implemented as required by the interop testing spec.
Public Instance Methods
empty_call(_empty, _call)
click to toggle source
# File src/ruby/pb/test/server.rb, line 159 def empty_call(_empty, _call) Empty.new end
full_duplex_call(reqs)
click to toggle source
# File src/ruby/pb/test/server.rb, line 183 def full_duplex_call(reqs) # reqs is a lazy Enumerator of the requests sent by the client. q = EnumeratorQueue.new(self) cls = StreamingOutputCallResponse Thread.new do begin GRPC.logger.info('interop-server: started receiving') reqs.each do |req| resp_size = req.response_parameters[0].size GRPC.logger.info("read a req, response size is #{resp_size}") resp = cls.new(payload: Payload.new(type: req.response_type, body: nulls(resp_size))) q.push(resp) end GRPC.logger.info('interop-server: finished receiving') q.push(self) rescue StandardError => e GRPC.logger.info('interop-server: failed') GRPC.logger.warn(e) q.push(e) # share the exception with the enumerator end end q.each_item end
half_duplex_call(reqs)
click to toggle source
# File src/ruby/pb/test/server.rb, line 208 def half_duplex_call(reqs) # TODO: update with unique behaviour of the half_duplex_call if that's # ever required by any of the tests. full_duplex_call(reqs) end
streaming_input_call(call)
click to toggle source
# File src/ruby/pb/test/server.rb, line 169 def streaming_input_call(call) sizes = call.each_remote_read.map { |x| x.payload.body.length } sum = sizes.inject(0) { |s, x| s + x } StreamingInputCallResponse.new(aggregated_payload_size: sum) end
streaming_output_call(req, _call)
click to toggle source
# File src/ruby/pb/test/server.rb, line 175 def streaming_output_call(req, _call) cls = StreamingOutputCallResponse req.response_parameters.map do |p| cls.new(payload: Payload.new(type: req.response_type, body: nulls(p.size))) end end
unary_call(simple_req, _call)
click to toggle source
# File src/ruby/pb/test/server.rb, line 163 def unary_call(simple_req, _call) req_size = simple_req.response_size SimpleResponse.new(payload: Payload.new(type: :COMPRESSABLE, body: nulls(req_size))) end