module GRPC::Spec::Helpers

A module that is used for providing generic helpers across the GRPC test suite

Constants

RpcServer

RpcServer hosts a number of services and makes them available on the network.

Public Instance Methods

build_insecure_stub(klass, host: nil, opts: nil) click to toggle source

Build an insecure stub from a given stub class

@param [Class] klass @param [String] host

# File src/ruby/spec/support/helpers.rb, line 66
def build_insecure_stub(klass, host: nil, opts: nil)
  host ||= @host
  opts ||= @client_opts
  klass.new(host, :this_channel_is_insecure, **opts)
end
build_rpc_server(server_opts: {}, client_opts: {}) click to toggle source

Build an RPC server used for testing

# File src/ruby/spec/support/helpers.rb, line 32
def build_rpc_server(server_opts: {},
                     client_opts: {})
  @server = new_rpc_server_for_testing({ poll_period: 1 }.merge(server_opts))
  @port = @server.add_http2_port('0.0.0.0:0', :this_port_is_insecure)
  @host = "0.0.0.0:#{@port}"
  @client_opts = client_opts
  @server
end
new_core_server_for_testing(server_args) click to toggle source

Build an GRPC::Core::Server for use in tests. Adds args that are useful for all tests.

@param [Hash] server_args

# File src/ruby/spec/support/helpers.rb, line 90
def new_core_server_for_testing(server_args)
  server_args.nil? && server_args = {}
  update_server_args_hash(server_args)
  GRPC::Core::Server.new(server_args)
end
new_rpc_server_for_testing(server_opts = {}) click to toggle source

Build an RPCServer for use in tests. Adds args that are useful for all tests.

@param [Hash] server_opts

# File src/ruby/spec/support/helpers.rb, line 78
def new_rpc_server_for_testing(server_opts = {})
  server_opts[:server_args] ||= {}
  update_server_args_hash(server_opts[:server_args])
  RpcServer.new(**server_opts)
end
run_services_on_server(server, services: []) { || ... } click to toggle source

Run services on an RPC server, yielding to allow testing within

@param [RpcServer] server @param [Array<Class>] services

# File src/ruby/spec/support/helpers.rb, line 47
def run_services_on_server(server, services: [])
  services.each do |s|
    server.handle(s)
  end
  t = Thread.new { server.run }
  server.wait_till_running

  yield

  server.stop
  t.join
end
update_server_args_hash(server_args) click to toggle source
# File src/ruby/spec/support/helpers.rb, line 96
def update_server_args_hash(server_args)
  so_reuseport_arg = 'grpc.so_reuseport'
  unless server_args[so_reuseport_arg].nil?
    fail 'Unexpected. grpc.so_reuseport already set.'
  end
  # Run tests without so_reuseport to eliminate the chance of
  # cross-talk.
  server_args[so_reuseport_arg] = 0
end