Class: Minitest::Parallel::Executor
| Relationships & Source Files | |
| Inherits: | Object | 
| Defined in: | lib/minitest/parallel.rb | 
Overview
The engine used to run multiple tests in parallel.
Class Method Summary
- 
    
      .new(size)  ⇒ Executor 
    
    constructor
    Create a parallel test executor of with #size workers. 
Instance Attribute Summary
- 
    
      #size  
    
    readonly
    The size of the pool of workers. 
Instance Method Summary
Constructor Details
    .new(size)  ⇒ Executor 
  
Create a parallel test executor of with #size workers.
Instance Attribute Details
#size (readonly)
The size of the pool of workers.
# File 'lib/minitest/parallel.rb', line 12
attr_reader :size
Instance Method Details
#<<(work)
Add a job to the queue
# File 'lib/minitest/parallel.rb', line 43
def << work; @queue << work; end
#shutdown
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 'lib/minitest/parallel.rb', line 50
def shutdown size.times { @queue << nil } @pool.each(&:join) end
#start
Start the executor
# File 'lib/minitest/parallel.rb', line 26
def start @pool = size.times.map { Thread.new(@queue) do |queue| Thread.current.abort_on_exception = true while (job = queue.pop) 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