Repository navigation
Test real HTTP, WebSocket and database async lifecycles across event loops - #113
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The existing framework smoke scripts mostly check one successful request. They do not establish whether an application can keep using its HTTP or database pool after cancellation, timeouts, truncated responses or late worker-thread completion.
This PR adds 66 parameterized downstream lifecycle checks on top of merged #112, using actual libraries and loopback TCP/TLS or temporary SQLite databases:
The suite compares asyncio, native rsloop and optional uvloop. It uses event gates, aiohttp queue tracing, a WebSocket ping/pong handshake and a real blocked SQLite worker; assertions do not depend on packet boundaries. It checks leaked tasks and unhandled loop exceptions, closes resources and bounds waits. No external service or credentials are required.
A locked ecosystem dependency group and a dedicated workflow run these contracts on Linux/Python 3.10 and 3.14, macOS/Python 3.14 and Windows/Python 3.14. The job requires downstream imports and records versions; only unsupported uvloop variants skip on Windows. The ecosystem marker is excluded from the core matrix, preserving the separation from optional native dependencies.
The new documentation maps application cases to upstream contracts, explains execution and limitations, and links primary project documentation. Existing Redis/hiredis, AnyIO and framework tests remain complementary.
Validation actually executed locally on Linux, CPython 3.14.7, release extension:
No new rsloop production defect was reproduced by these cases, so this PR changes tests, CI, dependency groups/lock and documentation only. It does not claim PostgreSQL, HTTP/2, proxy, production-load or downstream free-threaded compatibility. The local core suite is not claimed fully green.
Final-head CI (
29222a5) completed successfully:Windows/macOS and Python 3.10 ecosystem execution took place in GitHub Actions, not locally. No CI failures remain, and the downstream scenarios required no rsloop production-code fix.