From b4f237837277297f9f146005668856dcdbf6a1eb Mon Sep 17 00:00:00 2001 From: Chris Hofstaedtler Date: Mon, 5 Mar 2018 12:34:00 +0100 Subject: [PATCH] dnsdist tests: make py3k compatible and pick py3k if available --- regression-tests.dnsdist/.gitignore | 1 + regression-tests.dnsdist/dnscrypt.py | 4 ++- regression-tests.dnsdist/dnsdisttests.py | 25 +++++++++++---- regression-tests.dnsdist/runtests | 16 +++++++--- regression-tests.dnsdist/test_API.py | 2 +- regression-tests.dnsdist/test_Advanced.py | 12 +++---- regression-tests.dnsdist/test_Caching.py | 6 ++-- regression-tests.dnsdist/test_Carbon.py | 17 +++++----- regression-tests.dnsdist/test_DNSCrypt.py | 2 +- regression-tests.dnsdist/test_Dnstap.py | 23 +++++++------ regression-tests.dnsdist/test_DynBlocks.py | 32 +++++++++---------- .../test_EdnsClientSubnet.py | 6 ++-- regression-tests.dnsdist/test_Protobuf.py | 5 ++- regression-tests.dnsdist/test_SNMP.py | 4 +-- regression-tests.dnsdist/test_TCPKeepAlive.py | 16 +++++----- regression-tests.dnsdist/test_TCPLimits.py | 6 ++-- regression-tests.dnsdist/test_TeeAction.py | 9 +++--- regression-tests.dnsdist/test_Trailing.py | 4 +-- 18 files changed, 104 insertions(+), 86 deletions(-) diff --git a/regression-tests.dnsdist/.gitignore b/regression-tests.dnsdist/.gitignore index b58aec4ec..6fcb424eb 100644 --- a/regression-tests.dnsdist/.gitignore +++ b/regression-tests.dnsdist/.gitignore @@ -8,3 +8,4 @@ DNSCryptResolver* .history dnsdist.log /*_pb2.py +/__pycache__/ diff --git a/regression-tests.dnsdist/dnscrypt.py b/regression-tests.dnsdist/dnscrypt.py index 3ed8cb5d6..238d973e4 100644 --- a/regression-tests.dnsdist/dnscrypt.py +++ b/regression-tests.dnsdist/dnscrypt.py @@ -6,6 +6,8 @@ import dns import dns.message import libnacl import libnacl.utils +import binascii + class DNSCryptResolverCertificate(object): DNSCRYPT_CERT_MAGIC = '\x44\x4e\x53\x43' @@ -65,7 +67,7 @@ class DNSCryptClient(object): def __init__(self, providerName, providerFingerprint, resolverAddress, resolverPort=443, timeout=2): self._providerName = providerName - self._providerFingerprint = providerFingerprint.lower().replace(':', '').decode('hex') + self._providerFingerprint = binascii.unhexlify(providerFingerprint.lower().replace(':', '')) self._resolverAddress = resolverAddress self._resolverPort = resolverPort self._resolverCertificates = [] diff --git a/regression-tests.dnsdist/dnsdisttests.py b/regression-tests.dnsdist/dnsdisttests.py index eaea70b59..f565841d6 100644 --- a/regression-tests.dnsdist/dnsdisttests.py +++ b/regression-tests.dnsdist/dnsdisttests.py @@ -1,7 +1,6 @@ #!/usr/bin/env python2 import copy -import Queue import os import socket import ssl @@ -17,6 +16,15 @@ import dns.message import libnacl import libnacl.utils +# Python2/3 compatibility hacks +if sys.version_info[0] == 2: + from Queue import Queue + range = xrange +else: + from queue import Queue + range = range # allow re-export of the builtin name + + class DNSDistTest(unittest.TestCase): """ Set up a dnsdist instance and responder threads. @@ -29,8 +37,8 @@ class DNSDistTest(unittest.TestCase): _dnsDistPort = 5340 _dnsDistListeningAddr = "127.0.0.1" _testServerPort = 5350 - _toResponderQueue = Queue.Queue() - _fromResponderQueue = Queue.Queue() + _toResponderQueue = Queue() + _fromResponderQueue = Queue() _queueTimeout = 1 _dnsdistStartupDelay = 2.0 _dnsdist = None @@ -396,6 +404,7 @@ class DNSDistTest(unittest.TestCase): @classmethod def _encryptConsole(cls, command, nonce): + command = command.encode('UTF-8') if cls._consoleKey is None: return command return libnacl.crypto_secretbox(command, nonce, cls._consoleKey) @@ -403,8 +412,10 @@ class DNSDistTest(unittest.TestCase): @classmethod def _decryptConsole(cls, command, nonce): if cls._consoleKey is None: - return command - return libnacl.crypto_secretbox_open(command, nonce, cls._consoleKey) + result = command + else: + result = libnacl.crypto_secretbox_open(command, nonce, cls._consoleKey) + return result.decode('UTF-8') @classmethod def sendConsoleCommand(cls, command, timeout=1.0): @@ -421,7 +432,7 @@ class DNSDistTest(unittest.TestCase): print("Received a nonce of size %d, expecting %d, console command will not be sent!" % (len(theirNonce), len(ourNonce))) return None - halfNonceSize = len(ourNonce) / 2 + halfNonceSize = int(len(ourNonce) / 2) readingNonce = ourNonce[0:halfNonceSize] + theirNonce[halfNonceSize:] writingNonce = theirNonce[0:halfNonceSize] + ourNonce[halfNonceSize:] msg = cls._encryptConsole(command, writingNonce) @@ -435,7 +446,7 @@ class DNSDistTest(unittest.TestCase): def compareOptions(self, a, b): self.assertEquals(len(a), len(b)) - for idx in xrange(len(a)): + for idx in range(len(a)): self.assertEquals(a[idx], b[idx]) def checkMessageNoEDNS(self, expected, received): diff --git a/regression-tests.dnsdist/runtests b/regression-tests.dnsdist/runtests index fdb8dcb47..8802191cc 100755 --- a/regression-tests.dnsdist/runtests +++ b/regression-tests.dnsdist/runtests @@ -1,10 +1,18 @@ #!/usr/bin/env bash set -e -PYTHON=${PYTHON:-python2} - if [ ! -d .venv ]; then - virtualenv -p ${PYTHON} .venv + if [ -z "$PYTHON" ]; then + if [ ! -z "$(python3 --version | egrep '^Python 3.[6789]' 2>/dev/null)" ]; then + # found python3.6 or better + PYTHON=python3 + else + # until we have better Linux distribution detection. + PYTHON=python2 + fi + fi + + virtualenv -p ${PYTHON} .venv fi . .venv/bin/activate python -V @@ -13,7 +21,7 @@ protoc -I=../pdns/ --python_out=. ../pdns/dnsmessage.proto protoc -I=../pdns/ --python_out=. ../pdns/dnstap.proto if [ -z "${DNSDISTBIN}" ]; then - DNSDISTBIN=$(ls ../pdns/dnsdistdist/dnsdist-*/dnsdist) + DNSDISTBIN=$(ls ../pdns/dnsdistdist/dnsdist-*/dnsdist) fi export DNSDISTBIN diff --git a/regression-tests.dnsdist/test_API.py b/regression-tests.dnsdist/test_API.py index e042ad546..5ceb94628 100644 --- a/regression-tests.dnsdist/test_API.py +++ b/regression-tests.dnsdist/test_API.py @@ -355,7 +355,7 @@ class TestAPIWritable(DNSDistTest): configFile = self._APIWriteDir + '/' + 'acl.conf' self.assertTrue(os.path.isfile(configFile)) fileContent = None - with file(configFile) as f: + with open(configFile, 'rt') as f: fileContent = f.read() self.assertEquals(fileContent, """-- Generated by the REST API, DO NOT EDIT diff --git a/regression-tests.dnsdist/test_Advanced.py b/regression-tests.dnsdist/test_Advanced.py index bab9e7291..6f2c3f838 100644 --- a/regression-tests.dnsdist/test_Advanced.py +++ b/regression-tests.dnsdist/test_Advanced.py @@ -1325,7 +1325,7 @@ class TestAdvancedLuaTruncated(DNSDistTest): class TestStatNodeRespRingSince(DNSDistTest): _consoleKey = DNSDistTest.generateConsoleKey() - _consoleKeyB64 = base64.b64encode(_consoleKey) + _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') _config_params = ['_consoleKeyB64', '_consolePort', '_testServerPort'] _config_template = """ setKey("%s") @@ -1362,7 +1362,7 @@ class TestStatNodeRespRingSince(DNSDistTest): self.sendConsoleCommand("nodesSeen = {}") self.sendConsoleCommand("statNodeRespRing(visitor)") nodes = self.sendConsoleCommand("str = '' for key,value in pairs(nodesSeen) do str = str..value..\"\\n\" end return str") - nodes = string.strip(nodes, "\n") + nodes = nodes.strip("\n") self.assertEquals(nodes, """statnodesince.advanced.tests.powerdns.com. advanced.tests.powerdns.com. tests.powerdns.com. @@ -1372,7 +1372,7 @@ com.""") self.sendConsoleCommand("nodesSeen = {}") self.sendConsoleCommand("statNodeRespRing(visitor, 0)") nodes = self.sendConsoleCommand("str = '' for key,value in pairs(nodesSeen) do str = str..value..\"\\n\" end return str") - nodes = string.strip(nodes, "\n") + nodes = nodes.strip("\n") self.assertEquals(nodes, """statnodesince.advanced.tests.powerdns.com. advanced.tests.powerdns.com. tests.powerdns.com. @@ -1384,7 +1384,7 @@ com.""") self.sendConsoleCommand("nodesSeen = {}") self.sendConsoleCommand("statNodeRespRing(visitor)") nodes = self.sendConsoleCommand("str = '' for key,value in pairs(nodesSeen) do str = str..value..\"\\n\" end return str") - nodes = string.strip(nodes, "\n") + nodes = nodes.strip("\n") self.assertEquals(nodes, """statnodesince.advanced.tests.powerdns.com. advanced.tests.powerdns.com. tests.powerdns.com. @@ -1394,13 +1394,13 @@ com.""") self.sendConsoleCommand("nodesSeen = {}") self.sendConsoleCommand("statNodeRespRing(visitor, 5)") nodes = self.sendConsoleCommand("str = '' for key,value in pairs(nodesSeen) do str = str..value..\"\\n\" end return str") - nodes = string.strip(nodes, "\n") + nodes = nodes.strip("\n") self.assertEquals(nodes, """""") self.sendConsoleCommand("nodesSeen = {}") self.sendConsoleCommand("statNodeRespRing(visitor, 10)") nodes = self.sendConsoleCommand("str = '' for key,value in pairs(nodesSeen) do str = str..value..\"\\n\" end return str") - nodes = string.strip(nodes, "\n") + nodes = nodes.strip("\n") self.assertEquals(nodes, """statnodesince.advanced.tests.powerdns.com. advanced.tests.powerdns.com. tests.powerdns.com. diff --git a/regression-tests.dnsdist/test_Caching.py b/regression-tests.dnsdist/test_Caching.py index fab737279..c11c10d74 100644 --- a/regression-tests.dnsdist/test_Caching.py +++ b/regression-tests.dnsdist/test_Caching.py @@ -531,7 +531,7 @@ class TestCachingCacheFull(DNSDistTest): class TestCachingNoStale(DNSDistTest): _consoleKey = DNSDistTest.generateConsoleKey() - _consoleKeyB64 = base64.b64encode(_consoleKey) + _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') _config_params = ['_consoleKeyB64', '_consolePort', '_testServerPort'] _config_template = """ pc = newPacketCache(100, 86400, 1) @@ -581,7 +581,7 @@ class TestCachingNoStale(DNSDistTest): class TestCachingStale(DNSDistTest): _consoleKey = DNSDistTest.generateConsoleKey() - _consoleKeyB64 = base64.b64encode(_consoleKey) + _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') _staleCacheTTL = 60 _config_params = ['_staleCacheTTL', '_consoleKeyB64', '_consolePort', '_testServerPort'] _config_template = """ @@ -642,7 +642,7 @@ class TestCachingStale(DNSDistTest): class TestCacheManagement(DNSDistTest): _consoleKey = DNSDistTest.generateConsoleKey() - _consoleKeyB64 = base64.b64encode(_consoleKey) + _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') _config_params = ['_consoleKeyB64', '_consolePort', '_testServerPort'] _config_template = """ pc = newPacketCache(100, 86400, 1) diff --git a/regression-tests.dnsdist/test_Carbon.py b/regression-tests.dnsdist/test_Carbon.py index 09b13daf3..a06e90aba 100644 --- a/regression-tests.dnsdist/test_Carbon.py +++ b/regression-tests.dnsdist/test_Carbon.py @@ -1,10 +1,9 @@ #!/usr/bin/env python -import Queue import threading import socket import sys import time -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, Queue class TestCarbon(DNSDistTest): @@ -12,8 +11,8 @@ class TestCarbon(DNSDistTest): _carbonServer1Name = "carbonname1" _carbonServer2Port = 8001 _carbonServer2Name = "carbonname2" - _carbonQueue1 = Queue.Queue() - _carbonQueue2 = Queue.Queue() + _carbonQueue1 = Queue() + _carbonQueue2 = Queue() _carbonInterval = 2 _carbonCounters = {} _config_params = ['_carbonServer1Port', '_carbonServer1Name', '_carbonInterval', '_carbonServer2Port', '_carbonServer2Name', '_carbonInterval'] @@ -36,7 +35,7 @@ class TestCarbon(DNSDistTest): while True: (conn, _) = sock.accept() conn.settimeout(2.0) - lines = "" + lines = b'' while True: data = conn.recv(4096) if not data: @@ -82,10 +81,10 @@ class TestCarbon(DNSDistTest): self.assertTrue(data1) self.assertTrue(len(data1.splitlines()) > 1) - expectedStart = "dnsdist." + self._carbonServer1Name + ".main." + expectedStart = b"dnsdist.%s.main." % self._carbonServer1Name.encode('UTF-8') for line in data1.splitlines(): self.assertTrue(line.startswith(expectedStart)) - parts = line.split(' ') + parts = line.split(b' ') self.assertEquals(len(parts), 3) self.assertTrue(parts[1].isdigit()) self.assertTrue(parts[2].isdigit()) @@ -93,10 +92,10 @@ class TestCarbon(DNSDistTest): self.assertTrue(data2) self.assertTrue(len(data2.splitlines()) > 1) - expectedStart = "dnsdist." + self._carbonServer2Name + ".main." + expectedStart = b"dnsdist.%s.main." % self._carbonServer2Name.encode('UTF-8') for line in data2.splitlines(): self.assertTrue(line.startswith(expectedStart)) - parts = line.split(' ') + parts = line.split(b' ') self.assertEquals(len(parts), 3) self.assertTrue(parts[1].isdigit()) self.assertTrue(parts[2].isdigit()) diff --git a/regression-tests.dnsdist/test_DNSCrypt.py b/regression-tests.dnsdist/test_DNSCrypt.py index d134264f7..f5f45d41c 100644 --- a/regression-tests.dnsdist/test_DNSCrypt.py +++ b/regression-tests.dnsdist/test_DNSCrypt.py @@ -18,7 +18,7 @@ class DNSCryptTest(DNSDistTest): _dnsDistPortDNSCrypt = 8443 _consoleKey = DNSDistTest.generateConsoleKey() - _consoleKeyB64 = base64.b64encode(_consoleKey) + _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') _providerFingerprint = 'E1D7:2108:9A59:BF8D:F101:16FA:ED5E:EA6A:9F6C:C78F:7F91:AF6B:027E:62F4:69C3:B1AA' _providerName = "2.provider.name" diff --git a/regression-tests.dnsdist/test_Dnstap.py b/regression-tests.dnsdist/test_Dnstap.py index 8c2fd12dc..78e71bffc 100644 --- a/regression-tests.dnsdist/test_Dnstap.py +++ b/regression-tests.dnsdist/test_Dnstap.py @@ -1,12 +1,11 @@ #!/usr/bin/env python -import Queue import threading import os import socket import struct import sys import time -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, Queue import dns import dnstap_pb2 @@ -21,9 +20,9 @@ FSTRM_CONTROL_FINISH = 0x05 def checkDnstapBase(testinstance, dnstap, protocol, initiator): testinstance.assertTrue(dnstap) testinstance.assertTrue(dnstap.HasField('identity')) - testinstance.assertEqual(dnstap.identity, 'a.server') + testinstance.assertEqual(dnstap.identity, b'a.server') testinstance.assertTrue(dnstap.HasField('version')) - testinstance.assertIn('dnsdist ', dnstap.version) + testinstance.assertIn(b'dnsdist ', dnstap.version) testinstance.assertTrue(dnstap.HasField('type')) testinstance.assertEqual(dnstap.type, dnstap.MESSAGE) testinstance.assertTrue(dnstap.HasField('message')) @@ -80,7 +79,7 @@ def checkDnstapResponse(testinstance, dnstap, protocol, response, initiator='127 class TestDnstapOverRemoteLogger(DNSDistTest): _remoteLoggerServerPort = 4243 - _remoteLoggerQueue = Queue.Queue() + _remoteLoggerQueue = Queue() _remoteLoggerCounter = 0 _config_params = ['_testServerPort', '_remoteLoggerServerPort'] _config_template = """ @@ -266,12 +265,12 @@ class TestDnstapOverRemoteLogger(DNSDistTest): # check the dnstap message corresponding to the UDP query dnstap = self.getFirstDnstap() checkDnstapQuery(self, dnstap, dnstap_pb2.UDP, query) - checkDnstapExtra(self, dnstap, "Type,Query") + checkDnstapExtra(self, dnstap, b"Type,Query") # check the dnstap message corresponding to the UDP response dnstap = self.getFirstDnstap() checkDnstapResponse(self, dnstap, dnstap_pb2.UDP, response) - checkDnstapExtra(self, dnstap, "Type,Response") + checkDnstapExtra(self, dnstap, b"Type,Response") (receivedQuery, receivedResponse) = self.sendTCPQuery(query, response) self.assertTrue(receivedQuery) @@ -286,12 +285,12 @@ class TestDnstapOverRemoteLogger(DNSDistTest): # check the dnstap message corresponding to the TCP query dnstap = self.getFirstDnstap() checkDnstapQuery(self, dnstap, dnstap_pb2.TCP, query) - checkDnstapExtra(self, dnstap, "Type,Query") + checkDnstapExtra(self, dnstap, b"Type,Query") # check the dnstap message corresponding to the TCP response dnstap = self.getFirstDnstap() checkDnstapResponse(self, dnstap, dnstap_pb2.TCP, response) - checkDnstapExtra(self, dnstap, "Type,Response") + checkDnstapExtra(self, dnstap, b"Type,Response") def fstrm_get_control_frame_type(data): @@ -302,7 +301,7 @@ def fstrm_get_control_frame_type(data): def fstrm_make_control_frame_reply(cft, data): if cft == FSTRM_CONTROL_READY: # Reply with ACCEPT frame and content-type - contenttype = 'protobuf:dnstap.Dnstap' + contenttype = b'protobuf:dnstap.Dnstap' frame = struct.pack('!LLL', FSTRM_CONTROL_ACCEPT, 1, len(contenttype)) + contenttype buf = struct.pack("!LL", 0, len(frame)) + frame @@ -349,7 +348,7 @@ def fstrm_handle_bidir_connection(conn, on_data): class TestDnstapOverFrameStreamUnixLogger(DNSDistTest): _fstrmLoggerAddress = '/tmp/fslutest.sock' - _fstrmLoggerQueue = Queue.Queue() + _fstrmLoggerQueue = Queue() _fstrmLoggerCounter = 0 _config_params = ['_testServerPort', '_fstrmLoggerAddress'] _config_template = """ @@ -435,7 +434,7 @@ class TestDnstapOverFrameStreamUnixLogger(DNSDistTest): class TestDnstapOverFrameStreamTcpLogger(DNSDistTest): _fstrmLoggerPort = 4000 - _fstrmLoggerQueue = Queue.Queue() + _fstrmLoggerQueue = Queue() _fstrmLoggerCounter = 0 _config_params = ['_testServerPort', '_fstrmLoggerPort'] _config_template = """ diff --git a/regression-tests.dnsdist/test_DynBlocks.py b/regression-tests.dnsdist/test_DynBlocks.py index 430d87e9b..83ef65db4 100644 --- a/regression-tests.dnsdist/test_DynBlocks.py +++ b/regression-tests.dnsdist/test_DynBlocks.py @@ -2,7 +2,7 @@ import base64 import time import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, range class TestDynBlockQPS(DNSDistTest): @@ -33,7 +33,7 @@ class TestDynBlockQPS(DNSDistTest): allowed = 0 sent = 0 - for _ in xrange((self._dynBlockQPS * self._dynBlockPeriod) + 1): + for _ in range((self._dynBlockQPS * self._dynBlockPeriod) + 1): (receivedQuery, receivedResponse) = self.sendUDPQuery(query, response) sent = sent + 1 if receivedQuery: @@ -70,7 +70,7 @@ class TestDynBlockQPS(DNSDistTest): # again, over TCP this time allowed = 0 sent = 0 - for _ in xrange((self._dynBlockQPS * self._dynBlockPeriod) + 1): + for _ in range((self._dynBlockQPS * self._dynBlockPeriod) + 1): (receivedQuery, receivedResponse) = self.sendTCPQuery(query, response) sent = sent + 1 if receivedQuery: @@ -136,7 +136,7 @@ class TestDynBlockQPSRefused(DNSDistTest): allowed = 0 sent = 0 - for _ in xrange((self._dynBlockQPS * self._dynBlockPeriod) + 1): + for _ in range((self._dynBlockQPS * self._dynBlockPeriod) + 1): (receivedQuery, receivedResponse) = self.sendUDPQuery(query, response) sent = sent + 1 if receivedQuery: @@ -174,7 +174,7 @@ class TestDynBlockQPSRefused(DNSDistTest): allowed = 0 sent = 0 # again, over TCP this time - for _ in xrange((self._dynBlockQPS * self._dynBlockPeriod) + 1): + for _ in range((self._dynBlockQPS * self._dynBlockPeriod) + 1): (receivedQuery, receivedResponse) = self.sendTCPQuery(query, response) sent = sent + 1 if receivedQuery: @@ -241,7 +241,7 @@ class TestDynBlockQPSActionRefused(DNSDistTest): allowed = 0 sent = 0 - for _ in xrange((self._dynBlockQPS * self._dynBlockPeriod) + 1): + for _ in range((self._dynBlockQPS * self._dynBlockPeriod) + 1): (receivedQuery, receivedResponse) = self.sendUDPQuery(query, response) sent = sent + 1 if receivedQuery: @@ -279,7 +279,7 @@ class TestDynBlockQPSActionRefused(DNSDistTest): allowed = 0 sent = 0 # again, over TCP this time - for _ in xrange((self._dynBlockQPS * self._dynBlockPeriod) + 1): + for _ in range((self._dynBlockQPS * self._dynBlockPeriod) + 1): (receivedQuery, receivedResponse) = self.sendTCPQuery(query, response) sent = sent + 1 if receivedQuery: @@ -346,7 +346,7 @@ class TestDynBlockQPSActionTruncated(DNSDistTest): allowed = 0 sent = 0 - for _ in xrange((self._dynBlockQPS * self._dynBlockPeriod) + 1): + for _ in range((self._dynBlockQPS * self._dynBlockPeriod) + 1): (receivedQuery, receivedResponse) = self.sendUDPQuery(query, response) sent = sent + 1 if receivedQuery: @@ -390,7 +390,7 @@ class TestDynBlockQPSActionTruncated(DNSDistTest): allowed = 0 sent = 0 # again, over TCP this time, we should never get truncated! - for _ in xrange((self._dynBlockQPS * self._dynBlockPeriod) + 1): + for _ in range((self._dynBlockQPS * self._dynBlockPeriod) + 1): (receivedQuery, receivedResponse) = self.sendTCPQuery(query, response) sent = sent + 1 self.assertEquals(query, receivedQuery) @@ -430,7 +430,7 @@ class TestDynBlockServFails(DNSDistTest): servfailResponse.set_rcode(dns.rcode.SERVFAIL) # start with normal responses - for _ in xrange((self._dynBlockQPS * self._dynBlockPeriod) + 1): + for _ in range((self._dynBlockQPS * self._dynBlockPeriod) + 1): (receivedQuery, receivedResponse) = self.sendUDPQuery(query, response) receivedQuery.id = query.id self.assertEquals(query, receivedQuery) @@ -446,7 +446,7 @@ class TestDynBlockServFails(DNSDistTest): # now with ServFail! sent = 0 allowed = 0 - for _ in xrange((self._dynBlockQPS * self._dynBlockPeriod) + 1): + for _ in range((self._dynBlockQPS * self._dynBlockPeriod) + 1): (receivedQuery, receivedResponse) = self.sendUDPQuery(query, servfailResponse) sent = sent + 1 if receivedQuery: @@ -482,7 +482,7 @@ class TestDynBlockServFails(DNSDistTest): # again, over TCP this time # start with normal responses - for _ in xrange((self._dynBlockQPS * self._dynBlockPeriod) + 1): + for _ in range((self._dynBlockQPS * self._dynBlockPeriod) + 1): (receivedQuery, receivedResponse) = self.sendUDPQuery(query, response) receivedQuery.id = query.id self.assertEquals(query, receivedQuery) @@ -498,7 +498,7 @@ class TestDynBlockServFails(DNSDistTest): # now with ServFail! sent = 0 allowed = 0 - for _ in xrange((self._dynBlockQPS * self._dynBlockPeriod) + 1): + for _ in range((self._dynBlockQPS * self._dynBlockPeriod) + 1): (receivedQuery, receivedResponse) = self.sendTCPQuery(query, servfailResponse) sent = sent + 1 if receivedQuery: @@ -538,7 +538,7 @@ class TestDynBlockResponseBytes(DNSDistTest): _dynBlockPeriod = 2 _dynBlockDuration = 5 _consoleKey = DNSDistTest.generateConsoleKey() - _consoleKeyB64 = base64.b64encode(_consoleKey) + _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') _config_params = ['_consoleKeyB64', '_consolePort', '_dynBlockBytesPerSecond', '_dynBlockPeriod', '_dynBlockDuration', '_testServerPort'] _config_template = """ setKey("%s") @@ -572,7 +572,7 @@ class TestDynBlockResponseBytes(DNSDistTest): print(time.time()) - for _ in xrange(self._dynBlockBytesPerSecond * 5 / len(response.to_wire())): + for _ in range(int(self._dynBlockBytesPerSecond * 5 / len(response.to_wire()))): (receivedQuery, receivedResponse) = self.sendUDPQuery(query, response) sent = sent + len(response.to_wire()) if receivedQuery: @@ -633,7 +633,7 @@ class TestDynBlockResponseBytes(DNSDistTest): # again, over TCP this time allowed = 0 sent = 0 - for _ in xrange(self._dynBlockBytesPerSecond * 5 / len(response.to_wire())): + for _ in range(int(self._dynBlockBytesPerSecond * 5 / len(response.to_wire()))): (receivedQuery, receivedResponse) = self.sendTCPQuery(query, response) sent = sent + len(response.to_wire()) if receivedQuery: diff --git a/regression-tests.dnsdist/test_EdnsClientSubnet.py b/regression-tests.dnsdist/test_EdnsClientSubnet.py index d2e0b9b06..1b7f4d090 100644 --- a/regression-tests.dnsdist/test_EdnsClientSubnet.py +++ b/regression-tests.dnsdist/test_EdnsClientSubnet.py @@ -225,7 +225,7 @@ class TestEdnsClientSubnetNoOverride(DNSDistTest): query = dns.message.make_query(name, 'A', 'IN', use_edns=True, payload=4096) expectedQuery = dns.message.make_query(name, 'A', 'IN', use_edns=True, payload=4096, options=[ecso]) response = dns.message.make_response(expectedQuery) - ecoResponse = cookiesoption.CookiesOption('deadbeef', 'deadbeef') + ecoResponse = cookiesoption.CookiesOption(b'deadbeef', b'deadbeef') ecsoResponse = clientsubnetoption.ClientSubnetOption('127.0.0.1', 24, scope=24) response.use_edns(edns=True, payload=4096, options=[ecoResponse, ecsoResponse]) expectedResponse = dns.message.make_response(query) @@ -268,7 +268,7 @@ class TestEdnsClientSubnetNoOverride(DNSDistTest): query = dns.message.make_query(name, 'A', 'IN', use_edns=True, payload=4096) expectedQuery = dns.message.make_query(name, 'A', 'IN', use_edns=True, payload=4096, options=[ecso]) response = dns.message.make_response(expectedQuery) - ecoResponse = cookiesoption.CookiesOption('deadbeef', 'deadbeef') + ecoResponse = cookiesoption.CookiesOption(b'deadbeef', b'deadbeef') ecsoResponse = clientsubnetoption.ClientSubnetOption('127.0.0.1', 24, scope=24) response.use_edns(edns=True, payload=4096, options=[ecsoResponse, ecoResponse]) expectedResponse = dns.message.make_response(query) @@ -311,7 +311,7 @@ class TestEdnsClientSubnetNoOverride(DNSDistTest): query = dns.message.make_query(name, 'A', 'IN', use_edns=True, payload=4096) expectedQuery = dns.message.make_query(name, 'A', 'IN', use_edns=True, payload=4096, options=[ecso]) response = dns.message.make_response(expectedQuery) - ecoResponse = cookiesoption.CookiesOption('deadbeef', 'deadbeef') + ecoResponse = cookiesoption.CookiesOption(b'deadbeef', b'deadbeef') ecsoResponse = clientsubnetoption.ClientSubnetOption('127.0.0.1', 24, scope=24) response.use_edns(edns=True, payload=4096, options=[ecoResponse, ecsoResponse, ecoResponse]) expectedResponse = dns.message.make_response(query) diff --git a/regression-tests.dnsdist/test_Protobuf.py b/regression-tests.dnsdist/test_Protobuf.py index 8eb55360e..e24fac794 100644 --- a/regression-tests.dnsdist/test_Protobuf.py +++ b/regression-tests.dnsdist/test_Protobuf.py @@ -1,11 +1,10 @@ #!/usr/bin/env python -import Queue import threading import socket import struct import sys import time -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, Queue import dns import dnsmessage_pb2 @@ -13,7 +12,7 @@ import dnsmessage_pb2 class TestProtobuf(DNSDistTest): _protobufServerPort = 4242 - _protobufQueue = Queue.Queue() + _protobufQueue = Queue() _protobufCounter = 0 _config_params = ['_testServerPort', '_protobufServerPort'] _config_template = """ diff --git a/regression-tests.dnsdist/test_SNMP.py b/regression-tests.dnsdist/test_SNMP.py index 5e5042e35..f177a6f9f 100644 --- a/regression-tests.dnsdist/test_SNMP.py +++ b/regression-tests.dnsdist/test_SNMP.py @@ -22,7 +22,7 @@ class TestSNMP(DNSDistTest): """ def _checkStatsValues(self, results, queriesCountersValue): - for i in range(1, 5) + range(6, 20) + range(24, 35) + [ 35 ] : + for i in list(range(1, 5)) + list(range(6, 20)) + list(range(24, 35)) + [ 35 ] : oid = self._snmpOID + '.1.' + str(i) + '.0' self.assertTrue(oid in results) self.assertTrue(isinstance(results[oid], Counter64)) @@ -42,7 +42,7 @@ class TestSNMP(DNSDistTest): self.assertEquals(results[oid], queriesCountersValue) # the others counters (except for latency ones) should still be at 0 - for i in range(3, 5) + range(6, 14) + [26, 27, 29, 30, 31, 35, 36]: + for i in [3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 26, 27, 29, 30, 31, 35, 36]: oid = self._snmpOID + '.1.' + str(i) + '.0' self.assertEquals(results[oid], 0) diff --git a/regression-tests.dnsdist/test_TCPKeepAlive.py b/regression-tests.dnsdist/test_TCPKeepAlive.py index 9f0f3fc54..a1672e494 100644 --- a/regression-tests.dnsdist/test_TCPKeepAlive.py +++ b/regression-tests.dnsdist/test_TCPKeepAlive.py @@ -2,7 +2,7 @@ import struct import time import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, range class TestTCPKeepAlive(DNSDistTest): """ @@ -45,7 +45,7 @@ class TestTCPKeepAlive(DNSDistTest): conn = self.openTCPConnection() count = 0 - for idx in xrange(5): + for idx in range(5): try: self.sendTCPQueryOverConnection(conn, query) response = self.recvTCPResponseOverConnection(conn) @@ -84,7 +84,7 @@ class TestTCPKeepAlive(DNSDistTest): conn = self.openTCPConnection() count = 0 - for idx in xrange(5): + for idx in range(5): try: self.sendTCPQueryOverConnection(conn, query) response = self.recvTCPResponseOverConnection(conn) @@ -114,7 +114,7 @@ class TestTCPKeepAlive(DNSDistTest): conn = self.openTCPConnection() count = 0 - for idx in xrange(5): + for idx in range(5): try: self.sendTCPQueryOverConnection(conn, query) response = self.recvTCPResponseOverConnection(conn) @@ -139,7 +139,7 @@ class TestTCPKeepAlive(DNSDistTest): conn = self.openTCPConnection() count = 0 - for idx in xrange(5): + for idx in range(5): try: self.sendTCPQueryOverConnection(conn, query) response = self.recvTCPResponseOverConnection(conn) @@ -163,7 +163,7 @@ class TestTCPKeepAlive(DNSDistTest): conn = self.openTCPConnection() count = 0 - for idx in xrange(5): + for idx in range(5): try: self.sendTCPQueryOverConnection(conn, query) response = self.recvTCPResponseOverConnection(conn) @@ -186,7 +186,7 @@ class TestTCPKeepAlive(DNSDistTest): conn = self.openTCPConnection() count = 0 - for idx in xrange(5): + for idx in range(5): try: self.sendTCPQueryOverConnection(conn, query) response = self.recvTCPResponseOverConnection(conn) @@ -236,7 +236,7 @@ class TestTCPKeepAliveNoDownstreamDrop(DNSDistTest): conn = self.openTCPConnection() count = 0 - for idx in xrange(5): + for idx in range(5): try: self.sendTCPQueryOverConnection(conn, query) response = self.recvTCPResponseOverConnection(conn) diff --git a/regression-tests.dnsdist/test_TCPLimits.py b/regression-tests.dnsdist/test_TCPLimits.py index fb9dc03a6..395ade98c 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, range class TestTCPLimits(DNSDistTest): @@ -28,7 +28,7 @@ class TestTCPLimits(DNSDistTest): conn = self.openTCPConnection() count = 0 - for idx in xrange(self._maxTCPQueriesPerConn): + for idx in range(self._maxTCPQueriesPerConn): try: self.sendTCPQueryOverConnection(conn, query) response = self.recvTCPResponseOverConnection(conn) @@ -62,7 +62,7 @@ class TestTCPLimits(DNSDistTest): query = dns.message.make_query(name, 'A', 'IN') conns = [] - for idx in xrange(self._maxTCPConnsPerClient + 1): + for idx in range(self._maxTCPConnsPerClient + 1): conns.append(self.openTCPConnection()) count = 0 diff --git a/regression-tests.dnsdist/test_TeeAction.py b/regression-tests.dnsdist/test_TeeAction.py index 3d7441028..5adb3819b 100644 --- a/regression-tests.dnsdist/test_TeeAction.py +++ b/regression-tests.dnsdist/test_TeeAction.py @@ -1,18 +1,17 @@ #!/usr/bin/env python import base64 -import Queue import threading import clientsubnetoption import dns -from dnsdisttests import DNSDistTest +from dnsdisttests import DNSDistTest, Queue class TestTeeAction(DNSDistTest): _consoleKey = DNSDistTest.generateConsoleKey() - _consoleKeyB64 = base64.b64encode(_consoleKey) + _consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii') _teeServerPort = 5390 - _toTeeQueue = Queue.Queue() - _fromTeeQueue = Queue.Queue() + _toTeeQueue = Queue() + _fromTeeQueue = Queue() _config_template = """ setKey("%s") controlSocket("127.0.0.1:%s") diff --git a/regression-tests.dnsdist/test_Trailing.py b/regression-tests.dnsdist/test_Trailing.py index f00d47bf8..34b1e1f14 100644 --- a/regression-tests.dnsdist/test_Trailing.py +++ b/regression-tests.dnsdist/test_Trailing.py @@ -42,7 +42,7 @@ class TestTrailing(DNSDistTest): response.answer.append(rrset) raw = query.to_wire() - raw = raw + 'A'* 20 + raw = raw + b'A'* 20 (receivedQuery, receivedResponse) = self.sendUDPQuery(raw, response, rawQuery=True) self.assertTrue(receivedQuery) self.assertTrue(receivedResponse) @@ -66,7 +66,7 @@ class TestTrailing(DNSDistTest): query = dns.message.make_query(name, 'AAAA', 'IN') raw = query.to_wire() - raw = raw + 'A'* 20 + raw = raw + b'A'* 20 (_, receivedResponse) = self.sendUDPQuery(raw, response=None, rawQuery=True) self.assertEquals(receivedResponse, None) -- 2.40.0