-
-
Notifications
You must be signed in to change notification settings - Fork 32.1k
bpo-35347: Fix test_socket.NonBlockingTCPTests #10791
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
cc @pablogsal FYI ;-) |
testAccept() and testRecv() of test_socket.NonBlockingTCPTests have a race condition: time.sleep() is used as a weak synchronization primitive and the tests fail randomly on slow buildbots. Fix these tests using a reliable threading.Event. Changes: * Replace send() with sendall() * Expect specific BlockingIOError rather than generic OSError * Add a timeout to testAccept() and testRecv() select * Use addCleanup() and context manager to close sockets * Use assertLess() and assertRaises()
@1st1, @pablogsal: I wrote a larger change than I expected to enhance and fix test_socket.NonBlockingTCPTests. Would you mind to review this change? First, I wrote a much larger change to "cleanup" the whole test case. Since I would like to apply this fix to 2.7, 3.6 and 3.7, I rewrote the change to have a "minimum" fix for testAccept() and testRecv(). Once the fix will be merged, I will write a second "cleanup" PR specific to master. |
This change should be backported to 2.7, but I will backport it manually since BlockingIOError must be written differently in Python 2.7. |
Thanks @vstinner for the PR 🌮🎉.. I'm working now to backport this PR to: 3.6, 3.7. |
testAccept() and testRecv() of test_socket.NonBlockingTCPTests have a race condition: time.sleep() is used as a weak synchronization primitive and the tests fail randomly on slow buildbots. Use a reliable threading.Event to fix these tests. Other changes: * Replace send() with sendall() * Expect specific BlockingIOError rather than generic OSError * Add a timeout to select() in testAccept() and testRecv() * Use addCleanup() to close sockets * Use assertRaises() (cherry picked from commit ebd5d6d) Co-authored-by: Victor Stinner <vstinner@redhat.com>
GH-10815 is a backport of this pull request to the 3.7 branch. |
GH-10816 is a backport of this pull request to the 3.6 branch. |
testAccept() and testRecv() of test_socket.NonBlockingTCPTests have a race condition: time.sleep() is used as a weak synchronization primitive and the tests fail randomly on slow buildbots. Use a reliable threading.Event to fix these tests. Other changes: * Replace send() with sendall() * Expect specific BlockingIOError rather than generic OSError * Add a timeout to select() in testAccept() and testRecv() * Use addCleanup() to close sockets * Use assertRaises() (cherry picked from commit ebd5d6d) Co-authored-by: Victor Stinner <vstinner@redhat.com>
I'm sorry, I am impatient :-( I reviewed again my code and then I merged it my fix to make CIs more reliable. |
testAccept() and testRecv() of test_socket.NonBlockingTCPTests have a race condition: time.sleep() is used as a weak synchronization primitive and the tests fail randomly on slow buildbots. Use a reliable threading.Event to fix these tests. Other changes: * Replace send() with sendall() * Expect specific BlockingIOError rather than generic OSError * Add a timeout to select() in testAccept() and testRecv() * Use addCleanup() to close sockets * Use assertRaises() (cherry picked from commit ebd5d6d) Co-authored-by: Victor Stinner <vstinner@redhat.com>
testAccept() and testRecv() of test_socket.NonBlockingTCPTests have a race condition: time.sleep() is used as a weak synchronization primitive and the tests fail randomly on slow buildbots. Use a reliable threading.Event to fix these tests. Other changes: * Replace send() with sendall() * Expect specific BlockingIOError rather than generic OSError * Add a timeout to select() in testAccept() and testRecv() * Use addCleanup() to close sockets * Use assertRaises() (cherry picked from commit ebd5d6d) Co-authored-by: Victor Stinner <vstinner@redhat.com>
testAccept() and testRecv() of test_socket.NonBlockingTCPTests have a race condition: time.sleep() is used as a weak synchronization primitive and the tests fail randomly on slow buildbots. Use a reliable threading.Event to fix these tests. Other changes: * Replace send() with sendall() * Add a timeout to select() in testAccept() and testRecv() * Use addCleanup() to close sockets * Use assertRaises() (cherry picked from commit ebd5d6d)
|
testAccept() and testRecv() of test_socket.NonBlockingTCPTests have a
race condition: time.sleep() is used as a weak synchronization
primitive and the tests fail randomly on slow buildbots. Fix these
tests using a reliable threading.Event.
Changes:
https://bugs.python.org/issue35347