Skip to content
Snippets Groups Projects
Commit 077f8909 authored by Alexander Polcyn's avatar Alexander Polcyn
Browse files

conform test to formatter

parent 34bb6df1
No related branches found
No related tags found
No related merge requests found
...@@ -36,7 +36,7 @@ require_relative './end2end_common' ...@@ -36,7 +36,7 @@ require_relative './end2end_common'
def main def main
STDERR.puts 'start server' STDERR.puts 'start server'
server_runner = ServerRunner.new server_runner = ServerRunner.new(EchoServerImpl)
server_port = server_runner.run server_port = server_runner.run
sleep 1 sleep 1
......
...@@ -35,7 +35,7 @@ require_relative './end2end_common' ...@@ -35,7 +35,7 @@ require_relative './end2end_common'
def main def main
STDERR.puts 'start server' STDERR.puts 'start server'
server_runner = ServerRunner.new server_runner = ServerRunner.new(EchoServerImpl)
server_port = server_runner.run server_port = server_runner.run
sleep 1 sleep 1
......
...@@ -55,13 +55,14 @@ end ...@@ -55,13 +55,14 @@ end
# ServerRunner starts an "echo server" that test clients can make calls to # ServerRunner starts an "echo server" that test clients can make calls to
class ServerRunner class ServerRunner
def initialize def initialize(service_impl)
@service_impl = service_impl
end end
def run def run
@srv = GRPC::RpcServer.new @srv = GRPC::RpcServer.new
port = @srv.add_http2_port('0.0.0.0:0', :this_port_is_insecure) port = @srv.add_http2_port('0.0.0.0:0', :this_port_is_insecure)
@srv.handle(EchoServerImpl) @srv.handle(@service_impl)
@thd = Thread.new do @thd = Thread.new do
@srv.run @srv.run
......
...@@ -29,6 +29,9 @@ ...@@ -29,6 +29,9 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Attempt to reproduce
# https://github.com/GoogleCloudPlatform/google-cloud-ruby/issues/1327
require_relative './end2end_common' require_relative './end2end_common'
def main def main
...@@ -46,7 +49,7 @@ def main ...@@ -46,7 +49,7 @@ def main
stub = Echo::EchoServer::Stub.new("localhost:#{server_port}", stub = Echo::EchoServer::Stub.new("localhost:#{server_port}",
:this_channel_is_insecure) :this_channel_is_insecure)
stub.echo(Echo::EchoRequest.new(request: 'hello')) stub.echo(Echo::EchoRequest.new(request: 'hello'))
raise 'the clients rpc in this test shouldnt complete. ' \ fail 'the clients rpc in this test shouldnt complete. ' \
'expecting SIGINT to happen in the middle of the call' 'expecting SIGINT to happen in the middle of the call'
end end
thd.join thd.join
......
...@@ -31,12 +31,15 @@ ...@@ -31,12 +31,15 @@
require_relative './end2end_common' require_relative './end2end_common'
# Service that sleeps for a long time upon receiving an 'echo request'
# Also, this notified @call_started_cv once it has received a request.
class SleepingEchoServerImpl < Echo::EchoServer::Service class SleepingEchoServerImpl < Echo::EchoServer::Service
def initialize(call_started, call_started_mu, call_started_cv) def initialize(call_started, call_started_mu, call_started_cv)
@call_started = call_started @call_started = call_started
@call_started_mu = call_started_mu @call_started_mu = call_started_mu
@call_started_cv = call_started_cv @call_started_cv = call_started_cv
end end
def echo(echo_req, _) def echo(echo_req, _)
@call_started_mu.synchronize do @call_started_mu.synchronize do
@call_started.set_true @call_started.set_true
...@@ -47,43 +50,19 @@ class SleepingEchoServerImpl < Echo::EchoServer::Service ...@@ -47,43 +50,19 @@ class SleepingEchoServerImpl < Echo::EchoServer::Service
end end
end end
class SleepingServerRunner # Mutable boolean
def initialize(service_impl)
@service_impl = service_impl
end
def run
@srv = GRPC::RpcServer.new
port = @srv.add_http2_port('0.0.0.0:0', :this_port_is_insecure)
@srv.handle(@service_impl)
@thd = Thread.new do
@srv.run
end
@srv.wait_till_running
port
end
def stop
@srv.stop
@thd.join
fail 'server not stopped' unless @srv.stopped?
end
end
class BoolHolder class BoolHolder
attr_reader :val
def init def init
@val = false @val = false
end end
def set_true def set_true
@val = true @val = true
end end
def get_val
@val
end
end end
def main def main
STDERR.puts 'start server' STDERR.puts 'start server'
...@@ -91,20 +70,22 @@ def main ...@@ -91,20 +70,22 @@ def main
call_started_mu = Mutex.new call_started_mu = Mutex.new
call_started_cv = ConditionVariable.new call_started_cv = ConditionVariable.new
service_impl = SleepingEchoServerImpl.new(call_started, call_started_mu, call_started_cv) service_impl = SleepingEchoServerImpl.new(call_started,
server_runner = SleepingServerRunner.new(service_impl) call_started_mu,
call_started_cv)
server_runner = ServerRunner.new(service_impl)
server_port = server_runner.run server_port = server_runner.run
STDERR.puts 'start client' STDERR.puts 'start client'
_, client_pid = start_client('killed_client_thread_client.rb', _, client_pid = start_client('killed_client_thread_client.rb',
server_port) server_port)
call_started_mu.synchronize do call_started_mu.synchronize do
while !call_started.get_val do call_started_cv.wait(call_started_mu) until call_started.val
call_started_cv.wait(call_started_mu)
end
end end
# SIGINT the child process not that it's
# in the middle of an RPC (happening on a non-main thread)
Process.kill('SIGINT', client_pid) Process.kill('SIGINT', client_pid)
STDERR.puts 'sent shutdown' STDERR.puts 'sent shutdown'
...@@ -117,13 +98,14 @@ def main ...@@ -117,13 +98,14 @@ def main
Process.kill('SIGKILL', client_pid) Process.kill('SIGKILL', client_pid)
Process.wait(client_pid) Process.wait(client_pid)
STDERR.puts 'killed client child' STDERR.puts 'killed client child'
raise 'Timed out waiting for client process. It likely hangs when ' \ raise 'Timed out waiting for client process. ' \
'killed while in the middle of an rpc' 'It likely hangs when killed while in the middle of an rpc'
end end
client_exit_code = $CHILD_STATUS client_exit_code = $CHILD_STATUS
if client_exit_code.termsig != 2 # SIGINT if client_exit_code.termsig != 2 # SIGINT
fail "expected client exit from SIGINT but got child status: #{client_exit_code}" fail 'expected client exit from SIGINT ' \
"but got child status: #{client_exit_code}"
end end
server_runner.stop server_runner.stop
......
...@@ -36,7 +36,7 @@ require_relative './end2end_common' ...@@ -36,7 +36,7 @@ require_relative './end2end_common'
def main def main
STDERR.puts 'start server' STDERR.puts 'start server'
server_runner = ServerRunner.new server_runner = ServerRunner.new(EchoServerImpl)
server_port = server_runner.run server_port = server_runner.run
sleep 1 sleep 1
......
...@@ -36,7 +36,7 @@ require_relative './end2end_common' ...@@ -36,7 +36,7 @@ require_relative './end2end_common'
def main def main
STDERR.puts 'start server' STDERR.puts 'start server'
server_runner = ServerRunner.new server_runner = ServerRunner.new(EchoServerImpl)
server_port = server_runner.run server_port = server_runner.run
sleep 1 sleep 1
......
...@@ -38,4 +38,5 @@ ruby src/ruby/end2end/sig_handling_driver.rb || EXIT_CODE=1 ...@@ -38,4 +38,5 @@ ruby src/ruby/end2end/sig_handling_driver.rb || EXIT_CODE=1
ruby src/ruby/end2end/channel_state_driver.rb || EXIT_CODE=1 ruby src/ruby/end2end/channel_state_driver.rb || EXIT_CODE=1
ruby src/ruby/end2end/channel_closing_driver.rb || EXIT_CODE=1 ruby src/ruby/end2end/channel_closing_driver.rb || EXIT_CODE=1
ruby src/ruby/end2end/sig_int_during_channel_watch_driver.rb || EXIT_CODE=1 ruby src/ruby/end2end/sig_int_during_channel_watch_driver.rb || EXIT_CODE=1
ruby src/ruby/end2end/killed_client_thread_driver.rb || EXIT_CODE=1
exit $EXIT_CODE exit $EXIT_CODE
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment