class Minitest::Parallel::Executor - minitest: Ruby Standard Library Documentation

# class Minitest::Parallel::Executor

The engine used to run multiple tests in parallel.

### Attributes

size[R]

The size of the pool of workers.

### Public Class Methods

new(size) click to toggle source

Create a parallel test executor of with `size` workers.

    # File minitest-5.25.4/lib/minitest/parallel.rb, line 17
    def initialize size
      @size  = size
      @queue = Thread::Queue.new
      @pool  = nil
    end

### Public Instance Methods

<<(work;) click to toggle source

Add a job to the queue

    # File minitest-5.25.4/lib/minitest/parallel.rb, line 43
    def << work; @queue << work; end

shutdown() click to toggle source

Shuts down the pool of workers by signalling them to quit and waiting for them all to finish what they’re currently working on.

    # File minitest-5.25.4/lib/minitest/parallel.rb, line 50
    def shutdown
      size.times { @queue << nil }
      @pool.each(&:join)
    end

start() click to toggle source

Start the executor

    # File minitest-5.25.4/lib/minitest/parallel.rb, line 26
    def start
      @pool  = Array.new(size) {
        Thread.new @queue do |queue|
          Thread.current.abort_on_exception = true
          while job = queue.pop do
            klass, method, reporter = job
            reporter.synchronize { reporter.prerecord klass, method }
            result = Minitest.run_one_method klass, method
            reporter.synchronize { reporter.record result }
          end
        end
      }
    end