class ActiveSupport::Testing::Parallelization::Worker

:nodoc:

def add_setup_exception(result)

def add_setup_exception(result)
  result.failures.prepend Minitest::UnexpectedError.new(@setup_exception)
end

def after_fork

def after_fork
  Parallelization.after_fork_hooks.each do |cb|
    cb.call(@number)
  end
end

def initialize(number, url)

def initialize(number, url)
  @id = SecureRandom.uuid
  @number = number
  @url = url
  @setup_exception = nil
end

def perform_job(job)

def perform_job(job)
  klass    = job[0]
  method   = job[1]
  reporter = job[2]
  set_process_title("#{klass}##{method}")
  result = klass.with_info_handler reporter do
    Minitest.run_one_method(klass, method)
  end
  safe_record(reporter, result)
end

def run_cleanup

def run_cleanup
  Parallelization.run_cleanup_hooks.each do |cb|
    cb.call(@number)
  end
end

def safe_record(reporter, result)

def safe_record(reporter, result)
  add_setup_exception(result) if @setup_exception
  begin
    @queue.record(reporter, result)
  rescue DRb::DRbConnError
    result.failures.map! do |failure|
      if failure.respond_to?(:error)
        # minitest >5.14.0
        error = DRb::DRbRemoteError.new(failure.error)
      else
        error = DRb::DRbRemoteError.new(failure.exception)
      end
      Minitest::UnexpectedError.new(error)
    end
    @queue.record(reporter, result)
  rescue Interrupt
    @queue.interrupt
    raise
  end
  set_process_title("(idle)")
end

def set_process_title(status)

def set_process_title(status)
  Process.setproctitle("Rails test worker #{@number} - #{status}")
end

def start

def start
  fork do
    set_process_title("(starting)")
    DRb.stop_service
    @queue = DRbObject.new_with_uri(@url)
    @queue.start_worker(@id)
    begin
      after_fork
    rescue => @setup_exception; end
    work_from_queue
  ensure
    set_process_title("(stopping)")
    run_cleanup
    @queue.stop_worker(@id)
  end
end

def work_from_queue

def work_from_queue
  while job = @queue.pop
    perform_job(job)
  end
end