Sha256: 432f059e87232df3a114b5da6a90d289784ba0d25f8442727818f69fcc42e4da
Contents?: true
Size: 1.56 KB
Versions: 8
Compression:
Stored size: 1.56 KB
Contents
module DeepTest class Worker attr_reader :number def initialize(number, blackboard, worker_listener) @number = number @blackboard = blackboard @listener = worker_listener end def run @listener.starting(self) while work_unit = next_work_unit @listener.starting_work(self, work_unit) result = begin work_unit.run rescue Exception => error Error.new(work_unit, error) end @listener.finished_work(self, work_unit, result) @blackboard.write_result result if ENV['DEEP_TEST_SHOW_WORKER_DOTS'] == 'yes' $stdout.print '.' $stdout.flush end end rescue Server::NoWorkUnitsRemainingError DeepTest.logger.debug("Worker #{number}: no more work to do") rescue Exception => e DeepTest.logger.debug "Worker #{number} EXCEPTION: #{e.message}\n#{e.backtrace.join("\n")}" raise end def next_work_unit DeepTest.logger.debug "Worker #{number} getting next work unit from: #{@blackboard.inspect}" @blackboard.take_work rescue Server::NoWorkUnitsAvailableError sleep 0.02 retry end class Error attr_accessor :work_unit, :error def initialize(work_unit, error) @work_unit, @error = work_unit, error end def ==(other) work_unit == other.work_unit && error == other.error end def to_s "#{@work_unit}: #{@error}\n" + (@error.backtrace || []).join("\n") end end end end
Version data entries
8 entries across 8 versions & 1 rubygems