Skip to content

Run the everyday make test on xdist workers - #1765

Merged
sunt05 merged 5 commits into
masterfrom
sunt05/make-test-parallel
Sep 9, 2026
Merged

sunt05 merged 5 commits into
masterfrom
sunt05/make-test-parallel

Conversation

@sunt05

@sunt05 sunt05 commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

What

make test now runs on pytest-xdist workers: -n auto --maxprocesses=$(TEST_JOBS) --dist worksteal, with TEST_JOBS defaulting to 4 and overridable (make test TEST_JOBS=8). The recipe's banner says so and points at pytest --lf for re-running failures. The test README gets the same note and stops linking a documentation page that does not exist.

Why

pytest-xdist has been a dev dependency since #1604 and the CI physics tier has used work stealing since then; only the local everyday run was still serial. On the same 1651-test selection, ten-core Apple silicon, CI wheel: 625 s serial against 124 s with workers, same results.

The cap defaults to 4 because each worker that draws one of the full-year DailyState tests materialises its own year of output (about 1 GB), so an unbounded worker count can exhaust a 16 GB laptop; a machine with memory to spare raises it per invocation.

Verification

  • make -n test renders the intended pytest command.
  • The 124 s figure is the measured make test selection with -n auto on this machine; the serial figure is the same selection without it.

No test content changes.

`make test` now passes `-n auto --maxprocesses=$(TEST_JOBS) --dist worksteal`
to pytest, with TEST_JOBS defaulting to 4 and overridable per invocation.
pytest-xdist has been a dev dependency since #1604 and CI has used this
scheduler for the physics tier since then; only the local default was still
serial. Measured on the same 1651-test selection on a ten-core machine:
625 s serial, 124 s with workers, all passing.

The cap of 4 exists because each worker that draws one of the full-year
DailyState tests materialises its own year of output, about 1 GB, so an
unbounded worker count can exhaust a 16 GB laptop.

The test README also stops pointing at a documentation page that does not
exist (docs/source/contributing/testing_guide.rst); the guide is
dev-ref/testing/TESTING_GUIDELINES.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@sunt05 sunt05 added the 2-infra:test Testing infrastructure, pytest label Sep 8, 2026
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

CI Build Plan

Changed Files

CI/workflows (1 file)

  • Makefile

Tests (1 file)

  • test/README.md

Documentation (1 file)

  • CHANGELOG.md

Build Configuration

Configuration
Platforms Linux x86_64
Python 3.12
Test tier smoke (critical tests only)
PR status Ready (standard matrix)

Rationale

  • CI/workflow files changed -> validation build
  • Test files changed -> validation build

Updated by CI on each push. See path-filters.yml for category definitions.

@sunt05
sunt05 enabled auto-merge September 9, 2026 09:51
@sunt05
sunt05 added this pull request to the merge queue Sep 9, 2026
Merged via the queue into master with commit 047b2bc Sep 9, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2-infra:test Testing infrastructure, pytest

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant