Fixed ruby timeout_on_sleeping_server implementation

pull/6886/head
murgatroid99 9 years ago
parent 1fa96c5c49
commit 635c1caf3b
  1. 28
      src/ruby/pb/test/client.rb

@ -197,6 +197,25 @@ class PingPongPlayer
end
end
class BlockingEnumerator
include Grpc::Testing
include Grpc::Testing::PayloadType
def initialize(req_size, sleep_time)
@req_size = req_size
@sleep_time = sleep_time
end
def each_item
return enum_for(:each_item) unless block_given?
req_cls = StreamingOutputCallRequest
req = req_cls.new(payload: Payload.new(body: nulls(@req_size)))
yield req
# Sleep until after the deadline should have passed
sleep(@sleep_time)
end
end
# defines methods corresponding to each interop test case.
class NamedTests
include Grpc::Testing
@ -315,11 +334,10 @@ class NamedTests
end
def timeout_on_sleeping_server
msg_sizes = [[27_182, 31_415]]
ppp = PingPongPlayer.new(msg_sizes)
deadline = GRPC::Core::TimeConsts::from_relative_time(0.001)
resps = @stub.full_duplex_call(ppp.each_item, deadline: deadline)
resps.each { |r| ppp.queue.push(r) }
enum = BlockingEnumerator.new(27_182, 2)
deadline = GRPC::Core::TimeConsts::from_relative_time(1)
resps = @stub.full_duplex_call(enum.each_item, deadline: deadline)
resps.each { } # wait to receive each request (or timeout)
fail 'Should have raised GRPC::BadStatus(DEADLINE_EXCEEDED)'
rescue GRPC::BadStatus => e
assert("#{__callee__}: status was wrong") do

Loading…
Cancel
Save