class DeepTest::ResultReader

Public Class Methods

new(blackboard) click to toggle source
# File lib/deep_test/result_reader.rb, line 3
def initialize(blackboard)
  @blackboard = blackboard
end

Public Instance Methods

read(original_work_units_by_id) { |work_unit, result| ... } click to toggle source
# File lib/deep_test/result_reader.rb, line 7
def read(original_work_units_by_id)
  work_units_by_id = original_work_units_by_id.dup
  errors = 0

  begin
    until errors == work_units_by_id.size
      Thread.pass
      result = @blackboard.take_result
      next if result.nil?

      if Worker::Error === result
        puts result
        errors += 1
      else
        if result.respond_to?(:output) && (output = result.output)
          print output
        end

        work_unit = work_units_by_id.delete(result.identifier)
        yield [work_unit, result]
      end
    end
  rescue Server::ResultOverdueError
    DeepTest.logger.error("Results are overdue from server, ending run")
  end

  work_units_by_id
end