Parent

Class/Module Index [+]

Quicksearch

DeepTest::Server

Public Class Methods

new(options) click to toggle source
# File lib/deep_test/server.rb, line 21
def initialize(options)
  @options = options
  @work_queue = Queue.new
  @result_queue = Queue.new

  if Metrics::Gatherer.enabled?
    require File.dirname(__FILE__) + "/metrics/queue_lock_wait_time_measurement"
    @work_queue.extend Metrics::QueueLockWaitTimeMeasurement
    @result_queue.extend Metrics::QueueLockWaitTimeMeasurement
    Metrics::Gatherer.section("server queue lock wait times") do |s|
      s.measurement("work queue total pop wait time", @work_queue.total_pop_time)
      s.measurement("work queue total push wait time", @work_queue.total_push_time)
      s.measurement("result queue total pop wait time", @result_queue.total_pop_time)
      s.measurement("result queue total push wait time", @result_queue.total_push_time)
    end
  end
end
remote_reference(address, port) click to toggle source
# File lib/deep_test/server.rb, line 14
def self.remote_reference(address, port)
  DRb.start_service
  blackboard = DRbObject.new_with_uri("druby://#{address}:#{port}")
  DeepTest.logger.debug "Connecting to DeepTest server at #{blackboard.__drburi}"
  blackboard
end
start(options) click to toggle source
# File lib/deep_test/server.rb, line 3
def self.start(options)
  server = new(options)
  DRb.start_service("druby://0.0.0.0:#{options.server_port}", server)
  DeepTest.logger.info "Started DeepTest service at #{DRb.uri}"
  server
end
stop() click to toggle source
# File lib/deep_test/server.rb, line 10
def self.stop
  DRb.stop_service
end

Public Instance Methods

done_with_work() click to toggle source
# File lib/deep_test/server.rb, line 39
def done_with_work
  @done_with_work = true
end
take_result() click to toggle source
# File lib/deep_test/server.rb, line 43
def take_result
  Timeout.timeout(@options.timeout_in_seconds, ResultOverdueError) do
    @result_queue.pop
  end
end
take_work() click to toggle source
# File lib/deep_test/server.rb, line 49
def take_work
  raise NoWorkUnitsRemainingError if @done_with_work

  @work_queue.pop(true)
rescue ThreadError => e
  if e.message == "queue empty"
    raise NoWorkUnitsAvailableError
  else
    raise
  end
end
write_result(result) click to toggle source
# File lib/deep_test/server.rb, line 61
def write_result(result)
  @result_queue.push result
  nil
end
write_work(work_unit) click to toggle source
# File lib/deep_test/server.rb, line 66
def write_work(work_unit)
  @work_queue.push work_unit
  nil
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.