Skip to content
Snippets Groups Projects
Commit b8751307 authored by Jorrit Schaap's avatar Jorrit Schaap
Browse files

TMSS-139: use a preferred port if available, otherwise a random free port

parent 44bf1a0b
No related branches found
No related tags found
1 merge request!96Resolve TMSS-139
......@@ -194,12 +194,19 @@ def single_line_with_single_spaces(lines: str) -> str:
return line
length = new_length
def find_free_port():
'''find and return a random free network port'''
def find_free_port(preferred_port: int=0):
'''find and return a random free network port, preferably the given <preferred_port>'''
import socket
from contextlib import closing
with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s:
try:
s.bind(('', preferred_port))
except OSError as e:
if e.errno==98: # OSError: [Errno 98] Address already in use
s.bind(('', 0))
else:
raise
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
return s.getsockname()[1]
......@@ -233,7 +233,7 @@ class TMSSTestEnvironment:
self.database = TMSSTestDatabaseInstance()
self.django_server = TMSSDjangoServerInstance(db_dbcreds_id=self.database.dbcreds_id,
ldap_dbcreds_id=self.ldap_server.dbcreds_id,
port=find_free_port())
port=find_free_port(8000))
def start(self):
self.ldap_server.start()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment