spec/support/server.rb in protobuf-3.3.6 vs spec/support/server.rb in protobuf-3.4.0
- old
+ new
@@ -1,6 +1,9 @@
require 'ostruct'
+
+require 'active_support/core_ext/hash/reverse_merge'
+
require 'protobuf/logging'
require 'protobuf/rpc/server'
require 'protobuf/rpc/servers/socket/server'
require 'protobuf/rpc/servers/socket_runner'
require 'protobuf/rpc/servers/zmq/server'
@@ -8,85 +11,52 @@
require 'spec/support/test/resource_service'
# Want to abort if server dies?
Thread.abort_on_exception = true
-module StubProtobufServerFactory
- def self.build(delay)
- new_server = Class.new(Protobuf::Rpc::Socket::Server) do
- def self.sleep_interval
- @sleep_interval
- end
-
- def self.sleep_interval=(si)
- @sleep_interval = si
- end
-
- def post_init
- sleep self.class.sleep_interval
- super
- end
- end
-
- new_server.sleep_interval = delay
- return new_server
- end
-end
-
class StubServer
include Protobuf::Logging
- attr_accessor :options
+ private
+ attr_accessor :options, :runner, :runner_thread
+
+ public
+
def initialize(options = {})
- @running = true
- @options = OpenStruct.new({ :host => "127.0.0.1",
- :port => 9399,
- :worker_port => 9400,
- :delay => 0,
- :server => Protobuf::Rpc::Socket::Server }.merge(options))
+ self.options = OpenStruct.new(
+ options.reverse_merge(
+ :host => '127.0.0.1',
+ :port => 9399,
+ :worker_port => 9400,
+ :delay => 0,
+ :server => Protobuf::Rpc::Socket::Server,
+ ),
+ )
start
yield self
ensure
- stop if @running
+ stop
end
def start
- case
- when @options.server == Protobuf::Rpc::Zmq::Server
- start_zmq_server
- else
- start_socket_server
- end
- logger.debug { sign_message("Server started #{@options.host}:#{@options.port}") }
- end
+ runner_class = {
+ ::Protobuf::Rpc::Zmq::Server => ::Protobuf::Rpc::ZmqRunner,
+ ::Protobuf::Rpc::Socket::Server => ::Protobuf::Rpc::SocketRunner,
+ }.fetch(options.server)
- def start_socket_server
- @sock_runner = ::Protobuf::Rpc::SocketRunner.new(options)
- @sock_thread = Thread.new(@sock_runner) { |runner| runner.run }
- @sock_thread.abort_on_exception = true # Set for testing purposes
- Thread.pass until @sock_runner.running?
- end
+ self.runner = runner_class.new(options)
+ self.runner_thread = Thread.new(runner, &:run)
+ runner_thread.abort_on_exception = true # Set for testing purposes
+ Thread.pass until runner.running?
- def start_zmq_server
- @zmq_runner = ::Protobuf::Rpc::ZmqRunner.new(options)
- @zmq_thread = Thread.new(@zmq_runner) { |runner| runner.run }
- @zmq_thread.abort_on_exception = true # Set for testing purposes
- Thread.pass until @zmq_runner.running?
+ logger.debug { sign_message("Server started #{options.host}:#{options.port}") }
end
def stop
- case
- when @options.server == Protobuf::Rpc::Zmq::Server then
- @zmq_runner.try :stop
- @zmq_thread.join if @zmq_thread
- else
- @sock_runner.stop
- @sock_thread.join if @sock_thread
- end
-
- @running = false
+ runner.stop
+ runner_thread.join
end
def log_signature
@_log_signature ||= "[stub-server]"
end