From: Remi Gacogne Date: Fri, 7 Jul 2023 16:17:13 +0000 (+0200) Subject: dnsdist: Update the regression tests for parallel testing X-Git-Tag: rec-5.0.0-alpha1~35^2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=630eb526b49d26e1111c80eacc34a8e2494b22ca;p=thirdparty%2Fpdns.git dnsdist: Update the regression tests for parallel testing --- diff --git a/regression-tests.dnsdist/dnsdisttests.py b/regression-tests.dnsdist/dnsdisttests.py index 1cd53af708..579a63df61 100644 --- a/regression-tests.dnsdist/dnsdisttests.py +++ b/regression-tests.dnsdist/dnsdisttests.py @@ -42,6 +42,23 @@ try: except NameError: pass +def getWorkerID(): + if not 'PYTEST_XDIST_WORKER' in os.environ: + return 0 + workerName = os.environ['PYTEST_XDIST_WORKER'] + return int(workerName[2:]) + +workerPorts = {} + +def pickAvailablePort(): + global workerPorts + workerID = getWorkerID() + if workerID in workerPorts: + port = workerPorts[workerID] + 1 + else: + port = 11000 + (workerID * 1000) + workerPorts[workerID] = port + return port class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase): """ @@ -52,9 +69,7 @@ class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase): from dnsdist on a separate queue, allowing the tests to check that the queries sent from dnsdist were as expected. """ - _dnsDistPort = 5340 _dnsDistListeningAddr = "127.0.0.1" - _testServerPort = 5350 _toResponderQueue = Queue() _fromResponderQueue = Queue() _queueTimeout = 1 @@ -64,7 +79,6 @@ class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase): """ _config_params = ['_testServerPort'] _acl = ['127.0.0.1/32'] - _consolePort = 5199 _consoleKey = None _healthCheckName = 'a.root-servers.net.' _healthCheckCounter = 0 @@ -78,6 +92,9 @@ class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase): _UDPResponder = None _TCPResponder = None _extraStartupSleep = 0 + _dnsDistPort = pickAvailablePort() + _consolePort = pickAvailablePort() + _testServerPort = pickAvailablePort() @classmethod def waitForTCPSocket(cls, ipaddress, port): @@ -97,23 +114,28 @@ class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase): @classmethod def startResponders(cls): print("Launching responders..") + cls._testServerPort = pickAvailablePort() cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() cls.waitForTCPSocket("127.0.0.1", cls._testServerPort); @classmethod def startDNSDist(cls): + cls._dnsDistPort = pickAvailablePort() + cls._consolePort = pickAvailablePort() + print("Launching dnsdist..") confFile = os.path.join('configs', 'dnsdist_%s.conf' % (cls.__name__)) params = tuple([getattr(cls, param) for param in cls._config_params]) print(params) with open(confFile, 'w') as conf: conf.write("-- Autogenerated by dnsdisttests.py\n") + conf.write(f"-- dnsdist will listen on {cls._dnsDistPort}") conf.write(cls._config_template % params) conf.write("setSecurityPollSuffix('')") @@ -141,7 +163,7 @@ class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase): else: expectedOutput = ('Configuration \'%s\' OK!\n' % (confFile)).encode() if not cls._verboseMode and output != expectedOutput: - raise AssertionError('dnsdist --check-config failed: %s' % output) + raise AssertionError('dnsdist --check-config failed: %s (expected %s)' % (output, expectedOutput)) logFile = os.path.join('configs', 'dnsdist_%s.log' % (cls.__name__)) with open(logFile, 'w') as fdLog: @@ -209,10 +231,10 @@ class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase): @classmethod def _ResponderIncrementCounter(cls): - if threading.currentThread().name in cls._responsesCounter: - cls._responsesCounter[threading.currentThread().name] += 1 + if threading.current_thread().name in cls._responsesCounter: + cls._responsesCounter[threading.current_thread().name] += 1 else: - cls._responsesCounter[threading.currentThread().name] = 1 + cls._responsesCounter[threading.current_thread().name] = 1 @classmethod def _getResponse(cls, request, fromQueue, toQueue, synthesize=None): @@ -401,7 +423,7 @@ class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase): thread = threading.Thread(name='TCP Connection Handler', target=cls.handleTCPConnection, args=[conn, fromQueue, toQueue, trailingDataResponse, multipleResponses, callback, partialWrite]) - thread.setDaemon(True) + thread.daemon = True thread.start() else: cls.handleTCPConnection(conn, fromQueue, toQueue, trailingDataResponse, multipleResponses, callback, partialWrite) @@ -545,7 +567,7 @@ class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase): thread = threading.Thread(name='DoH Connection Handler', target=cls.handleDoHConnection, args=[config, conn, fromQueue, toQueue, trailingDataResponse, multipleResponses, callback, tlsContext, useProxyProtocol]) - thread.setDaemon(True) + thread.daemon = True thread.start() sock.close() diff --git a/regression-tests.dnsdist/requirements.txt b/regression-tests.dnsdist/requirements.txt index edfdb669ed..3bc85702d2 100644 --- a/regression-tests.dnsdist/requirements.txt +++ b/regression-tests.dnsdist/requirements.txt @@ -1,5 +1,6 @@ dnspython>=2.2.0 -nose>=1.3.7 +pytest +pytest-xdist libnacl>=1.4.3,<1.7 requests>=2.1.0 protobuf>=3.0 diff --git a/regression-tests.dnsdist/runtests b/regression-tests.dnsdist/runtests index 36e0d50dcd..23e6e54e33 100755 --- a/regression-tests.dnsdist/runtests +++ b/regression-tests.dnsdist/runtests @@ -45,15 +45,15 @@ make certs out=$(mktemp) set -o pipefail -if ! nosetests --with-xunit $@ 2>&1 | tee "${out}" ; then +if ! pytest --junitxml=pytest.xml --dist=loadfile -n auto $@ 2>&1 | tee "${out}" ; then for log in configs/*.log; do echo "=== ${log} ===" cat "${log}" echo done - echo "=== nosetests log ===" + echo "=== pytest log ===" cat "${out}" - echo "=== end of nosetests log ===" + echo "=== end of pytest log ===" false fi rm -f "${out}" diff --git a/regression-tests.dnsdist/test_API.py b/regression-tests.dnsdist/test_API.py index 54e0f94177..c89322569d 100644 --- a/regression-tests.dnsdist/test_API.py +++ b/regression-tests.dnsdist/test_API.py @@ -6,12 +6,12 @@ import json import requests import socket import time -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class APITestsBase(DNSDistTest): __test__ = False _webTimeout = 5.0 - _webServerPort = 8083 + _webServerPort = pickAvailablePort() _webServerBasicAuthPassword = 'secret' _webServerBasicAuthPasswordHashed = '$scrypt$ln=10,p=1,r=8$6DKLnvUYEeXWh3JNOd3iwg==$kSrhdHaRbZ7R74q3lGBqO1xetgxRxhmWzYJ2Qvfm7JM=' _webServerAPIKey = 'apisecret' diff --git a/regression-tests.dnsdist/test_AXFR.py b/regression-tests.dnsdist/test_AXFR.py index b1f3910788..2788c79044 100644 --- a/regression-tests.dnsdist/test_AXFR.py +++ b/regression-tests.dnsdist/test_AXFR.py @@ -2,7 +2,7 @@ import threading import time import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class TestAXFR(DNSDistTest): @@ -10,7 +10,7 @@ class TestAXFR(DNSDistTest): # because, contrary to the other ones, its # TCP responder allows multiple responses and we don't want # to mix things up. - _testServerPort = 5370 + _testServerPort = pickAvailablePort() _config_template = """ newServer{address="127.0.0.1:%s"} """ @@ -21,10 +21,10 @@ class TestAXFR(DNSDistTest): print("Launching responders..") cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue, False, True, None, None, True]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() def setUp(self): diff --git a/regression-tests.dnsdist/test_Advanced.py b/regression-tests.dnsdist/test_Advanced.py index 530bf0190a..5a0443ac87 100644 --- a/regression-tests.dnsdist/test_Advanced.py +++ b/regression-tests.dnsdist/test_Advanced.py @@ -349,7 +349,7 @@ class TestAdvancedGetLocalAddressOnAnyBind(DNSDistTest): query = query.to_wire() sock.send(query) (data, remote) = sock.recvfrom(4096) - self.assertEquals(remote[0], '127.0.0.2') + self.assertEqual(remote[0], '127.0.0.2') except socket.timeout: data = None @@ -383,7 +383,7 @@ class TestAdvancedGetLocalAddressOnAnyBind(DNSDistTest): data = query.to_wire() sock.send(data) (data, remote) = sock.recvfrom(4096) - self.assertEquals(remote[0], '127.0.0.2') + self.assertEqual(remote[0], '127.0.0.2') except socket.timeout: data = None @@ -406,7 +406,7 @@ class TestAdvancedGetLocalAddressOnAnyBind(DNSDistTest): data = query.to_wire() sock.send(data) (data, remote) = sock.recvfrom(4096) - self.assertEquals(remote[0], '::1') + self.assertEqual(remote[0], '::1') except socket.timeout: data = None @@ -454,7 +454,7 @@ class TestAdvancedGetLocalAddressOnNonDefaultLoopbackBind(DNSDistTest): data = query.to_wire() sock.send(data) (data, remote) = sock.recvfrom(4096) - self.assertEquals(remote[0], '127.0.1.19') + self.assertEqual(remote[0], '127.0.1.19') except socket.timeout: data = None diff --git a/regression-tests.dnsdist/test_Async.py b/regression-tests.dnsdist/test_Async.py index 1a982e3ab1..efda4f4cc7 100644 --- a/regression-tests.dnsdist/test_Async.py +++ b/regression-tests.dnsdist/test_Async.py @@ -5,7 +5,7 @@ import socket import threading import unittest import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort def AsyncResponder(listenPath, responsePath): # Make sure the socket does not already exist @@ -81,7 +81,7 @@ def AsyncResponder(listenPath, responsePath): asyncResponderSocketPath = '/tmp/async-responder.sock' dnsdistSocketPath = '/tmp/dnsdist.sock' asyncResponder = threading.Thread(name='Asynchronous Responder', target=AsyncResponder, args=[asyncResponderSocketPath, dnsdistSocketPath]) -asyncResponder.setDaemon(True) +asyncResponder.daemon = True asyncResponder.start() class AsyncTests(object): @@ -439,8 +439,8 @@ class TestAsyncFFI(DNSDistTest, AsyncTests): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8453 - _dohServerPort = 8443 + _tlsServerPort = pickAvailablePort() + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) _config_template = """ @@ -549,8 +549,8 @@ class TestAsyncLua(DNSDistTest, AsyncTests): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8453 - _dohServerPort = 8443 + _tlsServerPort = pickAvailablePort() + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) _config_template = """ diff --git a/regression-tests.dnsdist/test_BackendDiscovery.py b/regression-tests.dnsdist/test_BackendDiscovery.py index 0521523ae1..c4178d94c4 100644 --- a/regression-tests.dnsdist/test_BackendDiscovery.py +++ b/regression-tests.dnsdist/test_BackendDiscovery.py @@ -8,6 +8,7 @@ import ssl from dnsdisttests import DNSDistTest class TestBackendDiscovery(DNSDistTest): + # these ports are hardcoded for now, sorry about that! _noSVCBackendPort = 10600 _svcNoUpgradeBackendPort = 10601 _svcUpgradeDoTBackendPort = 10602 @@ -261,90 +262,90 @@ class TestBackendDiscovery(DNSDistTest): tlsContext.load_cert_chain('server.chain', 'server.key') TCPNoSVCResponder = threading.Thread(name='TCP no SVC Responder', target=cls.TCPResponder, args=[cls._noSVCBackendPort, cls._toResponderQueue, cls._fromResponderQueue, True, False, cls.NoSVCCallback]) - TCPNoSVCResponder.setDaemon(True) + TCPNoSVCResponder.daemon = True TCPNoSVCResponder.start() TCPNoUpgradeResponder = threading.Thread(name='TCP no upgrade Responder', target=cls.TCPResponder, args=[cls._svcNoUpgradeBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.NoUpgradePathCallback]) - TCPNoUpgradeResponder.setDaemon(True) + TCPNoUpgradeResponder.daemon = True TCPNoUpgradeResponder.start() # this one is special, does partial writes! TCPUpgradeToDoTResponder = threading.Thread(name='TCP upgrade to DoT Responder', target=cls.TCPResponder, args=[cls._svcUpgradeDoTBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.UpgradeDoTCallback, None, False, '127.0.0.1', True]) - TCPUpgradeToDoTResponder.setDaemon(True) + TCPUpgradeToDoTResponder.daemon = True TCPUpgradeToDoTResponder.start() # and the corresponding DoT responder UpgradedDoTResponder = threading.Thread(name='DoT upgraded Responder', target=cls.TCPResponder, args=[10652, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - UpgradedDoTResponder.setDaemon(True) + UpgradedDoTResponder.daemon = True UpgradedDoTResponder.start() TCPUpgradeToDoHResponder = threading.Thread(name='TCP upgrade to DoH Responder', target=cls.TCPResponder, args=[cls._svcUpgradeDoHBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.UpgradeDoHCallback]) - TCPUpgradeToDoHResponder.setDaemon(True) + TCPUpgradeToDoHResponder.daemon = True TCPUpgradeToDoHResponder.start() # and the corresponding DoH responder UpgradedDOHResponder = threading.Thread(name='DOH Responder', target=cls.DOHResponder, args=[10653, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - UpgradedDOHResponder.setDaemon(True) + UpgradedDOHResponder.daemon = True UpgradedDOHResponder.start() TCPUpgradeToDoTDifferentAddrResponder = threading.Thread(name='TCP upgrade to DoT different addr 1 Responder', target=cls.TCPResponder, args=[cls._svcUpgradeDoTBackendDifferentAddrPort1, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.UpgradeDoTDifferentAddr1Callback]) - TCPUpgradeToDoTDifferentAddrResponder.setDaemon(True) + TCPUpgradeToDoTDifferentAddrResponder.daemon = True TCPUpgradeToDoTDifferentAddrResponder.start() # and the corresponding DoT responder UpgradedDoTResponder = threading.Thread(name='DoT upgraded different addr 1 Responder', target=cls.TCPResponder, args=[10654, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext, False, '127.0.0.2']) - UpgradedDoTResponder.setDaemon(True) + UpgradedDoTResponder.daemon = True UpgradedDoTResponder.start() TCPUpgradeToDoTDifferentAddrResponder = threading.Thread(name='TCP upgrade to DoT different addr 2 Responder', target=cls.TCPResponder, args=[cls._svcUpgradeDoTBackendDifferentAddrPort2, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.UpgradeDoTDifferentAddr2Callback, None, False, '127.0.0.2']) - TCPUpgradeToDoTDifferentAddrResponder.setDaemon(True) + TCPUpgradeToDoTDifferentAddrResponder.daemon = True TCPUpgradeToDoTDifferentAddrResponder.start() # and the corresponding DoT responder UpgradedDoTResponder = threading.Thread(name='DoT upgraded different addr 2 Responder', target=cls.TCPResponder, args=[10655, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext, False]) - UpgradedDoTResponder.setDaemon(True) + UpgradedDoTResponder.daemon = True UpgradedDoTResponder.start() TCPUpgradeToUnreachableDoTResponder = threading.Thread(name='TCP upgrade to unreachable DoT Responder', target=cls.TCPResponder, args=[cls._svcUpgradeDoTUnreachableBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.UpgradeDoTUnreachableCallback]) - TCPUpgradeToUnreachableDoTResponder.setDaemon(True) + TCPUpgradeToUnreachableDoTResponder.daemon = True TCPUpgradeToUnreachableDoTResponder.start() # and NO corresponding DoT responder # this is not a mistake! BrokenResponseResponder = threading.Thread(name='Broken response Responder', target=cls.TCPResponder, args=[cls._svcBrokenDNSResponseBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.BrokenResponseCallback]) - BrokenResponseResponder.setDaemon(True) + BrokenResponseResponder.daemon = True BrokenResponseResponder.start() DOHMissingPathResponder = threading.Thread(name='DoH missing path Responder', target=cls.TCPResponder, args=[cls._svcUpgradeDoHBackendWithoutPathPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.UpgradeDoHMissingPathCallback]) - DOHMissingPathResponder.setDaemon(True) + DOHMissingPathResponder.daemon = True DOHMissingPathResponder.start() EOFResponder = threading.Thread(name='EOF Responder', target=cls.TCPResponder, args=[cls._eofBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.EOFCallback]) - EOFResponder.setDaemon(True) + EOFResponder.daemon = True EOFResponder.start() ServFailResponder = threading.Thread(name='ServFail Responder', target=cls.TCPResponder, args=[cls._servfailBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.ServFailCallback]) - ServFailResponder.setDaemon(True) + ServFailResponder.daemon = True ServFailResponder.start() WrongNameResponder = threading.Thread(name='Wrong Name Responder', target=cls.TCPResponder, args=[cls._wrongNameBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.WrongNameCallback]) - WrongNameResponder.setDaemon(True) + WrongNameResponder.daemon = True WrongNameResponder.start() WrongIDResponder = threading.Thread(name='Wrong ID Responder', target=cls.TCPResponder, args=[cls._wrongIDBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.WrongIDCallback]) - WrongIDResponder.setDaemon(True) + WrongIDResponder.daemon = True WrongIDResponder.start() TooManyQuestionsResponder = threading.Thread(name='Too many questions Responder', target=cls.TCPResponder, args=[cls._tooManyQuestionsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.TooManyQuestionsCallback]) - TooManyQuestionsResponder.setDaemon(True) + TooManyQuestionsResponder.daemon = True TooManyQuestionsResponder.start() badQNameResponder = threading.Thread(name='Bad QName Responder', target=cls.TCPResponder, args=[cls._badQNameBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.BadQNameCallback]) - badQNameResponder.setDaemon(True) + badQNameResponder.daemon = True badQNameResponder.start() TCPUpgradeToDoTNoPortResponder = threading.Thread(name='TCP upgrade to DoT (no port) Responder', target=cls.TCPResponder, args=[cls._svcUpgradeDoTNoPortBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.UpgradeDoTNoPortCallback]) - TCPUpgradeToDoTNoPortResponder.setDaemon(True) + TCPUpgradeToDoTNoPortResponder.daemon = True TCPUpgradeToDoTNoPortResponder.start() TCPUpgradeToDoHNoPortResponder = threading.Thread(name='TCP upgrade to DoH (no port) Responder', target=cls.TCPResponder, args=[cls._svcUpgradeDoHNoPortBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.UpgradeDoHNoPortCallback]) - TCPUpgradeToDoHNoPortResponder.setDaemon(True) + TCPUpgradeToDoHNoPortResponder.daemon = True TCPUpgradeToDoHNoPortResponder.start() @@ -362,9 +363,9 @@ class TestBackendDiscovery(DNSDistTest): # in this particular case, the upgraded backend # does not replace the existing one and thus # the health-check is forced to auto (or lazy auto) - self.assertEquals(tokens[2], 'up') + self.assertEqual(tokens[2], 'up') else: - self.assertEquals(tokens[2], 'UP') + self.assertEqual(tokens[2], 'UP') pool = '' if len(tokens) == 14: pool = tokens[13] diff --git a/regression-tests.dnsdist/test_BrokenAnswer.py b/regression-tests.dnsdist/test_BrokenAnswer.py index 78bd713358..6fad94c510 100644 --- a/regression-tests.dnsdist/test_BrokenAnswer.py +++ b/regression-tests.dnsdist/test_BrokenAnswer.py @@ -2,7 +2,7 @@ import threading import clientsubnetoption import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort def responseCallback(request): if len(request.question) != 1: @@ -33,7 +33,7 @@ class TestBrokenAnswerECS(DNSDistTest): # this test suite uses a different responder port # because, contrary to the other ones, its # responders send raw, broken data - _testServerPort = 5400 + _testServerPort = pickAvailablePort() _config_template = """ setECSSourcePrefixV4(32) newServer{address="127.0.0.1:%s", useClientSubnet=true} @@ -44,12 +44,12 @@ class TestBrokenAnswerECS(DNSDistTest): # Returns broken data for non-healthcheck queries cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue, False, responseCallback]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() # Returns broken data for non-healthcheck queries cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, responseCallback]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() def testUDPWithInvalidAnswer(self): diff --git a/regression-tests.dnsdist/test_Caching.py b/regression-tests.dnsdist/test_Caching.py index 5c95ef36c9..d7539836e8 100644 --- a/regression-tests.dnsdist/test_Caching.py +++ b/regression-tests.dnsdist/test_Caching.py @@ -5,7 +5,7 @@ import dns import clientsubnetoption import cookiesoption import requests -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class TestCaching(DNSDistTest): @@ -2785,7 +2785,7 @@ class TestCachingBackendSettingRD(DNSDistTest): class TestAPICache(DNSDistTest): _webTimeout = 2.0 - _webServerPort = 8083 + _webServerPort = pickAvailablePort() _webServerBasicAuthPassword = 'secret' _webServerBasicAuthPasswordHashed = '$scrypt$ln=10,p=1,r=8$6DKLnvUYEeXWh3JNOd3iwg==$kSrhdHaRbZ7R74q3lGBqO1xetgxRxhmWzYJ2Qvfm7JM=' _webServerAPIKey = 'apisecret' diff --git a/regression-tests.dnsdist/test_Carbon.py b/regression-tests.dnsdist/test_Carbon.py index 4d26c54a3c..d697fc8a12 100644 --- a/regression-tests.dnsdist/test_Carbon.py +++ b/regression-tests.dnsdist/test_Carbon.py @@ -3,13 +3,13 @@ import threading import socket import sys import time -from dnsdisttests import DNSDistTest, Queue +from dnsdisttests import DNSDistTest, Queue, pickAvailablePort class TestCarbon(DNSDistTest): - _carbonServer1Port = 8000 + _carbonServer1Port = pickAvailablePort() _carbonServer1Name = "carbonname1" - _carbonServer2Port = 8001 + _carbonServer2Port = pickAvailablePort() _carbonServer2Name = "carbonname2" _carbonQueue1 = Queue() _carbonQueue2 = Queue() @@ -53,10 +53,10 @@ class TestCarbon(DNSDistTest): cls._carbonQueue1.put(lines, True, timeout=2.0) else: cls._carbonQueue2.put(lines, True, timeout=2.0) - if threading.currentThread().name in cls._carbonCounters: - cls._carbonCounters[threading.currentThread().name] += 1 + if threading.current_thread().name in cls._carbonCounters: + cls._carbonCounters[threading.current_thread().name] += 1 else: - cls._carbonCounters[threading.currentThread().name] = 1 + cls._carbonCounters[threading.current_thread().name] = 1 conn.close() sock.close() @@ -64,11 +64,11 @@ class TestCarbon(DNSDistTest): @classmethod def startResponders(cls): cls._CarbonResponder1 = threading.Thread(name='Carbon Responder 1', target=cls.CarbonResponder, args=[cls._carbonServer1Port]) - cls._CarbonResponder1.setDaemon(True) + cls._CarbonResponder1.daemon = True cls._CarbonResponder1.start() cls._CarbonResponder2 = threading.Thread(name='Carbon Responder 2', target=cls.CarbonResponder, args=[cls._carbonServer2Port]) - cls._CarbonResponder2.setDaemon(True) + cls._CarbonResponder2.daemon = True cls._CarbonResponder2.start() def isfloat(self, num): diff --git a/regression-tests.dnsdist/test_DNSCrypt.py b/regression-tests.dnsdist/test_DNSCrypt.py index c67b983558..6f8df586ec 100644 --- a/regression-tests.dnsdist/test_DNSCrypt.py +++ b/regression-tests.dnsdist/test_DNSCrypt.py @@ -4,7 +4,7 @@ import socket import time import dns import dns.message -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort import dnscrypt class DNSCryptTest(DNSDistTest): @@ -15,8 +15,7 @@ class DNSCryptTest(DNSDistTest): Be careful to change the _providerFingerprint below if you want to regenerate the keys. """ - _dnsDistPort = 5340 - _dnsDistPortDNSCrypt = 8443 + _dnsDistPortDNSCrypt = pickAvailablePort() _consoleKey = DNSDistTest.generateConsoleKey() _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') @@ -76,7 +75,7 @@ class TestDNSCrypt(DNSCryptTest): """ DNSCrypt: encrypted A query """ - client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", 8443) + client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", self._dnsDistPortDNSCrypt) name = 'a.dnscrypt.tests.powerdns.com.' query = dns.message.make_query(name, 'A', 'IN') response = dns.message.make_response(query) @@ -98,7 +97,7 @@ class TestDNSCrypt(DNSCryptTest): the padding into account) and check that the response is truncated. """ - client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", 8443) + client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", self._dnsDistPortDNSCrypt) name = 'smallquerylargeresponse.dnscrypt.tests.powerdns.com.' query = dns.message.make_query(name, 'TXT', 'IN', use_edns=True, payload=4096) response = dns.message.make_response(query) @@ -130,7 +129,7 @@ class TestDNSCrypt(DNSCryptTest): """ DNSCrypt: certificate rotation """ - client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", 8443) + client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", self._dnsDistPortDNSCrypt) client.refreshResolverCertificates() cert = client.getResolverCertificate() @@ -248,7 +247,7 @@ class TestDNSCrypt(DNSCryptTest): """ DNSCrypt: Test DNSQuestion.Protocol over UDP """ - client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", 8443) + client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", self._dnsDistPortDNSCrypt) name = 'udp.protocols.dnscrypt.tests.powerdns.com.' query = dns.message.make_query(name, 'A', 'IN') response = dns.message.make_response(query) @@ -259,7 +258,7 @@ class TestDNSCrypt(DNSCryptTest): """ DNSCrypt: Test DNSQuestion.Protocol over TCP """ - client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", 8443) + client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", self._dnsDistPortDNSCrypt) name = 'tcp.protocols.dnscrypt.tests.powerdns.com.' query = dns.message.make_query(name, 'A', 'IN') response = dns.message.make_response(query) @@ -282,7 +281,7 @@ class TestDNSCryptWithCache(DNSCryptTest): DNSCrypt: encrypted A query served from cache """ misses = 0 - client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", 8443) + client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", self._dnsDistPortDNSCrypt) name = 'cacheda.dnscrypt.tests.powerdns.com.' query = dns.message.make_query(name, 'A', 'IN') response = dns.message.make_response(query) @@ -349,7 +348,7 @@ class TestDNSCryptAutomaticRotation(DNSCryptTest): """ DNSCrypt: automatic certificate rotation """ - client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", 8443) + client = dnscrypt.DNSCryptClient(self._providerName, self._providerFingerprint, "127.0.0.1", self._dnsDistPortDNSCrypt) client.refreshResolverCertificates() cert = client.getResolverCertificate() diff --git a/regression-tests.dnsdist/test_DOH.py b/regression-tests.dnsdist/test_DOH.py index 2dd016fd1b..5999021f5d 100644 --- a/regression-tests.dnsdist/test_DOH.py +++ b/regression-tests.dnsdist/test_DOH.py @@ -7,6 +7,7 @@ import unittest import clientsubnetoption from dnsdistdohtests import DNSDistDOHTest +from dnsdisttests import pickAvailablePort import pycurl from io import BytesIO @@ -17,7 +18,7 @@ class TestDOH(DNSDistDOHTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _customResponseHeader1 = 'access-control-allow-origin: *' _customResponseHeader2 = 'user-agent: derp' _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) @@ -527,7 +528,7 @@ class TestDOHSubPaths(DNSDistDOHTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) _config_template = """ newServer{address="127.0.0.1:%s"} @@ -585,7 +586,7 @@ class TestDOHAddingECS(DNSDistDOHTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) _config_template = """ newServer{address="127.0.0.1:%s", useClientSubnet=true} @@ -676,7 +677,7 @@ class TestDOHAddingECS(DNSDistDOHTest): class TestDOHOverHTTP(DNSDistDOHTest): - _dohServerPort = 8480 + _dohServerPort = pickAvailablePort() _serverName = 'tls.tests.dnsdist.org' _dohBaseURL = ("http://%s:%d/dns-query" % (_serverName, _dohServerPort)) _config_template = """ @@ -684,9 +685,9 @@ class TestDOHOverHTTP(DNSDistDOHTest): addDOHLocal("127.0.0.1:%s") """ _config_params = ['_testServerPort', '_dohServerPort'] - _checkConfigExpectedOutput = b"""No certificate provided for DoH endpoint 127.0.0.1:8480, running in DNS over HTTP mode instead of DNS over HTTPS + _checkConfigExpectedOutput = b"""No certificate provided for DoH endpoint 127.0.0.1:%d, running in DNS over HTTP mode instead of DNS over HTTPS Configuration 'configs/dnsdist_TestDOHOverHTTP.conf' OK! -""" +""" % (_dohServerPort) def testDOHSimple(self): """ @@ -745,7 +746,7 @@ class TestDOHWithCache(DNSDistDOHTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/dns-query" % (_serverName, _dohServerPort)) _config_template = """ newServer{address="127.0.0.1:%s"} @@ -954,7 +955,7 @@ class TestDOHWithoutCacheControl(DNSDistDOHTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) _config_template = """ newServer{address="127.0.0.1:%s"} @@ -995,7 +996,7 @@ class TestDOHFFI(DNSDistDOHTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _customResponseHeader1 = 'access-control-allow-origin: *' _customResponseHeader2 = 'user-agent: derp' _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) @@ -1057,7 +1058,7 @@ class TestDOHForwardedFor(DNSDistDOHTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) _config_template = """ newServer{address="127.0.0.1:%s"} @@ -1123,7 +1124,7 @@ class TestDOHForwardedForNoTrusted(DNSDistDOHTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) _config_template = """ newServer{address="127.0.0.1:%s"} @@ -1159,14 +1160,14 @@ class TestDOHFrontendLimits(DNSDistDOHTest): # this test suite uses a different responder port # because it uses a different health check configuration - _testServerPort = 5395 + _testServerPort = pickAvailablePort() _answerUnexpected = True _serverKey = 'server.key' _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) _skipListeningOnCL = True @@ -1227,7 +1228,7 @@ class TestProtocols(DNSDistDOHTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _customResponseHeader1 = 'access-control-allow-origin: *' _customResponseHeader2 = 'user-agent: derp' _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) @@ -1268,7 +1269,7 @@ class TestDOHWithPKCS12Cert(DNSDistDOHTest): _pkcs12Password = 'passw0rd' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) _config_template = """ newServer{address="127.0.0.1:%s"} @@ -1305,7 +1306,7 @@ class TestDOHForwardedToTCPOnly(DNSDistDOHTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) _config_template = """ newServer{address="127.0.0.1:%s", tcpOnly=true} @@ -1338,7 +1339,7 @@ class TestDOHForwardedToTCPOnly(DNSDistDOHTest): class TestDOHLimits(DNSDistDOHTest): _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) _serverKey = 'server.key' _serverCert = 'server.chain' diff --git a/regression-tests.dnsdist/test_Dnstap.py b/regression-tests.dnsdist/test_Dnstap.py index 18c39ca0fb..1b699f1527 100644 --- a/regression-tests.dnsdist/test_Dnstap.py +++ b/regression-tests.dnsdist/test_Dnstap.py @@ -5,7 +5,7 @@ import socket import struct import sys import time -from dnsdisttests import DNSDistTest, Queue +from dnsdisttests import DNSDistTest, Queue, pickAvailablePort import dns import dnstap_pb2 @@ -78,7 +78,7 @@ def checkDnstapResponse(testinstance, dnstap, protocol, response, initiator='127 class TestDnstapOverRemoteLogger(DNSDistTest): - _remoteLoggerServerPort = 4243 + _remoteLoggerServerPort = pickAvailablePort() _remoteLoggerQueue = Queue() _remoteLoggerCounter = 0 _config_params = ['_testServerPort', '_remoteLoggerServerPort'] @@ -151,7 +151,7 @@ class TestDnstapOverRemoteLogger(DNSDistTest): DNSDistTest.startResponders() cls._remoteLoggerListener = threading.Thread(name='RemoteLogger Listener', target=cls.RemoteLoggerListener, args=[cls._remoteLoggerServerPort]) - cls._remoteLoggerListener.setDaemon(True) + cls._remoteLoggerListener.daemon = True cls._remoteLoggerListener.start() def getFirstDnstap(self): @@ -384,7 +384,7 @@ class TestDnstapOverFrameStreamUnixLogger(DNSDistTest): DNSDistTest.startResponders() cls._fstrmLoggerListener = threading.Thread(name='FrameStreamUnixListener', target=cls.FrameStreamUnixListener, args=[cls._fstrmLoggerAddress]) - cls._fstrmLoggerListener.setDaemon(True) + cls._fstrmLoggerListener.daemon = True cls._fstrmLoggerListener.start() def getFirstDnstap(self): @@ -433,7 +433,7 @@ class TestDnstapOverFrameStreamUnixLogger(DNSDistTest): class TestDnstapOverFrameStreamTcpLogger(DNSDistTest): - _fstrmLoggerPort = 4000 + _fstrmLoggerPort = pickAvailablePort() _fstrmLoggerQueue = Queue() _fstrmLoggerCounter = 0 _config_params = ['_testServerPort', '_fstrmLoggerPort'] @@ -466,7 +466,7 @@ class TestDnstapOverFrameStreamTcpLogger(DNSDistTest): DNSDistTest.startResponders() cls._fstrmLoggerListener = threading.Thread(name='FrameStreamUnixListener', target=cls.FrameStreamUnixListener, args=[cls._fstrmLoggerPort]) - cls._fstrmLoggerListener.setDaemon(True) + cls._fstrmLoggerListener.daemon = True cls._fstrmLoggerListener.start() def getFirstDnstap(self): diff --git a/regression-tests.dnsdist/test_DynBlocks.py b/regression-tests.dnsdist/test_DynBlocks.py index 949080e879..8b9ef6fb6e 100644 --- a/regression-tests.dnsdist/test_DynBlocks.py +++ b/regression-tests.dnsdist/test_DynBlocks.py @@ -5,7 +5,7 @@ import requests import socket import time import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort try: range = xrange except NameError: @@ -14,7 +14,7 @@ except NameError: class DynBlocksTest(DNSDistTest): _webTimeout = 2.0 - _webServerPort = 8083 + _webServerPort = pickAvailablePort() _webServerBasicAuthPassword = 'secret' _webServerBasicAuthPasswordHashed = '$scrypt$ln=10,p=1,r=8$6DKLnvUYEeXWh3JNOd3iwg==$kSrhdHaRbZ7R74q3lGBqO1xetgxRxhmWzYJ2Qvfm7JM=' _webServerAPIKey = 'apisecret' diff --git a/regression-tests.dnsdist/test_HealthChecks.py b/regression-tests.dnsdist/test_HealthChecks.py index c1ec51b85d..7a5c6b7e0c 100644 --- a/regression-tests.dnsdist/test_HealthChecks.py +++ b/regression-tests.dnsdist/test_HealthChecks.py @@ -5,13 +5,13 @@ import ssl import threading import time import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class HealthCheckTest(DNSDistTest): _consoleKey = DNSDistTest.generateConsoleKey() _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') _webTimeout = 2.0 - _webServerPort = 8083 + _webServerPort = pickAvailablePort() _webServerAPIKey = 'apisecret' _webServerAPIKeyHashed = '$scrypt$ln=10,p=1,r=8$9v8JxDfzQVyTpBkTbkUqYg==$bDQzAOHeK1G9UvTPypNhrX48w974ZXbFPtRKS34+aso=' _config_params = ['_consoleKeyB64', '_consolePort', '_webServerPort', '_webServerAPIKeyHashed', '_testServerPort'] @@ -42,7 +42,7 @@ class HealthCheckTest(DNSDistTest): class TestDefaultHealthCheck(HealthCheckTest): # this test suite uses a different responder port # because we need fresh counters - _testServerPort = 5380 + _testServerPort = pickAvailablePort() def testDefault(self): """ @@ -90,7 +90,7 @@ class TestDefaultHealthCheck(HealthCheckTest): class TestHealthCheckForcedUP(HealthCheckTest): # this test suite uses a different responder port # because we need fresh counters - _testServerPort = 5381 + _testServerPort = pickAvailablePort() _config_template = """ setKey("%s") @@ -114,7 +114,7 @@ class TestHealthCheckForcedUP(HealthCheckTest): class TestHealthCheckForcedDown(HealthCheckTest): # this test suite uses a different responder port # because we need fresh counters - _testServerPort = 5382 + _testServerPort = pickAvailablePort() _config_template = """ setKey("%s") @@ -137,7 +137,7 @@ class TestHealthCheckForcedDown(HealthCheckTest): class TestHealthCheckCustomName(HealthCheckTest): # this test suite uses a different responder port # because it uses a different health check name - _testServerPort = 5383 + _testServerPort = pickAvailablePort() _healthCheckName = 'powerdns.com.' _config_params = ['_consoleKeyB64', '_consolePort', '_webServerPort', '_webServerAPIKeyHashed', '_testServerPort', '_healthCheckName'] @@ -162,7 +162,7 @@ class TestHealthCheckCustomName(HealthCheckTest): class TestHealthCheckCustomNameNoAnswer(HealthCheckTest): # this test suite uses a different responder port # because it uses a different health check configuration - _testServerPort = 5384 + _testServerPort = pickAvailablePort() _answerUnexpected = False _config_template = """ @@ -187,7 +187,7 @@ class TestHealthCheckCustomNameNoAnswer(HealthCheckTest): class TestHealthCheckCustomFunction(HealthCheckTest): # this test suite uses a different responder port # because it uses a different health check configuration - _testServerPort = 5385 + _testServerPort = pickAvailablePort() _answerUnexpected = False _healthCheckName = 'powerdns.com.' @@ -221,9 +221,9 @@ _dohHealthCheckQueries = 0 class TestLazyHealthChecks(HealthCheckTest): _extraStartupSleep = 1 - _do53Port = 10700 - _dotPort = 10701 - _dohPort = 10702 + _do53Port = pickAvailablePort() + _dotPort = pickAvailablePort() + _dohPort = pickAvailablePort() _consoleKey = DNSDistTest.generateConsoleKey() _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') @@ -282,19 +282,19 @@ class TestLazyHealthChecks(HealthCheckTest): tlsContext.load_cert_chain('server.chain', 'server.key') Do53Responder = threading.Thread(name='Do53 Lazy Responder', target=cls.UDPResponder, args=[cls._do53Port, cls._toResponderQueue, cls._fromResponderQueue, False, cls.Do53Callback]) - Do53Responder.setDaemon(True) + Do53Responder.daemon = True Do53Responder.start() Do53TCPResponder = threading.Thread(name='Do53 TCP Lazy Responder', target=cls.TCPResponder, args=[cls._do53Port, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.Do53Callback]) - Do53TCPResponder.setDaemon(True) + Do53TCPResponder.daemon = True Do53TCPResponder.start() DoTResponder = threading.Thread(name='DoT Lazy Responder', target=cls.TCPResponder, args=[cls._dotPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.DoTCallback, tlsContext]) - DoTResponder.setDaemon(True) + DoTResponder.daemon = True DoTResponder.start() DoHResponder = threading.Thread(name='DoH Lazy Responder', target=cls.DOHResponder, args=[cls._dohPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.DoHCallback, tlsContext]) - DoHResponder.setDaemon(True) + DoHResponder.daemon = True DoHResponder.start() def testDo53Lazy(self): diff --git a/regression-tests.dnsdist/test_Metrics.py b/regression-tests.dnsdist/test_Metrics.py index 5a70d0d8ce..3f35554283 100644 --- a/regression-tests.dnsdist/test_Metrics.py +++ b/regression-tests.dnsdist/test_Metrics.py @@ -6,7 +6,7 @@ import socket import threading import unittest import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class TestRuleMetrics(DNSDistTest): @@ -27,15 +27,15 @@ class TestRuleMetrics(DNSDistTest): addAction('cache.metrics.tests.powerdns.com', PoolAction('cache')) """ _webTimeout = 2.0 - _webServerPort = 8083 + _webServerPort = pickAvailablePort() _webServerAPIKey = 'apisecret' _webServerAPIKeyHashed = '$scrypt$ln=10,p=1,r=8$9v8JxDfzQVyTpBkTbkUqYg==$bDQzAOHeK1G9UvTPypNhrX48w974ZXbFPtRKS34+aso=' _serverKey = 'server.key' _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8453 - _dohServerPort = 8443 + _tlsServerPort = pickAvailablePort() + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/" % (_serverName, _dohServerPort)) _config_params = ['_tlsServerPort', '_serverCert', '_serverKey', '_dohServerPort', '_serverCert', '_serverKey', '_testServerPort', '_webServerPort', '_webServerAPIKeyHashed'] diff --git a/regression-tests.dnsdist/test_OCSP.py b/regression-tests.dnsdist/test_OCSP.py index a8577baea1..9534150824 100644 --- a/regression-tests.dnsdist/test_OCSP.py +++ b/regression-tests.dnsdist/test_OCSP.py @@ -4,7 +4,7 @@ import dns import os import subprocess import unittest -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class DNSDistOCSPStaplingTest(DNSDistTest): @@ -46,7 +46,7 @@ class TestOCSPStaplingDOH(DNSDistOCSPStaplingTest): _ocspFile = 'server.ocsp' _caCert = 'ca.pem' _caKey = 'ca.key' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _config_template = """ newServer{address="127.0.0.1:%s"} setKey("%s") @@ -101,7 +101,7 @@ class TestBrokenOCSPStaplingDoH(DNSDistOCSPStaplingTest): _caCert = 'ca.pem' # invalid OCSP file! _ocspFile = '/dev/null' - _tlsServerPort = 8443 + _tlsServerPort = pickAvailablePort() _config_template = """ newServer{address="127.0.0.1:%s"} setKey("%s") @@ -128,7 +128,7 @@ class TestOCSPStaplingTLSGnuTLS(DNSDistOCSPStaplingTest): _ocspFile = 'server.ocsp' _caCert = 'ca.pem' _caKey = 'ca.key' - _tlsServerPort = 8443 + _tlsServerPort = pickAvailablePort() _config_template = """ newServer{address="127.0.0.1:%s"} setKey("%s") @@ -146,7 +146,7 @@ class TestOCSPStaplingTLSGnuTLS(DNSDistOCSPStaplingTest): """ output = self.checkOCSPStaplingStatus('127.0.0.1', self._tlsServerPort, self._serverName, self._caCert) self.assertIn('OCSP Response Status: successful (0x0)', output) - self.assertEquals(self.getTLSProvider(), "gnutls") + self.assertEqual(self.getTLSProvider(), "gnutls") serialNumber = self.getOCSPSerial(output) self.assertTrue(serialNumber) @@ -171,7 +171,7 @@ class TestBrokenOCSPStaplingTLSGnuTLS(DNSDistOCSPStaplingTest): _caCert = 'ca.pem' # invalid OCSP file! _ocspFile = '/dev/null' - _tlsServerPort = 8443 + _tlsServerPort = pickAvailablePort() _config_template = """ newServer{address="127.0.0.1:%s"} setKey("%s") @@ -187,7 +187,7 @@ class TestBrokenOCSPStaplingTLSGnuTLS(DNSDistOCSPStaplingTest): """ output = self.checkOCSPStaplingStatus('127.0.0.1', self._tlsServerPort, self._serverName, self._caCert) self.assertNotIn('OCSP Response Status: successful (0x0)', output) - self.assertEquals(self.getTLSProvider(), "gnutls") + self.assertEqual(self.getTLSProvider(), "gnutls") class TestOCSPStaplingTLSOpenSSL(DNSDistOCSPStaplingTest): @@ -199,7 +199,7 @@ class TestOCSPStaplingTLSOpenSSL(DNSDistOCSPStaplingTest): _ocspFile = 'server.ocsp' _caCert = 'ca.pem' _caKey = 'ca.key' - _tlsServerPort = 8443 + _tlsServerPort = pickAvailablePort() _config_template = """ newServer{address="127.0.0.1:%s"} setKey("%s") @@ -217,7 +217,7 @@ class TestOCSPStaplingTLSOpenSSL(DNSDistOCSPStaplingTest): """ output = self.checkOCSPStaplingStatus('127.0.0.1', self._tlsServerPort, self._serverName, self._caCert) self.assertIn('OCSP Response Status: successful (0x0)', output) - self.assertEquals(self.getTLSProvider(), "openssl") + self.assertEqual(self.getTLSProvider(), "openssl") serialNumber = self.getOCSPSerial(output) self.assertTrue(serialNumber) @@ -242,7 +242,7 @@ class TestBrokenOCSPStaplingTLSOpenSSL(DNSDistOCSPStaplingTest): _caCert = 'ca.pem' # invalid OCSP file! _ocspFile = '/dev/null' - _tlsServerPort = 8443 + _tlsServerPort = pickAvailablePort() _config_template = """ newServer{address="127.0.0.1:%s"} setKey("%s") @@ -258,4 +258,4 @@ class TestBrokenOCSPStaplingTLSOpenSSL(DNSDistOCSPStaplingTest): """ output = self.checkOCSPStaplingStatus('127.0.0.1', self._tlsServerPort, self._serverName, self._caCert) self.assertNotIn('OCSP Response Status: successful (0x0)', output) - self.assertEquals(self.getTLSProvider(), "openssl") + self.assertEqual(self.getTLSProvider(), "openssl") diff --git a/regression-tests.dnsdist/test_OOOR.py b/regression-tests.dnsdist/test_OOOR.py index a7364b9daf..aa9b76af78 100644 --- a/regression-tests.dnsdist/test_OOOR.py +++ b/regression-tests.dnsdist/test_OOOR.py @@ -4,7 +4,7 @@ import socket import struct import time import threading -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class OOORTCPResponder(object): @@ -62,7 +62,7 @@ class OOORTCPResponder(object): thread = threading.Thread(name='Connection Handler', target=self.handleConnection, args=[conn]) - thread.setDaemon(True) + thread.daemon = True thread.start() sock.close() @@ -132,20 +132,20 @@ class ReverseOOORTCPResponder(OOORTCPResponder): thread = threading.Thread(name='Connection Handler', target=self.handleConnection, args=[conn]) - thread.setDaemon(True) + thread.daemon = True thread.start() sock.close() -OOORResponderPort = 5371 +OOORResponderPort = pickAvailablePort() ooorTCPResponder = threading.Thread(name='TCP Responder', target=OOORTCPResponder, args=[OOORResponderPort]) -ooorTCPResponder.setDaemon(True) +ooorTCPResponder.daemon = True ooorTCPResponder.start() -ReverseOOORResponderPort = 5372 +ReverseOOORResponderPort = pickAvailablePort() ReverseOoorTCPResponder = threading.Thread(name='TCP Responder', target=ReverseOOORTCPResponder, args=[ReverseOOORResponderPort]) -ReverseOoorTCPResponder.setDaemon(True) +ReverseOoorTCPResponder.daemon = True ReverseOoorTCPResponder.start() class TestOOORWithClientNotBackend(DNSDistTest): diff --git a/regression-tests.dnsdist/test_OutgoingDOH.py b/regression-tests.dnsdist/test_OutgoingDOH.py index 55c7ba57ca..4f73a5a6b7 100644 --- a/regression-tests.dnsdist/test_OutgoingDOH.py +++ b/regression-tests.dnsdist/test_OutgoingDOH.py @@ -7,12 +7,12 @@ import ssl import threading import time -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class OutgoingDOHTests(object): _webTimeout = 2.0 - _webServerPort = 8083 + _webServerPort = pickAvailablePort() _webServerBasicAuthPassword = 'secret' _webServerAPIKey = 'apisecret' _webServerBasicAuthPasswordHashed = '$scrypt$ln=10,p=1,r=8$6DKLnvUYEeXWh3JNOd3iwg==$kSrhdHaRbZ7R74q3lGBqO1xetgxRxhmWzYJ2Qvfm7JM=' @@ -148,7 +148,7 @@ class OutgoingDOHTests(object): class BrokenOutgoingDOHTests(object): _webTimeout = 2.0 - _webServerPort = 8083 + _webServerPort = pickAvailablePort() _webServerBasicAuthPassword = 'secret' _webServerAPIKey = 'apisecret' _webServerBasicAuthPasswordHashed = '$scrypt$ln=10,p=1,r=8$6DKLnvUYEeXWh3JNOd3iwg==$kSrhdHaRbZ7R74q3lGBqO1xetgxRxhmWzYJ2Qvfm7JM=' @@ -192,7 +192,7 @@ class BrokenOutgoingDOHTests(object): class OutgoingDOHBrokenResponsesTests(object): _webTimeout = 2.0 - _webServerPort = 8083 + _webServerPort = pickAvailablePort() _webServerBasicAuthPassword = 'secret' _webServerAPIKey = 'apisecret' _webServerBasicAuthPasswordHashed = '$scrypt$ln=10,p=1,r=8$6DKLnvUYEeXWh3JNOd3iwg==$kSrhdHaRbZ7R74q3lGBqO1xetgxRxhmWzYJ2Qvfm7JM=' @@ -263,7 +263,7 @@ class OutgoingDOHBrokenResponsesTests(object): self.assertEqual(response, receivedResponse) class TestOutgoingDOHOpenSSL(DNSDistTest, OutgoingDOHTests): - _tlsBackendPort = 10543 + _tlsBackendPort = pickAvailablePort() _tlsProvider = 'openssl' _consoleKey = DNSDistTest.generateConsoleKey() _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') @@ -299,11 +299,11 @@ class TestOutgoingDOHOpenSSL(DNSDistTest, OutgoingDOHTests): print("Launching DOH responder..") cls._DOHResponder = threading.Thread(name='DOH Responder', target=cls.DOHResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - cls._DOHResponder.setDaemon(True) + cls._DOHResponder.daemon = True cls._DOHResponder.start() class TestOutgoingDOHGnuTLS(DNSDistTest, OutgoingDOHTests): - _tlsBackendPort = 10544 + _tlsBackendPort = pickAvailablePort() _tlsProvider = 'gnutls' _consoleKey = DNSDistTest.generateConsoleKey() _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') @@ -331,11 +331,11 @@ class TestOutgoingDOHGnuTLS(DNSDistTest, OutgoingDOHTests): print("Launching DOH responder..") cls._DOHResponder = threading.Thread(name='DOH Responder', target=cls.DOHResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - cls._DOHResponder.setDaemon(True) + cls._DOHResponder.daemon = True cls._DOHResponder.start() class TestOutgoingDOHOpenSSLWrongCertName(DNSDistTest, BrokenOutgoingDOHTests): - _tlsBackendPort = 10545 + _tlsBackendPort = pickAvailablePort() _config_params = ['_tlsBackendPort', '_webServerPort', '_webServerBasicAuthPasswordHashed', '_webServerAPIKeyHashed'] _config_template = """ setMaxTCPClientThreads(1) @@ -351,11 +351,11 @@ class TestOutgoingDOHOpenSSLWrongCertName(DNSDistTest, BrokenOutgoingDOHTests): print("Launching DOH responder..") cls._DOHResponder = threading.Thread(name='DOH Responder', target=cls.DOHResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - cls._DOHResponder.setDaemon(True) + cls._DOHResponder.daemon = True cls._DOHResponder.start() class TestOutgoingDOHGnuTLSWrongCertName(DNSDistTest, BrokenOutgoingDOHTests): - _tlsBackendPort = 10546 + _tlsBackendPort = pickAvailablePort() _config_params = ['_tlsBackendPort', '_webServerPort', '_webServerBasicAuthPasswordHashed', '_webServerAPIKeyHashed'] _config_template = """ setMaxTCPClientThreads(1) @@ -371,11 +371,11 @@ class TestOutgoingDOHGnuTLSWrongCertName(DNSDistTest, BrokenOutgoingDOHTests): print("Launching DOH responder..") cls._DOHResponder = threading.Thread(name='DOH Responder', target=cls.DOHResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - cls._DOHResponder.setDaemon(True) + cls._DOHResponder.daemon = True cls._DOHResponder.start() class TestOutgoingDOHOpenSSLWrongCertNameButNoCheck(DNSDistTest, OutgoingDOHTests): - _tlsBackendPort = 10547 + _tlsBackendPort = pickAvailablePort() _tlsProvider = 'openssl' _consoleKey = DNSDistTest.generateConsoleKey() _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') @@ -402,11 +402,11 @@ class TestOutgoingDOHOpenSSLWrongCertNameButNoCheck(DNSDistTest, OutgoingDOHTest print("Launching DOH responder..") cls._DOHResponder = threading.Thread(name='DOH Responder', target=cls.DOHResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - cls._DOHResponder.setDaemon(True) + cls._DOHResponder.daemon = True cls._DOHResponder.start() class TestOutgoingDOHGnuTLSWrongCertNameButNoCheck(DNSDistTest, OutgoingDOHTests): - _tlsBackendPort = 10548 + _tlsBackendPort = pickAvailablePort() _tlsProvider = 'gnutls' _consoleKey = DNSDistTest.generateConsoleKey() _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') @@ -433,11 +433,11 @@ class TestOutgoingDOHGnuTLSWrongCertNameButNoCheck(DNSDistTest, OutgoingDOHTests print("Launching DOH responder..") cls._DOHResponder = threading.Thread(name='DOH Responder', target=cls.DOHResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - cls._DOHResponder.setDaemon(True) + cls._DOHResponder.daemon = True cls._DOHResponder.start() class TestOutgoingDOHBrokenResponsesOpenSSL(DNSDistTest, OutgoingDOHBrokenResponsesTests): - _tlsBackendPort = 10549 + _tlsBackendPort = pickAvailablePort() _config_params = ['_tlsBackendPort', '_webServerPort', '_webServerBasicAuthPasswordHashed', '_webServerAPIKeyHashed'] _config_template = """ setMaxTCPClientThreads(1) @@ -475,11 +475,11 @@ class TestOutgoingDOHBrokenResponsesOpenSSL(DNSDistTest, OutgoingDOHBrokenRespon print("Launching DOH responder..") cls._DOHResponder = threading.Thread(name='DOH Responder', target=cls.DOHResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.callback, tlsContext]) - cls._DOHResponder.setDaemon(True) + cls._DOHResponder.daemon = True cls._DOHResponder.start() class TestOutgoingDOHBrokenResponsesGnuTLS(DNSDistTest, OutgoingDOHBrokenResponsesTests): - _tlsBackendPort = 10550 + _tlsBackendPort = pickAvailablePort() _config_params = ['_tlsBackendPort', '_webServerPort', '_webServerBasicAuthPasswordHashed', '_webServerAPIKeyHashed'] _config_template = """ setMaxTCPClientThreads(1) @@ -512,12 +512,12 @@ class TestOutgoingDOHBrokenResponsesGnuTLS(DNSDistTest, OutgoingDOHBrokenRespons print("Launching DOH responder..") cls._DOHResponder = threading.Thread(name='DOH Responder', target=cls.DOHResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.callback, tlsContext]) - cls._DOHResponder.setDaemon(True) + cls._DOHResponder.daemon = True cls._DOHResponder.start() class TestOutgoingDOHProxyProtocol(DNSDistTest): - _tlsBackendPort = 10551 + _tlsBackendPort = pickAvailablePort() _config_params = ['_tlsBackendPort'] _config_template = """ setMaxTCPClientThreads(1) @@ -533,7 +533,7 @@ class TestOutgoingDOHProxyProtocol(DNSDistTest): print("Launching DOH woth Proxy Protocol responder..") cls._DOHResponder = threading.Thread(name='DOH with Proxy Protocol Responder', target=cls.DOHResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext, True]) - cls._DOHResponder.setDaemon(True) + cls._DOHResponder.daemon = True cls._DOHResponder.start() def testPP(self): @@ -563,7 +563,7 @@ class TestOutgoingDOHProxyProtocol(DNSDistTest): self.checkMessageProxyProtocol(receivedProxyPayload, '127.0.0.1', '127.0.0.1', True) class TestOutgoingDOHXForwarded(DNSDistTest): - _tlsBackendPort = 10560 + _tlsBackendPort = pickAvailablePort() _config_params = ['_tlsBackendPort'] _config_template = """ setMaxTCPClientThreads(1) @@ -608,7 +608,7 @@ class TestOutgoingDOHXForwarded(DNSDistTest): print("Launching DOH responder..") cls._DOHResponder = threading.Thread(name='DOH Responder', target=cls.DOHResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, cls.callback, tlsContext]) - cls._DOHResponder.setDaemon(True) + cls._DOHResponder.daemon = True cls._DOHResponder.start() def testXForwarded(self): diff --git a/regression-tests.dnsdist/test_OutgoingTLS.py b/regression-tests.dnsdist/test_OutgoingTLS.py index 87db8c461f..0430cfd979 100644 --- a/regression-tests.dnsdist/test_OutgoingTLS.py +++ b/regression-tests.dnsdist/test_OutgoingTLS.py @@ -5,12 +5,12 @@ import ssl import threading import time -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class OutgoingTLSTests(object): _webTimeout = 2.0 - _webServerPort = 8083 + _webServerPort = pickAvailablePort() _webServerBasicAuthPassword = 'secret' _webServerAPIKey = 'apisecret' _webServerBasicAuthPasswordHashed = '$scrypt$ln=10,p=1,r=8$6DKLnvUYEeXWh3JNOd3iwg==$kSrhdHaRbZ7R74q3lGBqO1xetgxRxhmWzYJ2Qvfm7JM=' @@ -96,7 +96,7 @@ class OutgoingTLSTests(object): class BrokenOutgoingTLSTests(object): _webTimeout = 2.0 - _webServerPort = 8083 + _webServerPort = pickAvailablePort() _webServerBasicAuthPassword = 'secret' _webServerAPIKey = 'apisecret' _webServerBasicAuthPasswordHashed = '$scrypt$ln=10,p=1,r=8$6DKLnvUYEeXWh3JNOd3iwg==$kSrhdHaRbZ7R74q3lGBqO1xetgxRxhmWzYJ2Qvfm7JM=' @@ -137,7 +137,7 @@ class BrokenOutgoingTLSTests(object): self.checkNoResponderHit() class TestOutgoingTLSOpenSSL(DNSDistTest, OutgoingTLSTests): - _tlsBackendPort = 10443 + _tlsBackendPort = pickAvailablePort() _config_params = ['_tlsBackendPort', '_webServerPort', '_webServerBasicAuthPasswordHashed', '_webServerAPIKeyHashed'] _config_template = """ setMaxTCPClientThreads(1) @@ -161,11 +161,11 @@ class TestOutgoingTLSOpenSSL(DNSDistTest, OutgoingTLSTests): print("Launching TLS responder..") cls._TLSResponder = threading.Thread(name='TLS Responder', target=cls.TCPResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - cls._TLSResponder.setDaemon(True) + cls._TLSResponder.daemon = True cls._TLSResponder.start() class TestOutgoingTLSGnuTLS(DNSDistTest, OutgoingTLSTests): - _tlsBackendPort = 10444 + _tlsBackendPort = pickAvailablePort() _config_params = ['_tlsBackendPort', '_webServerPort', '_webServerBasicAuthPasswordHashed', '_webServerAPIKeyHashed'] _config_template = """ setMaxTCPClientThreads(1) @@ -182,11 +182,11 @@ class TestOutgoingTLSGnuTLS(DNSDistTest, OutgoingTLSTests): print("Launching TLS responder..") cls._TLSResponder = threading.Thread(name='TLS Responder', target=cls.TCPResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - cls._TLSResponder.setDaemon(True) + cls._TLSResponder.daemon = True cls._TLSResponder.start() class TestOutgoingTLSOpenSSLWrongCertName(DNSDistTest, BrokenOutgoingTLSTests): - _tlsBackendPort = 10445 + _tlsBackendPort = pickAvailablePort() _config_params = ['_tlsBackendPort', '_webServerPort', '_webServerBasicAuthPasswordHashed', '_webServerAPIKeyHashed'] _config_template = """ setMaxTCPClientThreads(1) @@ -202,11 +202,11 @@ class TestOutgoingTLSOpenSSLWrongCertName(DNSDistTest, BrokenOutgoingTLSTests): print("Launching TLS responder..") cls._TLSResponder = threading.Thread(name='TLS Responder', target=cls.TCPResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - cls._TLSResponder.setDaemon(True) + cls._TLSResponder.daemon = True cls._TLSResponder.start() class TestOutgoingTLSGnuTLSWrongCertName(DNSDistTest, BrokenOutgoingTLSTests): - _tlsBackendPort = 10446 + _tlsBackendPort = pickAvailablePort() _config_params = ['_tlsBackendPort', '_webServerPort', '_webServerBasicAuthPasswordHashed', '_webServerAPIKeyHashed'] _config_template = """ setMaxTCPClientThreads(1) @@ -222,11 +222,11 @@ class TestOutgoingTLSGnuTLSWrongCertName(DNSDistTest, BrokenOutgoingTLSTests): print("Launching TLS responder..") cls._TLSResponder = threading.Thread(name='TLS Responder', target=cls.TCPResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - cls._TLSResponder.setDaemon(True) + cls._TLSResponder.daemon = True cls._TLSResponder.start() class TestOutgoingTLSOpenSSLWrongCertNameButNoCheck(DNSDistTest, OutgoingTLSTests): - _tlsBackendPort = 10447 + _tlsBackendPort = pickAvailablePort() _config_params = ['_tlsBackendPort', '_webServerPort', '_webServerBasicAuthPasswordHashed', '_webServerAPIKeyHashed'] _config_template = """ setMaxTCPClientThreads(1) @@ -242,11 +242,11 @@ class TestOutgoingTLSOpenSSLWrongCertNameButNoCheck(DNSDistTest, OutgoingTLSTest print("Launching TLS responder..") cls._TLSResponder = threading.Thread(name='TLS Responder', target=cls.TCPResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - cls._TLSResponder.setDaemon(True) + cls._TLSResponder.daemon = True cls._TLSResponder.start() class TestOutgoingTLSGnuTLSWrongCertNameButNoCheck(DNSDistTest, OutgoingTLSTests): - _tlsBackendPort = 10448 + _tlsBackendPort = pickAvailablePort() _config_params = ['_tlsBackendPort', '_webServerPort', '_webServerBasicAuthPasswordHashed', '_webServerAPIKeyHashed'] _config_template = """ setMaxTCPClientThreads(1) @@ -262,5 +262,5 @@ class TestOutgoingTLSGnuTLSWrongCertNameButNoCheck(DNSDistTest, OutgoingTLSTests print("Launching TLS responder..") cls._TLSResponder = threading.Thread(name='TLS Responder', target=cls.TCPResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) - cls._TLSResponder.setDaemon(True) + cls._TLSResponder.daemon = True cls._TLSResponder.start() diff --git a/regression-tests.dnsdist/test_Prometheus.py b/regression-tests.dnsdist/test_Prometheus.py index a868752339..cccf04bfb6 100644 --- a/regression-tests.dnsdist/test_Prometheus.py +++ b/regression-tests.dnsdist/test_Prometheus.py @@ -3,13 +3,13 @@ import os import requests import subprocess import unittest -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort @unittest.skipIf('SKIP_PROMETHEUS_TESTS' in os.environ, 'Prometheus tests are disabled') class TestPrometheus(DNSDistTest): _webTimeout = 2.0 - _webServerPort = 8083 + _webServerPort = pickAvailablePort() _webServerBasicAuthPassword = 'secret' _webServerBasicAuthPasswordHashed = '$scrypt$ln=10,p=1,r=8$6DKLnvUYEeXWh3JNOd3iwg==$kSrhdHaRbZ7R74q3lGBqO1xetgxRxhmWzYJ2Qvfm7JM=' _webServerAPIKey = 'apisecret' diff --git a/regression-tests.dnsdist/test_Protobuf.py b/regression-tests.dnsdist/test_Protobuf.py index eee259b048..e4f0b0232c 100644 --- a/regression-tests.dnsdist/test_Protobuf.py +++ b/regression-tests.dnsdist/test_Protobuf.py @@ -5,14 +5,14 @@ import socket import struct import sys import time -from dnsdisttests import DNSDistTest, Queue +from dnsdisttests import DNSDistTest, pickAvailablePort, Queue from proxyprotocol import ProxyProtocol import dns import dnsmessage_pb2 class DNSDistProtobufTest(DNSDistTest): - _protobufServerPort = 4242 + _protobufServerPort = pickAvailablePort() _protobufQueue = Queue() _protobufServerID = 'dnsdist-server-1' _protobufCounter = 0 @@ -58,15 +58,15 @@ class DNSDistProtobufTest(DNSDistTest): @classmethod def startResponders(cls): cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() cls._protobufListener = threading.Thread(name='Protobuf Listener', target=cls.ProtobufListener, args=[cls._protobufServerPort]) - cls._protobufListener.setDaemon(True) + cls._protobufListener.daemon = True cls._protobufListener.start() def getFirstProtobufMessage(self): @@ -491,8 +491,8 @@ class TestProtobufMetaDOH(DNSDistProtobufTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8453 - _dohServerPort = 8443 + _tlsServerPort = pickAvailablePort() + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/dns-query" % (_serverName, _dohServerPort)) _config_params = ['_testServerPort', '_protobufServerPort', '_tlsServerPort', '_serverCert', '_serverKey', '_dohServerPort', '_serverCert', '_serverKey'] _config_template = """ diff --git a/regression-tests.dnsdist/test_ProxyProtocol.py b/regression-tests.dnsdist/test_ProxyProtocol.py index 389c00c860..1d7aa5c5c9 100644 --- a/regression-tests.dnsdist/test_ProxyProtocol.py +++ b/regression-tests.dnsdist/test_ProxyProtocol.py @@ -8,7 +8,7 @@ import sys import threading import time -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort from proxyprotocol import ProxyProtocol from dnsdistdohtests import DNSDistDOHTest @@ -132,13 +132,13 @@ def ProxyProtocolTCPResponder(port, fromQueue, toQueue): toProxyQueue = Queue() fromProxyQueue = Queue() -proxyResponderPort = 5470 +proxyResponderPort = pickAvailablePort() udpResponder = threading.Thread(name='UDP Proxy Protocol Responder', target=ProxyProtocolUDPResponder, args=[proxyResponderPort, toProxyQueue, fromProxyQueue]) -udpResponder.setDaemon(True) +udpResponder.daemon = True udpResponder.start() tcpResponder = threading.Thread(name='TCP Proxy Protocol Responder', target=ProxyProtocolTCPResponder, args=[proxyResponderPort, toProxyQueue, fromProxyQueue]) -tcpResponder.setDaemon(True) +tcpResponder.daemon = True tcpResponder.start() class ProxyProtocolTest(DNSDistTest): @@ -729,7 +729,7 @@ class TestDOHWithOutgoingProxyProtocol(DNSDistDOHTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _dohBaseURL = ("https://%s:%d/dns-query" % (_serverName, _dohServerPort)) _proxyResponderPort = proxyResponderPort _config_template = """ diff --git a/regression-tests.dnsdist/test_RestartQuery.py b/regression-tests.dnsdist/test_RestartQuery.py index bd077fa3b4..5bc61ff485 100644 --- a/regression-tests.dnsdist/test_RestartQuery.py +++ b/regression-tests.dnsdist/test_RestartQuery.py @@ -2,7 +2,7 @@ import threading import clientsubnetoption import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort def servFailResponseCallback(request): response = dns.message.make_response(request) @@ -22,8 +22,8 @@ def normalResponseCallback(request): class TestRestartQuery(DNSDistTest): # this test suite uses different responder ports - _testNormalServerPort = 5420 - _testServfailServerPort = 5421 + _testNormalServerPort = pickAvailablePort() + _testServfailServerPort = pickAvailablePort() _config_template = """ newServer{address="127.0.0.1:%d", pool='restarted'}:setUp() newServer{address="127.0.0.1:%d", pool=''}:setUp() @@ -54,16 +54,16 @@ class TestRestartQuery(DNSDistTest): # servfail cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServfailServerPort, cls._toResponderQueue, cls._fromResponderQueue, False, servFailResponseCallback]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServfailServerPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, servFailResponseCallback]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() cls._UDPResponderNormal = threading.Thread(name='UDP ResponderNormal', target=cls.UDPResponder, args=[cls._testNormalServerPort, cls._toResponderQueue, cls._fromResponderQueue, False, normalResponseCallback]) - cls._UDPResponderNormal.setDaemon(True) + cls._UDPResponderNormal.daemon = True cls._UDPResponderNormal.start() cls._TCPResponderNormal = threading.Thread(name='TCP ResponderNormal', target=cls.TCPResponder, args=[cls._testNormalServerPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, normalResponseCallback]) - cls._TCPResponderNormal.setDaemon(True) + cls._TCPResponderNormal.daemon = True cls._TCPResponderNormal.start() def testRestartingQuery(self): @@ -84,5 +84,5 @@ class TestRestartQuery(DNSDistTest): sender = getattr(self, method) (_, receivedResponse) = sender(query, response=None, useQueue=False) self.assertTrue(receivedResponse) - self.assertEquals(receivedResponse, expectedResponse) + self.assertEqual(receivedResponse, expectedResponse) diff --git a/regression-tests.dnsdist/test_Routing.py b/regression-tests.dnsdist/test_Routing.py index 9d45803fca..17708b1fb2 100644 --- a/regression-tests.dnsdist/test_Routing.py +++ b/regression-tests.dnsdist/test_Routing.py @@ -3,7 +3,7 @@ import base64 import threading import time import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class TestRoutingPoolRouting(DNSDistTest): @@ -132,7 +132,7 @@ class TestRoutingQPSPoolRouting(DNSDistTest): class TestRoutingRoundRobinLB(DNSDistTest): - _testServer2Port = 5351 + _testServer2Port = pickAvailablePort() _config_params = ['_testServerPort', '_testServer2Port'] _config_template = """ setServerPolicy(roundrobin) @@ -146,18 +146,18 @@ class TestRoutingRoundRobinLB(DNSDistTest): def startResponders(cls): print("Launching responders..") cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() cls._UDPResponder2 = threading.Thread(name='UDP Responder 2', target=cls.UDPResponder, args=[cls._testServer2Port, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder2.setDaemon(True) + cls._UDPResponder2.daemon = True cls._UDPResponder2.start() cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() cls._TCPResponder2 = threading.Thread(name='TCP Responder 2', target=cls.TCPResponder, args=[cls._testServer2Port, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder2.setDaemon(True) + cls._TCPResponder2.daemon = True cls._TCPResponder2.start() def testRR(self): @@ -198,7 +198,7 @@ class TestRoutingRoundRobinLB(DNSDistTest): class TestRoutingRoundRobinLBOneDown(DNSDistTest): - _testServer2Port = 5351 + _testServer2Port = pickAvailablePort() _config_params = ['_testServerPort', '_testServer2Port'] _config_template = """ setServerPolicy(roundrobin) @@ -250,7 +250,7 @@ class TestRoutingRoundRobinLBOneDown(DNSDistTest): class TestRoutingRoundRobinLBAllDown(DNSDistTest): - _testServer2Port = 5351 + _testServer2Port = pickAvailablePort() _config_params = ['_testServerPort', '_testServer2Port'] _config_template = """ setServerPolicy(roundrobin) @@ -283,7 +283,7 @@ class TestRoutingRoundRobinLBAllDown(DNSDistTest): class TestRoutingLuaFFIPerThreadRoundRobinLB(DNSDistTest): - _testServer2Port = 5351 + _testServer2Port = pickAvailablePort() _config_params = ['_testServerPort', '_testServer2Port'] _config_template = """ -- otherwise we start too many TCP workers, and as each thread @@ -310,18 +310,18 @@ class TestRoutingLuaFFIPerThreadRoundRobinLB(DNSDistTest): def startResponders(cls): print("Launching responders..") cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() cls._UDPResponder2 = threading.Thread(name='UDP Responder 2', target=cls.UDPResponder, args=[cls._testServer2Port, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder2.setDaemon(True) + cls._UDPResponder2.daemon = True cls._UDPResponder2.start() cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() cls._TCPResponder2 = threading.Thread(name='TCP Responder 2', target=cls.TCPResponder, args=[cls._testServer2Port, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder2.setDaemon(True) + cls._TCPResponder2.daemon = True cls._TCPResponder2.start() def testRR(self): @@ -362,7 +362,7 @@ class TestRoutingLuaFFIPerThreadRoundRobinLB(DNSDistTest): class TestRoutingOrder(DNSDistTest): - _testServer2Port = 5351 + _testServer2Port = pickAvailablePort() _config_params = ['_testServerPort', '_testServer2Port'] _config_template = """ setServerPolicy(firstAvailable) @@ -376,18 +376,18 @@ class TestRoutingOrder(DNSDistTest): def startResponders(cls): print("Launching responders..") cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() cls._UDPResponder2 = threading.Thread(name='UDP Responder 2', target=cls.UDPResponder, args=[cls._testServer2Port, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder2.setDaemon(True) + cls._UDPResponder2.daemon = True cls._UDPResponder2.start() cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() cls._TCPResponder2 = threading.Thread(name='TCP Responder 2', target=cls.TCPResponder, args=[cls._testServer2Port, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder2.setDaemon(True) + cls._TCPResponder2.daemon = True cls._TCPResponder2.start() def testOrder(self): @@ -428,7 +428,7 @@ class TestRoutingOrder(DNSDistTest): class TestFirstAvailableQPSPacketCacheHits(DNSDistTest): _verboseMode = True - _testServer2Port = 5351 + _testServer2Port = pickAvailablePort() _config_params = ['_testServerPort', '_testServer2Port'] _config_template = """ setServerPolicy(firstAvailable) @@ -444,18 +444,18 @@ class TestFirstAvailableQPSPacketCacheHits(DNSDistTest): def startResponders(cls): print("Launching responders..") cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() cls._UDPResponder2 = threading.Thread(name='UDP Responder 2', target=cls.UDPResponder, args=[cls._testServer2Port, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder2.setDaemon(True) + cls._UDPResponder2.daemon = True cls._UDPResponder2.start() cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() cls._TCPResponder2 = threading.Thread(name='TCP Responder 2', target=cls.TCPResponder, args=[cls._testServer2Port, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder2.setDaemon(True) + cls._TCPResponder2.daemon = True cls._TCPResponder2.start() def testOrderQPSCacheHits(self): @@ -577,7 +577,7 @@ class TestRoutingNoServer(DNSDistTest): class TestRoutingWRandom(DNSDistTest): - _testServer2Port = 5351 + _testServer2Port = pickAvailablePort() _config_params = ['_testServerPort', '_testServer2Port'] _config_template = """ setServerPolicy(wrandom) @@ -591,18 +591,18 @@ class TestRoutingWRandom(DNSDistTest): def startResponders(cls): print("Launching responders..") cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() cls._UDPResponder2 = threading.Thread(name='UDP Responder 2', target=cls.UDPResponder, args=[cls._testServer2Port, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder2.setDaemon(True) + cls._UDPResponder2.daemon = True cls._UDPResponder2.start() cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() cls._TCPResponder2 = threading.Thread(name='TCP Responder 2', target=cls.TCPResponder, args=[cls._testServer2Port, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder2.setDaemon(True) + cls._TCPResponder2.daemon = True cls._TCPResponder2.start() def testWRandom(self): @@ -648,7 +648,7 @@ class TestRoutingWRandom(DNSDistTest): class TestRoutingHighValueWRandom(DNSDistTest): - _testServer2Port = 5351 + _testServer2Port = pickAvailablePort() _consoleKey = DNSDistTest.generateConsoleKey() _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') _config_params = ['_consoleKeyB64', '_consolePort', '_testServerPort', '_testServer2Port'] @@ -666,18 +666,18 @@ class TestRoutingHighValueWRandom(DNSDistTest): def startResponders(cls): print("Launching responders..") cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() cls._UDPResponder2 = threading.Thread(name='UDP Responder 2', target=cls.UDPResponder, args=[cls._testServer2Port, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder2.setDaemon(True) + cls._UDPResponder2.daemon = True cls._UDPResponder2.start() cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() cls._TCPResponder2 = threading.Thread(name='TCP Responder 2', target=cls.TCPResponder, args=[cls._testServer2Port, cls._toResponderQueue, cls._fromResponderQueue]) - cls._TCPResponder2.setDaemon(True) + cls._TCPResponder2.daemon = True cls._TCPResponder2.start() def testHighValueWRandom(self): diff --git a/regression-tests.dnsdist/test_TCPFastOpen.py b/regression-tests.dnsdist/test_TCPFastOpen.py index 96900ce68a..c061ba935b 100644 --- a/regression-tests.dnsdist/test_TCPFastOpen.py +++ b/regression-tests.dnsdist/test_TCPFastOpen.py @@ -5,7 +5,7 @@ import dns import requests import socket import struct -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class TestBrokenTCPFastOpen(DNSDistTest): @@ -13,10 +13,10 @@ class TestBrokenTCPFastOpen(DNSDistTest): # because, contrary to the other ones, its # TCP responder will accept a connection, read the # query then just close the connection right away - _testServerPort = 5410 + _testServerPort = pickAvailablePort() _testServerRetries = 5 _webTimeout = 2.0 - _webServerPort = 8083 + _webServerPort = pickAvailablePort() _webServerBasicAuthPassword = 'secret' _webServerBasicAuthPasswordHashed = '$scrypt$ln=10,p=1,r=8$6DKLnvUYEeXWh3JNOd3iwg==$kSrhdHaRbZ7R74q3lGBqO1xetgxRxhmWzYJ2Qvfm7JM=' _webServerAPIKey = 'apisecret' @@ -71,12 +71,12 @@ class TestBrokenTCPFastOpen(DNSDistTest): # Normal responder cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() # Close the connection right after reading the query cls._TCPResponder = threading.Thread(name='Broken TCP Responder', target=cls.BrokenTCPResponder, args=[cls._testServerPort]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() def testTCOFastOpenOnCloseAfterRead(self): diff --git a/regression-tests.dnsdist/test_TCPLimits.py b/regression-tests.dnsdist/test_TCPLimits.py index 5df419e843..7f24f54ce3 100644 --- a/regression-tests.dnsdist/test_TCPLimits.py +++ b/regression-tests.dnsdist/test_TCPLimits.py @@ -2,7 +2,7 @@ import struct import time import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort try: range = xrange @@ -13,7 +13,7 @@ class TestTCPLimits(DNSDistTest): # this test suite uses a different responder port # because it uses a different health check configuration - _testServerPort = 5395 + _testServerPort = pickAvailablePort() _answerUnexpected = True _tcpIdleTimeout = 2 @@ -134,7 +134,7 @@ class TestTCPFrontendLimits(DNSDistTest): # this test suite uses a different responder port # because it uses a different health check configuration - _testServerPort = 5395 + _testServerPort = pickAvailablePort() _answerUnexpected = True _skipListeningOnCL = True diff --git a/regression-tests.dnsdist/test_TCPShort.py b/regression-tests.dnsdist/test_TCPShort.py index 7045134bff..771dedfc1f 100644 --- a/regression-tests.dnsdist/test_TCPShort.py +++ b/regression-tests.dnsdist/test_TCPShort.py @@ -4,7 +4,7 @@ import struct import threading import time import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort try: range = xrange @@ -16,12 +16,12 @@ class TestTCPShort(DNSDistTest): # because, contrary to the other ones, its # responders allow trailing data and multiple responses, # and we don't want to mix things up. - _testServerPort = 5361 + _testServerPort = pickAvailablePort() _serverKey = 'server.key' _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8453 + _tlsServerPort = pickAvailablePort() _tcpSendTimeout = 60 _config_template = """ newServer{address="127.0.0.1:%s"} @@ -35,11 +35,11 @@ class TestTCPShort(DNSDistTest): print("Launching responders..") cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue, True]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue, True, True]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() def testTCPShortRead(self): diff --git a/regression-tests.dnsdist/test_TLS.py b/regression-tests.dnsdist/test_TLS.py index cefe7d26c4..12db463945 100644 --- a/regression-tests.dnsdist/test_TLS.py +++ b/regression-tests.dnsdist/test_TLS.py @@ -6,7 +6,7 @@ import ssl import subprocess import time import unittest -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class TLSTests(object): @@ -272,7 +272,7 @@ class TestOpenSSL(DNSDistTest, TLSTests): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8453 + _tlsServerPort = pickAvailablePort() _config_template = """ setKey("%s") controlSocket("127.0.0.1:%s") @@ -284,7 +284,7 @@ class TestOpenSSL(DNSDistTest, TLSTests): _config_params = ['_consoleKeyB64', '_consolePort', '_testServerPort', '_tlsServerPort', '_serverCert', '_serverKey'] def testProvider(self): - self.assertEquals(self.getTLSProvider(), "openssl") + self.assertEqual(self.getTLSProvider(), "openssl") class TestGnuTLS(DNSDistTest, TLSTests): @@ -294,7 +294,7 @@ class TestGnuTLS(DNSDistTest, TLSTests): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8453 + _tlsServerPort = pickAvailablePort() _config_template = """ setKey("%s") controlSocket("127.0.0.1:%s") @@ -306,14 +306,14 @@ class TestGnuTLS(DNSDistTest, TLSTests): _config_params = ['_consoleKeyB64', '_consolePort', '_testServerPort', '_tlsServerPort', '_serverCert', '_serverKey'] def testProvider(self): - self.assertEquals(self.getTLSProvider(), "gnutls") + self.assertEqual(self.getTLSProvider(), "gnutls") class TestDOTWithCache(DNSDistTest): _serverKey = 'server.key' _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8453 + _tlsServerPort = pickAvailablePort() _config_template = """ newServer{address="127.0.0.1:%s"} @@ -376,14 +376,14 @@ class TestTLSFrontendLimits(DNSDistTest): # this test suite uses a different responder port # because it uses a different health check configuration - _testServerPort = 5395 + _testServerPort = pickAvailablePort() _answerUnexpected = True _serverKey = 'server.key' _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8453 + _tlsServerPort = pickAvailablePort() _skipListeningOnCL = True _tcpIdleTimeout = 2 @@ -444,7 +444,7 @@ class TestProtocols(DNSDistTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8453 + _tlsServerPort = pickAvailablePort() _config_template = """ function checkDOT(dq) @@ -485,7 +485,7 @@ class TestPKCSTLSCertificate(DNSDistTest, TLSTests): _pkcsPassphrase = 'passw0rd' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8453 + _tlsServerPort = pickAvailablePort() _config_template = """ setKey("%s") controlSocket("127.0.0.1:%s") diff --git a/regression-tests.dnsdist/test_TLSSessionResumption.py b/regression-tests.dnsdist/test_TLSSessionResumption.py index 4f9dfd6194..0cacf448cf 100644 --- a/regression-tests.dnsdist/test_TLSSessionResumption.py +++ b/regression-tests.dnsdist/test_TLSSessionResumption.py @@ -7,7 +7,7 @@ import subprocess import tempfile import time import unittest -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort try: range = xrange except NameError: @@ -65,7 +65,7 @@ class TestNoTLSSessionResumptionDOH(DNSDistTLSSessionResumptionTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _numberOfKeys = 0 _config_template = """ newServer{address="127.0.0.1:%s"} @@ -88,7 +88,7 @@ class TestTLSSessionResumptionDOH(DNSDistTLSSessionResumptionTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _dohServerPort = 8443 + _dohServerPort = pickAvailablePort() _numberOfKeys = 5 _config_template = """ setKey("%s") @@ -182,7 +182,7 @@ class TestNoTLSSessionResumptionDOT(DNSDistTLSSessionResumptionTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8443 + _tlsServerPort = pickAvailablePort() _numberOfKeys = 0 _config_template = """ newServer{address="127.0.0.1:%s"} @@ -204,7 +204,7 @@ class TestTLSSessionResumptionDOT(DNSDistTLSSessionResumptionTest): _serverCert = 'server.chain' _serverName = 'tls.tests.dnsdist.org' _caCert = 'ca.pem' - _tlsServerPort = 8443 + _tlsServerPort = pickAvailablePort() _numberOfKeys = 5 _config_template = """ setKey("%s") diff --git a/regression-tests.dnsdist/test_TeeAction.py b/regression-tests.dnsdist/test_TeeAction.py index 99f506b7b6..373d90f645 100644 --- a/regression-tests.dnsdist/test_TeeAction.py +++ b/regression-tests.dnsdist/test_TeeAction.py @@ -3,13 +3,13 @@ import base64 import threading import clientsubnetoption import dns -from dnsdisttests import DNSDistTest, Queue +from dnsdisttests import DNSDistTest, Queue, pickAvailablePort class TestTeeAction(DNSDistTest): _consoleKey = DNSDistTest.generateConsoleKey() _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') - _teeServerPort = 5390 + _teeServerPort = pickAvailablePort() _toTeeQueue = Queue() _fromTeeQueue = Queue() _config_template = """ @@ -25,15 +25,15 @@ class TestTeeAction(DNSDistTest): print("Launching responders..") cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue, False, True]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() cls._TeeResponder = threading.Thread(name='Tee Responder', target=cls.UDPResponder, args=[cls._teeServerPort, cls._toTeeQueue, cls._fromTeeQueue]) - cls._TeeResponder.setDaemon(True) + cls._TeeResponder.daemon = True cls._TeeResponder.start() def testTeeWithECS(self): diff --git a/regression-tests.dnsdist/test_Trailing.py b/regression-tests.dnsdist/test_Trailing.py index ee44ddba86..5bb97ff8b8 100644 --- a/regression-tests.dnsdist/test_Trailing.py +++ b/regression-tests.dnsdist/test_Trailing.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import threading import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, pickAvailablePort class TestTrailingDataToBackend(DNSDistTest): @@ -9,7 +9,7 @@ class TestTrailingDataToBackend(DNSDistTest): # because, contrary to the other ones, its # responders allow trailing data and we don't want # to mix things up. - _testServerPort = 5360 + _testServerPort = pickAvailablePort() _verboseMode = True _config_template = """ newServer{address="127.0.0.1:%s"} @@ -57,12 +57,12 @@ class TestTrailingDataToBackend(DNSDistTest): # Respond REFUSED to queries with trailing data. cls._UDPResponder = threading.Thread(name='UDP Responder', target=cls.UDPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue, dns.rcode.REFUSED]) - cls._UDPResponder.setDaemon(True) + cls._UDPResponder.daemon = True cls._UDPResponder.start() # Respond REFUSED to queries with trailing data. cls._TCPResponder = threading.Thread(name='TCP Responder', target=cls.TCPResponder, args=[cls._testServerPort, cls._toResponderQueue, cls._fromResponderQueue, dns.rcode.REFUSED]) - cls._TCPResponder.setDaemon(True) + cls._TCPResponder.daemon = True cls._TCPResponder.start() def testTrailingPassthrough(self):