• Victor Stinner's avatar
    [3.7] bpo-34130: Fix 2 race conditions in test_signal (GH-8329) · 296e5720
    Victor Stinner yazdı
    * bpo-34130: Fix test_signal.test_socket() (GH-8326)
    
    test_signal.test_socket(): On Windows, sometimes even if the C signal handler
    succeed to write the signal number into the write end of the socketpair, the
    test fails with a BlockingIOError on the non-blocking read.recv(1) because the
    read end of the socketpair didn't receive the byte yet.
    
    Fix the race condition on Windows by setting the read end as blocking.
    
    (cherry picked from commit 99bb6df6)
    
    * bpo-34130: Fix test_signal.test_warn_on_full_buffer() (GH-8327)
    
    On Windows, sometimes test_signal.test_warn_on_full_buffer() fails to
    fill the socketpair buffer. In that case, the C signal handler
    succeed to write into the socket, it doesn't log the expected send
    error, and so the test fail.
    
    On Windows, the test now uses a timeout of 50 ms to fill the
    socketpair buffer to fix this race condition.
    
    Other changes:
    
    * Begin with large chunk size to fill the buffer to speed up the
      test.
    * Add error messages to assertion errors to more easily identify
      which assertion failed.
    * Don't set the read end of the socketpair as non-blocking.
    
    (cherry picked from commit 686b4b5f)
    296e5720
test_signal.py 40.2 KB