Mercurial > p > roundup > code
comparison test/wsgi_liveserver.py @ 8257:3630246c5c36
test: issue2551366. fix probe for open port in test_liveserver.py
Corrected the method. It was missing the outer loop.
Updated upstream.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Wed, 01 Jan 2025 19:41:45 -0500 |
| parents | c7f63e9cd131 |
| children |
comparison
equal
deleted
inserted
replaced
| 8256:3a04ff6f1004 | 8257:3630246c5c36 |
|---|---|
| 11 """ | 11 """ |
| 12 import errno | 12 import errno |
| 13 import socket | 13 import socket |
| 14 import threading | 14 import threading |
| 15 import unittest | 15 import unittest |
| 16 from wsgiref.simple_server import make_server, WSGIRequestHandler | 16 from wsgiref.simple_server import WSGIRequestHandler, make_server |
| 17 | 17 |
| 18 __author__ = 'John Kristensen' | 18 __author__ = 'John Kristensen' |
| 19 __version__ = '0.3.1' | 19 __version__ = '0.3.1' |
| 20 __license__ = 'GPLv3' | 20 __license__ = 'GPLv3' |
| 21 | 21 |
| 22 """ | 22 """ |
| 23 Classmethod probe_ports() added by John Rouillard 2024. | 23 Classmethod probe_ports() added by John Rouillard 2024. |
| 24 """ | 24 """ |
| 25 | |
| 25 | 26 |
| 26 class QuietHandler(WSGIRequestHandler): | 27 class QuietHandler(WSGIRequestHandler): |
| 27 def log_request(*args, **kwargs): | 28 def log_request(*args, **kwargs): |
| 28 pass | 29 pass |
| 29 | 30 |
| 87 self._thread.join() | 88 self._thread.join() |
| 88 del self._server | 89 del self._server |
| 89 | 90 |
| 90 @classmethod | 91 @classmethod |
| 91 def probe_ports(cls, start=port_range[0], end=port_range[1]): | 92 def probe_ports(cls, start=port_range[0], end=port_range[1]): |
| 92 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | 93 |
| 93 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) | |
| 94 port = start | 94 port = start |
| 95 try: | 95 |
| 96 s.connect(('127.0.0.1', port)) | 96 while port <= end: |
| 97 except socket.error as e: | 97 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
| 98 if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED: | 98 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
| 99 raise | 99 |
| 100 return port | 100 try: |
| 101 else: | 101 s.connect(('127.0.0.1', port)) |
| 102 s.close() | 102 except socket.error as e: |
| 103 port += 1 | 103 if not hasattr(e, 'args') or e.args[0] != errno.ECONNREFUSED: |
| 104 if port > end: | 104 raise |
| 105 return None | 105 return port |
| 106 else: | |
| 107 s.close() | |
| 108 port += 1 | |
| 109 | |
| 110 return None |
