类 Minitest::Parallel::Executor

用于并行运行多个测试的引擎。

属性

size[R]

工作池的大小。

公共类方法

new(size) 点击以切换源代码

创建一个具有 size 个工作线程的并行测试执行器。

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

公共实例方法

<<(work;) 点击以切换源代码

向队列添加一个作业

# File minitest-5.25.4/lib/minitest/parallel.rb, line 43
def << work; @queue << work; end
shutdown() 点击以切换源代码

通过向工作线程发送退出信号并等待它们完成当前工作来关闭工作池。

# File minitest-5.25.4/lib/minitest/parallel.rb, line 50
def shutdown
  size.times { @queue << nil }
  @pool.each(&:join)
end
start() 点击以切换源代码

启动执行器

# 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