From a03af87cf74c0b95630842829fc53435be5ff1d6 Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Sun, 22 Sep 2019 10:14:45 -0400 Subject: [PATCH] Merge #16918: test: Make PORT_MIN in test runner configurable fa69588537bc91c0aedbc89ef1760d89cbffad75 test: Make PORT_MIN in test runner configurable (MarcoFalke) Pull request description: This is needed when some ports in the port range are used by other processes. Note that simply assigning the ports dynamically does not work: * We spin up several nodes per test (each node gets its own port) * We run several tests in parallel So to avoid nodes from different tests colliding on ports, the port assignment must be deterministic (can not be dynamic). Fixes: #10869 ACKs for top commit: practicalswift: ACK fa69588537bc91c0aedbc89ef1760d89cbffad75 -- diff looks correct promag: ACK fa69588537bc91c0aedbc89ef1760d89cbffad75. Tree-SHA512: e79adb015e7de79064e2d14336c38bc9672bd779ad6c52917721897e73f617c39d32c068a369c26670002a6c4ab95a71ef3a6878ebdd9710e02f410e2f7bcd14 --- .cirrus.yml | 1 + test/functional/test_framework/util.py | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 1b34aeb291..5f8d969c6f 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -9,6 +9,7 @@ task: MAKEJOBS: "-j9" CONFIGURE_OPTS: "--disable-dependency-tracking" GOAL: "install" + TEST_RUNNER_PORT_MIN: "14000" # Must be larger than 12321, which is used for the http cache. See https://cirrus-ci.org/guide/writing-tasks/#http-cache CCACHE_SIZE: "200M" CCACHE_COMPRESS: 1 CCACHE_DIR: "/tmp/ccache_dir" diff --git a/test/functional/test_framework/util.py b/test/functional/test_framework/util.py index cabb2182cb..d781d54811 100644 --- a/test/functional/test_framework/util.py +++ b/test/functional/test_framework/util.py @@ -9,6 +9,7 @@ from base64 import b64encode from binascii import unhexlify from decimal import Decimal, ROUND_DOWN import hashlib +from subprocess import CalledProcessError import inspect import json import logging @@ -16,7 +17,6 @@ import os import random import shutil import re -from subprocess import CalledProcessError import time from . import coverage @@ -261,10 +261,11 @@ def wait_until(predicate, *, attempts=float('inf'), timeout=float('inf'), sleep= # The maximum number of nodes a single test can spawn MAX_NODES = 15 # Don't assign rpc or p2p ports lower than this -PORT_MIN = 11000 +PORT_MIN = int(os.getenv('TEST_RUNNER_PORT_MIN', default=11000)) # The number of ports to "reserve" for p2p and rpc, each PORT_RANGE = 5000 + class PortSeed: # Must be initialized with a unique integer for each process n = None