From 3deade4b14de809f67ed0471f8e91c91b25fedcc Mon Sep 17 00:00:00 2001 From: Yoshiya Hinosawa Date: Thu, 30 Mar 2023 23:35:45 +0900 Subject: chore(ext/node): run node compat parallel tests in core number concurrency (#18505) We currently run the all test cases in `parallel` category at the same time, which invokes hundreds process at the same time, and that seems causing some flakiness in CI. (maybe related to #18487) This PR limits the concurrency to the number of cpu cores. This is more aligned to how Node.js run their `parallel` test in their repository. https://github.com/nodejs/node/blob/42c4a359525f70c322c0df0eac188fa2b05c3f53/Makefile#L356 --- cli/tests/node_compat/test.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'cli') diff --git a/cli/tests/node_compat/test.ts b/cli/tests/node_compat/test.ts index ad2847f08..4ab703576 100644 --- a/cli/tests/node_compat/test.ts +++ b/cli/tests/node_compat/test.ts @@ -1,5 +1,6 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. import { magenta } from "std/fmt/colors.ts"; +import { pooledMap } from "std/async/pool.ts"; import { dirname, fromFileUrl, join } from "std/path/mod.ts"; import { fail } from "std/testing/asserts.ts"; import { @@ -115,11 +116,16 @@ Deno.test("Node.js compatibility", async (t) => { for (const path of testPaths.sequential) { await runTest(t, path); } - const pending = []; - for (const path of testPaths.parallel) { - pending.push(runTest(t, path)); + const testPool = pooledMap( + navigator.hardwareConcurrency, + testPaths.parallel, + (path) => runTest(t, path), + ); + const testCases = []; + for await (const testCase of testPool) { + testCases.push(testCase); } - await Promise.all(pending); + await Promise.all(testCases); }); function checkConfigTestFilesOrder(testFileLists: Array) { -- cgit v1.2.3