Skip to content

Speed Up Server Tests By Parallelizing Them - #762

Merged
rr- merged 1 commit into
rr-:masterfrom
some-hy-guy:parallelized-server-tests
Jan 7, 2026
Merged

Speed Up Server Tests By Parallelizing Them#762
rr- merged 1 commit into
rr-:masterfrom
some-hy-guy:parallelized-server-tests

Conversation

@some-hy-guy

@some-hy-guy some-hy-guy commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

Enabled running python server tests in parallel by using the standard pytest-xdist library, which improved the performance of running the whole test suite on a 16-core machine from 236.81s (original) to 101.66s (fully parallelized), a 57% reduction in total run time.

The changes were implemented by adding pytest-xdist to dev-requirements.txt and the server's Dockerfile.

Only one test file required changes to support parallelization - test_user_tokens.py. It incompatible with being run in parallel due to its use of dynamic time-based test parameters. The dynamicism wasn't actually improving test coverage at all, so I replaced it with static test parameters.

Other small improvements:

  • Added in a helper script, run-server-tests.sh, to make it easy to run the tests in Docker. The script builds only the Docker layers required for testing, spins up the new image, and then executes the testing command in the docker container. It also supports running the tests in serial, as well as passing in specific test paths and only testing those tests.
  • Updated the Dockerfile to fix Docker warnings when building about inconsistent casings in the various FROM X AS Y statements.

Addresses Issue #761

…pytest-xdist library, which improved the performance of running the whole test suite on a 16-core machine from 236.81s (original) to 101.66s (fully parallelized), a 57% reduction in total run time.

The changes were implemented by adding pytest-xdist to dev-requirements.txt and the server's Dockerfile.

Only one test file required changes to support parallelization - test_user_tokens.py. It incompatible with being run in parallel due to its use of dynamic time-based test parameters. The dynamicism wasn't actually improving test coverage at all, so I replaced it with static test parameters.

Other small improvements:
 * Added in a helper script, run-server-tests.sh, to make it easy to run the tests in Docker. The script builds only the Docker layers required for testing, spins up the new image, and then executes the testing command in the docker container. It also supports running the tests in serial, as well as passing in specific test paths and only testing those tests.
 * Updated the Dockerfile to fix Docker warnings when building about inconsistent casings in the various FROM X AS Y statements.
@rr-
rr- merged commit 054f447 into rr-:master Jan 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants