PYTHON-5290 - Align client bulkwrite prose test with spec - #3009
Conversation
There was a problem hiding this comment.
Pull request overview
Aligns the Client-Side Operations Timeout (CSOT) prose test test_timeout_in_multi_batch_bulk_write with the CSOT specification requirement that it only run against standalone topologies, preventing it from running in unsupported environments.
Changes:
- Restrict
test_timeout_in_multi_batch_bulk_writeto standalone topology viarequire_standalone(sync + async variants). - Remove the prior
@flaky(...)decorator from that test (sync + async variants).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| test/test_client_bulk_write.py | Adds @client_context.require_standalone to the CSOT multi-batch bulk write timeout test (sync). |
| test/asynchronous/test_client_bulk_write.py | Adds @async_client_context.require_standalone to the same CSOT test (async). |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| @client_context.require_version_min(8, 0, 0, -24) | ||
| @client_context.require_failCommand_fail_point | ||
| @flaky(reason="PYTHON-5290", max_runs=3, affects_cpython_linux=True) | ||
| @client_context.require_standalone | ||
| def test_timeout_in_multi_batch_bulk_write(self): |
| @async_client_context.require_version_min(8, 0, 0, -24) | ||
| @async_client_context.require_failCommand_fail_point | ||
| @flaky(reason="PYTHON-5290", max_runs=3, affects_cpython_linux=True) | ||
| @async_client_context.require_standalone | ||
| async def test_timeout_in_multi_batch_bulk_write(self): |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
| from pymongo.errors import ( | ||
| ClientBulkWriteException, | ||
| DocumentTooLarge, | ||
| InvalidOperation, |
There was a problem hiding this comment.
Maybe we should leave this explicit import because without it it's only covered by from pymongo.operations import * accidentally. InvalidOperation still appears to be in use on lines 52 and 535.
There was a problem hiding this comment.
If it's being imported somehow and the file doesn't fail to run then I don't see the need for a second explicit import.
There was a problem hiding this comment.
The reason is (leaving aside the "code smell" of * imports …) from pymongo.operations import * is (typically) for things in pymongo.operations and so if operations one day decides to not import InvalidOperation then this test unexpectedly breaks.
There was a problem hiding this comment.
Resolved by removing the * import entirely and explicitly importing instead.
PYTHON-5290
Changes in this PR
The
test_timeout_in_multi_batch_bulk_writemust only be run against standalone topologies according to the spec, but we currently apply no such limitation. This PR aligns us with the spec.
Test Plan
N/A
Checklist
Checklist for Author
Checklist for Reviewer