Skip to content

Split T900_distributed.py module into separate sub-tests with self-test.py refactor#636

Closed
klimaj wants to merge 65 commits intoRosettaCommons:mainfrom
klimaj:unittests
Closed

Split T900_distributed.py module into separate sub-tests with self-test.py refactor#636
klimaj wants to merge 65 commits intoRosettaCommons:mainfrom
klimaj:unittests

Conversation

@klimaj
Copy link
Copy Markdown
Member

@klimaj klimaj commented Mar 26, 2026

This PR accomplishes several things:

  1. Splits the PyRosettaCluster unit tests specified in the T900_distributed module into separate modules (T901T921).
  2. Splits the PyRosettaCluster unit test modules into separate modules (as discussed in PR Improving resilience of PyRosettaCluster upon Dask worker preemption #630)
  3. Provide a streaming and non-streaming version of a pyrosetta.distributed framework unit test runner; all T900-series tests use streaming, except for 2 unit tests in T917 that use non-streaming since they spawn additional subprocesses that do not stream.
  4. Catch and handle timeouts in non-streaming subprocesses launched in T917.
  5. Refactor self-test.py away from forking processes, using customizable subprocess.Popen instead. Also closes an open file handle, pipes standard error to standard output for improved debugging, and prioritizes running T900-series tests first.
  6. Run Python subprocesses in Benchmark server testing framework unbuffered.
  7. Flush print statements in PyRosetta.
  8. Micro-improvements to PyRosettaCluster such as better error messages, and temporary directory cleanup during exceptions.
  9. Stabilizes the TestReproducibilityRemodelTaskUpdates test case by: (i) serializing double precision Python float values in Rosetta command-line options for precise round-trips through Rosetta C++ double precision core::Real values, and (ii) serializing PackedPose objects via PDB strings for updating task dictionaries between PyRosetta protocols.
  10. Adds Python-3.8 compatibility in the TestReproducibilityTaskUpdates test case: random.randbytes(14) -> random.getrandbits(14 * 8).to_bytes(14, "little")

@klimaj klimaj requested a review from lyskov March 29, 2026 21:34
@klimaj klimaj changed the title Test splitting T900_distributed.py module into separate sub-tests Split T900_distributed.py module into separate sub-tests Mar 29, 2026
@klimaj klimaj added bug Something isn't working ready_for_review This PR is ready to be reviewed and merged. labels Apr 6, 2026
@lyskov
Copy link
Copy Markdown
Member

lyskov commented Apr 8, 2026

Also, could you please update PR description to accurately reflect change set? (ie changes to self-test.py needs to be removed) Thanks,

@klimaj klimaj changed the title Split T900_distributed.py module into separate sub-tests Split T900_distributed.py module into separate sub-tests with self-test.py refactor Apr 10, 2026
@klimaj klimaj removed the ready_for_review This PR is ready to be reviewed and merged. label Apr 10, 2026
@klimaj
Copy link
Copy Markdown
Member Author

klimaj commented Apr 10, 2026

@lyskov I have updated the PR description with the current change set in PR #648, which supercedes this PR. Therefore, I will close this PR.

@klimaj klimaj closed this Apr 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

03 PyRosetta bug Something isn't working enhancement New feature or request industry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants