class Crabfarm::CrabtrapRunner

Constants

CRABTRAP_START_TM

Public Class Methods

new(_config={}) click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 10
def initialize(_config={})
  @config = _config;
  @process = nil
end

Public Instance Methods

is_running?() click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 15
def is_running?
  not @process.nil?
end
kill() click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 42
def kill
  unless @process.nil?
    logger.info "Killing crabtrap (PID: #{@process.pid})"
    @process.stop 0
    @process = nil
    logger.info "Crabtrap stopped"
  end
end
mode() click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 23
def mode
  @config.fetch(:mode, :pass).to_sym
end
port() click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 19
def port
  @config[:port]
end
start() click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 27
def start
  logger.info "Starting crabtrap in port #{port}"
  @process = spawn_crabtrap
  logger.info "Crabtrap started (PID: #{@process.pid})"
end
stop() click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 33
def stop
  unless @process.nil?
    logger.info "Stopping crabtrap (PID: #{@process.pid})"
    @process.stop
    @process = nil
    logger.info "Crabtrap stopped"
  end
end

Private Instance Methods

crabtrap_cmd() click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 67
def crabtrap_cmd
  cmd = [@config[:bin_path]]
  cmd << mode.to_s
  cmd << @config[:bucket_path] if mode != :pass
  cmd << "--port=#{port}"
  cmd << "--virtual=#{@config[:virtual]}" if @config.key? :virtual
  cmd << "--log=#{@config[:log_level].to_s.upcase}"
  cmd
end
logger() click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 88
def logger
  Crabfarm.logger
end
spawn_crabtrap() click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 53
def spawn_crabtrap
  proc = nil
  begin
    proc = Utils::Processes.start_logged_process 'crabtrap', crabtrap_cmd, logger
    Timeout::timeout(CRABTRAP_START_TM) { wait_for_server }
  rescue ChildProcess::LaunchError
    raise BinaryMissingError.new 'crabtrap', @config[:bin_path]
  rescue Timeout::Error
    proc.stop
    raise
  end
  proc
end
wait_for_server() click to toggle source
# File lib/crabfarm/crabtrap_runner.rb, line 77
def wait_for_server
  loop do
    begin
      # TODO: improve waiting, making this kind of request could change crabtrap's stack
      Net::HTTP.get_response(URI.parse("http://127.0.0.1:#{port}/status"))
      break
    rescue
    end
  end
end