PERF: Update docker:test to run QUnit with more cores if available (#27816)

This commit updates the `docker:test` rake task to run core and plugin
QUnit tests in parallel using half the number of available CPU
processors to speed up time it takes to run the tests on hardware with
more CPU cores.

Before this commit, core QUnit tests ran by the `docker:test` rake task was capped at 3 parallel
processes while plugin QUnit tests was not ran in parallel.
This commit is contained in:
Alan Guo Xiang Tan 2024-07-10 11:27:20 +08:00 committed by GitHub
parent b4b7fa17af
commit 3fee52eae3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -78,8 +78,12 @@ def migrate_databases(parallel: false, load_plugins: false)
success success
end end
def number_of_processors
Etc.nprocessors
end
def system_tests_parallel_tests_processors_env def system_tests_parallel_tests_processors_env
"PARALLEL_TEST_PROCESSORS=#{Etc.nprocessors / 2}" "PARALLEL_TEST_PROCESSORS=#{number_of_processors / 2}"
end end
# Environment Variables (specific to this rake task) # Environment Variables (specific to this rake task)
@ -294,7 +298,7 @@ task "docker:test" do
unless ENV["SKIP_CORE"] unless ENV["SKIP_CORE"]
@good &&= @good &&=
run_or_fail( run_or_fail(
"cd app/assets/javascripts/discourse && CI=1 yarn ember exam --load-balance --parallel=3 --random", "cd app/assets/javascripts/discourse && CI=1 yarn ember exam --load-balance --parallel=#{number_of_processors / 2} --random",
) )
end end
@ -305,7 +309,10 @@ task "docker:test" do
"CI=1 bundle exec rake plugin:qunit['#{ENV["SINGLE_PLUGIN"]}','#{js_timeout}']", "CI=1 bundle exec rake plugin:qunit['#{ENV["SINGLE_PLUGIN"]}','#{js_timeout}']",
) )
else else
@good &&= run_or_fail("CI=1 bundle exec rake plugin:qunit['*','#{js_timeout}']") @good &&=
run_or_fail(
"QUNIT_PARALLEL=#{number_of_processors / 2} CI=1 bundle exec rake plugin:qunit['*','#{js_timeout}']",
)
end end
end end
end end