vlsi opened a new pull request, #6715: URL: https://github.com/apache/jmeter/pull/6715
## Why The CI test matrix was generated by a vendored `matrix_builder.js` — a hand-maintained copy of https://github.com/vlsi/github-actions-random-matrix. Upstream fixes and pairwise-coverage improvements had to be ported by hand, and the job set was assembled by a sequence of `generateRow()` calls whose count depended on call order rather than on `MATRIX_JOBS`. ## What - Replace the vendored builder with the published `@vlsi/github-actions-random-matrix` package (`2.1.0`), pinned via `package.json` + `package-lock.json`. - Port `matrix.js` to ESM `matrix.mjs` and collapse the per-requirement `generateRow()` calls plus the final `generateRows(N)` into a single `generateRows(N, {require: […]})`. The required combinations (same hashcode, a Windows job, Java 17, Java 25) are packed into as few jobs as possible, the job count is exactly `MATRIX_JOBS`, and the result no longer depends on the order of the list. - Drive randomness from the package's seedable generator instead of `Math.random()`, so a build is reproducible from its `RNG_SEED` (or the PR number) and the seed is written to the job summary. Add a `--coverage` flag for previewing pair coverage locally. - Run `npm ci --prefix .github/workflows` in the `matrix_prep` step before the script, and git-ignore `.github/workflows/node_modules`. The axes, constraints, and per-row JVM/Gradle arguments are unchanged, so the generated jobs are equivalent to before. ## How to verify ```bash npm ci --prefix .github/workflows MATRIX_JOBS=4 RNG_SEED=demo node .github/workflows/matrix.mjs # inspect the rows node .github/workflows/matrix.mjs --coverage # pair-coverage summary ``` The same seed reproduces the same matrix; across seeds every run keeps a Windows job, a same-hashcode job, and Java 17 and 25, never emits the excluded Java EA or Semeru, and never pairs Oracle JDK with macOS. ## Follow-up `java_vendor` is read after the source object is overwritten, so it resolves to `undefined` and `jdkTestVendor` is passed empty. This bug predates the migration (it is present in the original `matrix.js`), so this PR keeps the existing behaviour; the fix is tracked separately. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
