Returns a local port number that will refuse all connections. Return value is (cleanup_func, port); the cleanup function must be called to free the port to be reused.
()
| 60 | |
| 61 | |
| 62 | def refusing_port(): |
| 63 | """Returns a local port number that will refuse all connections. |
| 64 | |
| 65 | Return value is (cleanup_func, port); the cleanup function |
| 66 | must be called to free the port to be reused. |
| 67 | """ |
| 68 | # On travis-ci, port numbers are reassigned frequently. To avoid |
| 69 | # collisions with other tests, we use an open client-side socket's |
| 70 | # ephemeral port number to ensure that nothing can listen on that |
| 71 | # port. |
| 72 | server_socket, port = bind_unused_port() |
| 73 | server_socket.setblocking(True) |
| 74 | client_socket = socket.socket() |
| 75 | client_socket.connect(("127.0.0.1", port)) |
| 76 | conn, client_addr = server_socket.accept() |
| 77 | conn.close() |
| 78 | server_socket.close() |
| 79 | return (client_socket.close, client_addr[1]) |
| 80 | |
| 81 | |
| 82 | def exec_test(caller_globals, caller_locals, s): |