From 6db567d154dc2515c63425fd0da34133baec023a Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Wed, 3 Apr 2019 17:29:39 +0200 Subject: [PATCH] dnsdist: Add a few more regression tests for DNS over TLS --- regression-tests.dnsdist/test_TLS.py | 52 ++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/regression-tests.dnsdist/test_TLS.py b/regression-tests.dnsdist/test_TLS.py index 68aaa83e6d..b31c6c2f9b 100644 --- a/regression-tests.dnsdist/test_TLS.py +++ b/regression-tests.dnsdist/test_TLS.py @@ -38,3 +38,55 @@ class TestTLS(DNSDistTest): receivedQuery.id = query.id self.assertEquals(query, receivedQuery) self.assertEquals(response, receivedResponse) + + def testTLKA(self): + """ + TLS: Several queries over the same connection + """ + name = 'ka.tls.tests.powerdns.com.' + query = dns.message.make_query(name, 'A', 'IN', use_edns=False) + response = dns.message.make_response(query) + rrset = dns.rrset.from_text(name, + 3600, + dns.rdataclass.IN, + dns.rdatatype.A, + '127.0.0.1') + response.answer.append(rrset) + + conn = self.openTLSConnection(self._tlsServerPort, self._serverName, self._caCert) + + for idx in range(5): + self.sendTCPQueryOverConnection(conn, query, response=response) + (receivedQuery, receivedResponse) = self.recvTCPResponseOverConnection(conn, useQueue=True) + self.assertTrue(receivedQuery) + self.assertTrue(receivedResponse) + receivedQuery.id = query.id + self.assertEquals(query, receivedQuery) + self.assertEquals(response, receivedResponse) + + def testTLSPipelining(self): + """ + TLS: Several queries over the same connection without waiting for the responses + """ + name = 'pipelining.tls.tests.powerdns.com.' + query = dns.message.make_query(name, 'A', 'IN', use_edns=False) + response = dns.message.make_response(query) + rrset = dns.rrset.from_text(name, + 3600, + dns.rdataclass.IN, + dns.rdatatype.A, + '127.0.0.1') + response.answer.append(rrset) + + conn = self.openTLSConnection(self._tlsServerPort, self._serverName, self._caCert) + + for idx in range(100): + self.sendTCPQueryOverConnection(conn, query, response=response) + + for idx in range(100): + (receivedQuery, receivedResponse) = self.recvTCPResponseOverConnection(conn, useQueue=True) + self.assertTrue(receivedQuery) + self.assertTrue(receivedResponse) + receivedQuery.id = query.id + self.assertEquals(query, receivedQuery) + self.assertEquals(response, receivedResponse) -- 2.47.2