]>
git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.dnsdist/test_TLS.py
3 from dnsdisttests
import DNSDistTest
5 class TestTLS(DNSDistTest
):
7 _serverKey
= 'server.key'
8 _serverCert
= 'server.chain'
9 _serverName
= 'tls.tests.dnsdist.org'
12 _config_template
= """
13 newServer{address="127.0.0.1:%s"}
14 addTLSLocal("127.0.0.1:%s", "%s", "%s")
16 _config_params
= ['_testServerPort', '_tlsServerPort', '_serverCert', '_serverKey']
18 def testTLSSimple(self
):
22 name
= 'single.tls.tests.powerdns.com.'
23 query
= dns
.message
.make_query(name
, 'A', 'IN', use_edns
=False)
24 response
= dns
.message
.make_response(query
)
25 rrset
= dns
.rrset
.from_text(name
,
30 response
.answer
.append(rrset
)
32 conn
= self
.openTLSConnection(self
._tlsServerPort
, self
._serverName
, self
._caCert
)
34 self
.sendTCPQueryOverConnection(conn
, query
, response
=response
)
35 (receivedQuery
, receivedResponse
) = self
.recvTCPResponseOverConnection(conn
, useQueue
=True)
36 self
.assertTrue(receivedQuery
)
37 self
.assertTrue(receivedResponse
)
38 receivedQuery
.id = query
.id
39 self
.assertEquals(query
, receivedQuery
)
40 self
.assertEquals(response
, receivedResponse
)
44 TLS: Several queries over the same connection
46 name
= 'ka.tls.tests.powerdns.com.'
47 query
= dns
.message
.make_query(name
, 'A', 'IN', use_edns
=False)
48 response
= dns
.message
.make_response(query
)
49 rrset
= dns
.rrset
.from_text(name
,
54 response
.answer
.append(rrset
)
56 conn
= self
.openTLSConnection(self
._tlsServerPort
, self
._serverName
, self
._caCert
)
59 self
.sendTCPQueryOverConnection(conn
, query
, response
=response
)
60 (receivedQuery
, receivedResponse
) = self
.recvTCPResponseOverConnection(conn
, useQueue
=True)
61 self
.assertTrue(receivedQuery
)
62 self
.assertTrue(receivedResponse
)
63 receivedQuery
.id = query
.id
64 self
.assertEquals(query
, receivedQuery
)
65 self
.assertEquals(response
, receivedResponse
)
67 def testTLSPipelining(self
):
69 TLS: Several queries over the same connection without waiting for the responses
71 name
= 'pipelining.tls.tests.powerdns.com.'
72 query
= dns
.message
.make_query(name
, 'A', 'IN', use_edns
=False)
73 response
= dns
.message
.make_response(query
)
74 rrset
= dns
.rrset
.from_text(name
,
79 response
.answer
.append(rrset
)
81 conn
= self
.openTLSConnection(self
._tlsServerPort
, self
._serverName
, self
._caCert
)
83 for idx
in range(100):
84 self
.sendTCPQueryOverConnection(conn
, query
, response
=response
)
86 for idx
in range(100):
87 (receivedQuery
, receivedResponse
) = self
.recvTCPResponseOverConnection(conn
, useQueue
=True)
88 self
.assertTrue(receivedQuery
)
89 self
.assertTrue(receivedResponse
)
90 receivedQuery
.id = query
.id
91 self
.assertEquals(query
, receivedQuery
)
92 self
.assertEquals(response
, receivedResponse
)