Module: GRPC::Spec::Helpers

Defined in:
src/ruby/spec/support/helpers.rb

Overview

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

Constant Summary collapse

RpcServer =

Shortcut syntax for a GRPC RPC Server

GRPC::RpcServer

Instance Method Summary collapse

Instance Method Details

#build_insecure_stub(klass, host: nil, opts: nil) ⇒ Object

Build an insecure stub from a given stub class

Parameters:

  • klass (Class)
  • host (String) (defaults to: nil)

66
67
68
69
70
# 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: {}) ⇒ Object

Build an RPC server used for testing


32
33
34
35
36
37
38
39
# 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) ⇒ Object

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

Parameters:

  • server_args (Hash)

90
91
92
93
94
# 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 = {}) ⇒ Object

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

Parameters:

  • server_opts (Hash) (defaults to: {})

78
79
80
81
82
# 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: []) ⇒ Object

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

Parameters:

  • server (RpcServer)
  • services (Array<Class>) (defaults to: [])

47
48
49
50
51
52
53
54
55
56
57
58
# 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) ⇒ Object


96
97
98
99
100
101
102
103
104
# 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