From 7b4a8e1ac52ca69d558fce982744059c4e36826a Mon Sep 17 00:00:00 2001 From: RhodeCode Admin Date: Mon, 30 Jan 2023 21:35:26 +0100 Subject: [PATCH] tests: make port picker more robust for tests --- rhodecode/tests/pylons_plugin.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/rhodecode/tests/pylons_plugin.py b/rhodecode/tests/pylons_plugin.py index 1dfbedae..7b6f3040 100644 --- a/rhodecode/tests/pylons_plugin.py +++ b/rhodecode/tests/pylons_plugin.py @@ -21,7 +21,7 @@ import json import platform import socket - +import random import pytest from rhodecode.lib.pyramid_utils import get_app_config @@ -198,17 +198,19 @@ def ini_settings(ini_config): return get_app_config(ini_path) -def get_available_port(): - family = socket.AF_INET - socktype = socket.SOCK_STREAM - host = '127.0.0.1' +def get_available_port(min_port=40000, max_port=55555): + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + hostname = '127.0.0.1' - mysocket = socket.socket(family, socktype) - mysocket.bind((host, 0)) - port = mysocket.getsockname()[1] - mysocket.close() - del mysocket - return port + for _ in range(min_port, max_port): + pick_port = random.randint(min_port, max_port) + try: + sock.bind((hostname, pick_port)) + sock.close() + del sock + return pick_port + except OSError: + pass @pytest.fixture(scope='session')