diff options
author | murgatroid99 <mlumish@google.com> | 2016-06-15 14:30:03 -0700 |
---|---|---|
committer | murgatroid99 <mlumish@google.com> | 2016-06-15 14:30:03 -0700 |
commit | 635c1caf3b943d634f43a5bec4c16b937c595782 (patch) | |
tree | c4233ea37335a1327e33fef4353f12c12700f9ba /src/ruby/pb | |
parent | 1fa96c5c49b4fda6ebd2be0cfe353297e3e92e0b (diff) |
Fixed ruby timeout_on_sleeping_server implementation
Diffstat (limited to 'src/ruby/pb')
-rwxr-xr-x | src/ruby/pb/test/client.rb | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/ruby/pb/test/client.rb b/src/ruby/pb/test/client.rb index b6695482a2..146623e0ab 100755 --- a/src/ruby/pb/test/client.rb +++ b/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 |