name = 'drop.doq.tests.powerdns.com.'
query = dns.message.make_query(name, 'A', 'IN')
try:
- (_, receivedResponse) = self.sendQUICQuery(query, response=None, useQueue=False)
+ (_, receivedResponse) = self.sendQUICQuery(query, response=None, useQueue=False, passExceptions=True)
self.fail()
except StreamResetError as e:
self.assertEqual(e.error, 5);
name = 'no-backend.doq.tests.powerdns.com.'
query = dns.message.make_query(name, 'A', 'IN', use_edns=False)
try:
- (_, receivedResponse) = self.sendQUICQuery(query, response=None, useQueue=False)
+ (_, receivedResponse) = self.sendQUICQuery(query, response=None, useQueue=False, passExceptions=True)
self.fail()
except StreamResetError as e :
self.assertEqual(e.error, 5);
query = dns.message.make_query(name, 'A', 'IN')
dropped = False
try:
- (_, receivedResponse) = self.sendQUICQuery(query, response=None, useQueue=False)
+ (_, receivedResponse) = self.sendQUICQuery(query, response=None, useQueue=False, passExceptions=True)
self.fail()
except StreamResetError as e:
self.assertEqual(e.error, 5);
for method in ("sendUDPQuery", "sendTCPQuery", "sendDOTQueryWrapper", "sendDOHWithNGHTTP2QueryWrapper", "sendDOHWithH2OQueryWrapper", "sendDOQQueryWrapper"):
sender = getattr(self, method)
try:
- (receivedQuery, receivedResponse) = sender(query, response)
+ if method in ['sendDOQQueryWrapper']:
+ (receivedQuery, receivedResponse) = sender(query, response, passExceptions=True)
+ else:
+ (receivedQuery, receivedResponse) = sender(query, response)
except doqclient.StreamResetError:
if not self._fromResponderQueue.empty():
receivedQuery = self._fromResponderQueue.get(True, 1.0)
from dnsdisttests import pickAvailablePort
from quictests import QUICTests, QUICACLTests, QUICGetLocalAddressOnAnyBindTests, QUICXFRTests
-class TestDOH3(QUICTests, DNSDistTest):
+class DOH3Common(object):
+ def getQUICConnection(self):
+ return self.getDOQConnection(self._doqServerPort, self._caCert)
+
+ def sendQUICQuery(self, query, response=None, useQueue=True, connection=None, passExceptions=False):
+ return self.sendDOH3Query(self._doqServerPort, self._dohBaseURL, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection, passExceptions=passExceptions)
+
+class TestDOH3(DOH3Common, QUICTests, DNSDistTest):
_serverKey = 'server.key'
_serverCert = 'server.chain'
_serverName = 'tls.tests.dnsdist.org'
_config_params = ['_testServerPort', '_serverName', '_doqServerPort', '_doqServerPort','_serverCert', '_serverKey']
_verboseMode = True
- def getQUICConnection(self):
- return self.getDOQConnection(self._doqServerPort, self._caCert)
-
- def sendQUICQuery(self, query, response=None, useQueue=True, connection=None):
- return self.sendDOH3Query(self._doqServerPort, self._dohBaseURL, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection)
-
def testHeaderRule(self):
"""
DOH3: HeaderRule
self.assertIn(b'content-type', receivedHeaders)
self.assertEqual(receivedHeaders[b'content-type'], b'text/plain')
-class TestDOH3Yaml(QUICTests, DNSDistTest):
+class TestDOH3Yaml(DOH3Common, QUICTests, DNSDistTest):
_serverKey = 'server.key'
_serverCert = 'server.chain'
_serverName = 'tls.tests.dnsdist.org'
"""
_yaml_config_params = ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey']
- def getQUICConnection(self):
- return self.getDOQConnection(self._doqServerPort, self._caCert)
-
- def sendQUICQuery(self, query, response=None, useQueue=True, connection=None):
- return self.sendDOH3Query(self._doqServerPort, self._dohBaseURL, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection)
-
-class TestDOH3ACL(QUICACLTests, DNSDistTest):
+class TestDOH3ACL(DOH3Common, QUICACLTests, DNSDistTest):
_serverKey = 'server.key'
_serverCert = 'server.chain'
_serverName = 'tls.tests.dnsdist.org'
_config_params = ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey']
_verboseMode = True
- def getQUICConnection(self):
- return self.getDOQConnection(self._doqServerPort, self._caCert)
-
- def sendQUICQuery(self, query, response=None, useQueue=True, connection=None):
- return self.sendDOH3Query(self._doqServerPort, self._dohBaseURL, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection)
-
-class TestDOH3Specifics(DNSDistTest):
+class TestDOH3Specifics(DOH3Common, DNSDistTest):
_serverKey = 'server.key'
_serverCert = 'server.chain'
_serverName = 'tls.tests.dnsdist.org'
self.assertEqual(expectedQuery, receivedQuery)
self.assertEqual(receivedResponse, response)
-class TestDOH3GetLocalAddressOnAnyBind(QUICGetLocalAddressOnAnyBindTests, DNSDistTest):
+class TestDOH3GetLocalAddressOnAnyBind(DOH3Common, QUICGetLocalAddressOnAnyBindTests, DNSDistTest):
_serverKey = 'server.key'
_serverCert = 'server.chain'
_serverName = 'tls.tests.dnsdist.org'
_acl = ['127.0.0.1/32', '::1/128']
_skipListeningOnCL = True
- def getQUICConnection(self):
- return self.getDOQConnection(self._doqServerPort, self._caCert)
-
- def sendQUICQuery(self, query, response=None, useQueue=True, connection=None):
- return self.sendDOH3Query(self._doqServerPort, self._dohBaseURL, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection)
-
-class TestDOH3XFR(QUICXFRTests, DNSDistTest):
+class TestDOH3XFR(DOH3Common, QUICXFRTests, DNSDistTest):
_serverKey = 'server.key'
_serverCert = 'server.chain'
_serverName = 'tls.tests.dnsdist.org'
"""
_config_params = ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey']
_verboseMode = True
-
- def getQUICConnection(self):
- return self.getDOQConnection(self._doqServerPort, self._caCert)
-
- def sendQUICQuery(self, query, response=None, useQueue=True, connection=None):
- return self.sendDOH3Query(self._doqServerPort, self._dohBaseURL, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection)
except doqclient.StreamResetError as e :
self.assertEqual(e.error, 2);
-class TestDOQ(QUICTests, DNSDistTest):
+class DOQCommon(object):
+ def getQUICConnection(self):
+ return self.getDOQConnection(self._doqServerPort, self._caCert)
+
+ def sendQUICQuery(self, query, response=None, useQueue=True, connection=None, passExceptions=False):
+ return self.sendDOQQuery(self._doqServerPort, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection, passExceptions=passExceptions)
+
+class TestDOQ(DOQCommon, QUICTests, DNSDistTest):
_serverKey = 'server.key'
_serverCert = 'server.chain'
_serverName = 'tls.tests.dnsdist.org'
"""
_config_params = ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey']
- def getQUICConnection(self):
- return self.getDOQConnection(self._doqServerPort, self._caCert)
-
- def sendQUICQuery(self, query, response=None, useQueue=True, connection=None):
- return self.sendDOQQuery(self._doqServerPort, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection)
-
-class TestDOQYaml(QUICTests, DNSDistTest):
+class TestDOQYaml(DOQCommon, QUICTests, DNSDistTest):
_serverKey = 'server.key'
_serverCert = 'server.chain'
_serverName = 'tls.tests.dnsdist.org'
"""
_yaml_config_params = ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey']
- def getQUICConnection(self):
- return self.getDOQConnection(self._doqServerPort, self._caCert)
-
- def sendQUICQuery(self, query, response=None, useQueue=True, connection=None):
- return self.sendDOQQuery(self._doqServerPort, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection)
-
-class TestDOQWithCache(QUICWithCacheTests, DNSDistTest):
+class TestDOQWithCache(DOQCommon, QUICWithCacheTests, DNSDistTest):
_serverKey = 'server.key'
_serverCert = 'server.chain'
_serverName = 'tls.tests.dnsdist.org'
"""
_config_params = ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey']
- def getQUICConnection(self):
- return self.getDOQConnection(self._doqServerPort, self._caCert)
-
- def sendQUICQuery(self, query, response=None, useQueue=True, connection=None):
- return self.sendDOQQuery(self._doqServerPort, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection)
-
-class TestDOQWithACL(QUICACLTests, DNSDistTest):
+class TestDOQWithACL(DOQCommon, QUICACLTests, DNSDistTest):
_serverKey = 'server.key'
_serverCert = 'server.chain'
_serverName = 'tls.tests.dnsdist.org'
"""
_config_params = ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey']
- def getQUICConnection(self):
- return self.getDOQConnection(self._doqServerPort, self._caCert)
-
- def sendQUICQuery(self, query, response=None, useQueue=True, connection=None):
- return self.sendDOQQuery(self._doqServerPort, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection)
-
-class TestDOQXFR(QUICXFRTests, DNSDistTest):
+class TestDOQXFR(DOQCommon, QUICXFRTests, DNSDistTest):
_serverKey = 'server.key'
_serverCert = 'server.chain'
_serverName = 'tls.tests.dnsdist.org'
_config_params = ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey']
_verboseMode = True
- def getQUICConnection(self):
- return self.getDOQConnection(self._doqServerPort, self._caCert)
-
- def sendQUICQuery(self, query, response=None, useQueue=True, connection=None):
- return self.sendDOQQuery(self._doqServerPort, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection)
-
class TestDOQCertificateReloading(DNSDistTest):
_consoleKey = DNSDistTest.generateConsoleKey()
_consoleKeyB64 = base64.b64encode(_consoleKey).decode('ascii')
# check that the serial is different
self.assertNotEqual(serial, secondSerial)
-class TestDOQGetLocalAddressOnAnyBind(QUICGetLocalAddressOnAnyBindTests, DNSDistTest):
+class TestDOQGetLocalAddressOnAnyBind(DOQCommon, QUICGetLocalAddressOnAnyBindTests, DNSDistTest):
_serverKey = 'server.key'
_serverCert = 'server.chain'
_serverName = 'tls.tests.dnsdist.org'
_config_params = ['_testServerPort', '_doqServerPort','_serverCert', '_serverKey', '_doqServerPort','_serverCert', '_serverKey']
_acl = ['127.0.0.1/32', '::1/128']
_skipListeningOnCL = True
-
- def getQUICConnection(self):
- return self.getDOQConnection(self._doqServerPort, self._caCert)
-
- def sendQUICQuery(self, query, response=None, useQueue=True, connection=None):
- return self.sendDOQQuery(self._doqServerPort, query, response=response, caFile=self._caCert, useQueue=useQueue, serverName=self._serverName, connection=connection)