mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
run railties tests in parallel, default to 2 cores
This commit is contained in:
parent
a7e715e102
commit
265f13495f
2 changed files with 39 additions and 2 deletions
|
@ -33,6 +33,45 @@ module ActiveSupport
|
||||||
end
|
end
|
||||||
|
|
||||||
module Isolation
|
module Isolation
|
||||||
|
require 'thread'
|
||||||
|
|
||||||
|
class ParallelEach
|
||||||
|
include Enumerable
|
||||||
|
|
||||||
|
# default to 2 cores
|
||||||
|
CORES = ENV['TEST_CORES'] || 2
|
||||||
|
|
||||||
|
def initialize list
|
||||||
|
@list = list
|
||||||
|
@queue = SizedQueue.new CORES
|
||||||
|
end
|
||||||
|
|
||||||
|
def grep pattern
|
||||||
|
self.class.new super
|
||||||
|
end
|
||||||
|
|
||||||
|
def each
|
||||||
|
threads = CORES.times.map {
|
||||||
|
Thread.new {
|
||||||
|
while job = @queue.pop
|
||||||
|
yield job
|
||||||
|
end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@list.each { |i| @queue << i }
|
||||||
|
CORES.times { @queue << nil }
|
||||||
|
threads.each(&:join)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.included klass
|
||||||
|
klass.extend(Module.new {
|
||||||
|
def test_methods
|
||||||
|
ParallelEach.new super
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
def self.forking_env?
|
def self.forking_env?
|
||||||
!ENV["NO_FORK"] && ((RbConfig::CONFIG['host_os'] !~ /mswin|mingw/) && (RUBY_PLATFORM !~ /java/))
|
!ENV["NO_FORK"] && ((RbConfig::CONFIG['host_os'] !~ /mswin|mingw/) && (RUBY_PLATFORM !~ /java/))
|
||||||
end
|
end
|
||||||
|
|
|
@ -23,8 +23,6 @@ require 'tmpdir'
|
||||||
|
|
||||||
module TestHelpers
|
module TestHelpers
|
||||||
module Paths
|
module Paths
|
||||||
module_function
|
|
||||||
|
|
||||||
def app_template_path
|
def app_template_path
|
||||||
File.join Dir.tmpdir, 'app_template'
|
File.join Dir.tmpdir, 'app_template'
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue