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

Roundup Issue Tracker: http://roundup-tracker.org/