From f7d506d5526aaa29f2737be46fa5a8e155631fe0 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Fri, 11 Aug 2023 16:45:40 +0900 Subject: [PATCH] n-workers: use the max N cores by default --- lib/grntest/tester.rb | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/grntest/tester.rb b/lib/grntest/tester.rb index 1cdc81b..9a55a11 100644 --- a/lib/grntest/tester.rb +++ b/lib/grntest/tester.rb @@ -199,7 +199,8 @@ def create_option_parser(tester, tag) end parser.on("--n-workers=N", Integer, - "Use N workers to run tests") do |n| + "Use N workers to run tests", + "(#{tester.n_workers})") do |n| tester.n_workers = n end @@ -382,7 +383,7 @@ def initialize @base_directory = Pathname(".") @database_path = nil @reporter = nil - @n_workers = 1 + @n_workers = guess_n_cores @output = $stdout @keep_database = false @use_color = nil @@ -544,6 +545,28 @@ def run_test_suites(test_suites) runner.run(test_suites) end + def guess_n_cores + begin + if command_exist?("nproc") + # Linux + Integer(`nproc`.strip, 10) + elsif command_exist?("sysctl") + # macOS + Integer(`sysctl -n hw.logicalcpu`.strip, 10) + else + # Windows + value = ENV["NUMBER_OF_PROCESSORS"] + if value + Integer(value, 10) + else + 1 + end + end + rescue ArgumentError + 1 + end + end + def detect_suitable_diff if command_exist?("cut-diff") @diff = "cut-diff"