aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-06-16 23:59:33 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-06-16 23:59:33 +0000
commit2c1e74edb1c6518c3c25d922d29c1ad44d1ad7a0 (patch)
tree5231b12ec03f848ae3b7db4272c60476737bf7cd /spec
parent5eb7aa5c02a9c89708648104a0761d564dc22b27 (diff)
downloadruby-2c1e74edb1c6518c3c25d922d29c1ad44d1ad7a0.tar.gz
default.mspec: limit cores
* spec/default.mspec (MSpecScript::JobServer#cores): limit max number of processors, not to acquire tokens more than necessary. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59103 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec')
-rw-r--r--spec/default.mspec9
-rwxr-xr-xspec/mspec/lib/mspec/commands/mspec.rb2
-rw-r--r--spec/mspec/lib/mspec/utils/script.rb4
3 files changed, 8 insertions, 7 deletions
diff --git a/spec/default.mspec b/spec/default.mspec
index cdc9fe558e..0805f467a4 100644
--- a/spec/default.mspec
+++ b/spec/default.mspec
@@ -24,15 +24,16 @@ class MSpecScript
end
module MSpecScript::JobServer
- def cores
- if /(?:\A|\s)--jobserver-(?:auth|fds)=(\d+),(\d+)/ =~ ENV["MAKEFLAGS"]
- cores = 0
+ def cores(max = 1)
+ if max > 1 and /(?:\A|\s)--jobserver-(?:auth|fds)=(\d+),(\d+)/ =~ ENV["MAKEFLAGS"]
+ cores = 1
begin
r = IO.for_fd($1.to_i(10), "rb", autoclose: false)
w = IO.for_fd($2.to_i(10), "wb", autoclose: false)
- jobtokens = r.read_nonblock(1024)
+ jobtokens = r.read_nonblock(max - 1)
cores = jobtokens.size
if cores > 0
+ cores += 1
jobserver = w
w = nil
at_exit {
diff --git a/spec/mspec/lib/mspec/commands/mspec.rb b/spec/mspec/lib/mspec/commands/mspec.rb
index f18d836252..bd34d5f0da 100755
--- a/spec/mspec/lib/mspec/commands/mspec.rb
+++ b/spec/mspec/lib/mspec/commands/mspec.rb
@@ -98,7 +98,7 @@ class MSpecMain < MSpecScript
end
output_files = []
- processes = [cores, @files.size].min
+ processes = cores(@files.size)
children = processes.times.map { |i|
name = tmp "mspec-multi-#{i}"
output_files << name
diff --git a/spec/mspec/lib/mspec/utils/script.rb b/spec/mspec/lib/mspec/utils/script.rb
index 3e507d2b4a..910dcd22a7 100644
--- a/spec/mspec/lib/mspec/utils/script.rb
+++ b/spec/mspec/lib/mspec/utils/script.rb
@@ -234,9 +234,9 @@ class MSpecScript
files patterns
end
- def cores
+ def cores(max = 1)
require 'etc'
- Etc.nprocessors
+ [Etc.nprocessors, max].min
end
def setup_env