]>
git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.dnsdist/test_Lua.py
7 from dnsdisttests
import DNSDistTest
9 class TestLuaThread(DNSDistTest
):
10 _consoleKey
= DNSDistTest
.generateConsoleKey()
11 _consoleKeyB64
= base64
.b64encode(_consoleKey
).decode('ascii')
13 _config_params
= ['_consoleKeyB64', '_consolePort']
14 _config_template
= """
16 controlSocket("127.0.0.1:%s")
19 function threadmessage(cmd, data)
20 print("counter says", cmd, data.i)
21 counter = tonumber(data.i)
25 local socket = require'socket'
30 submitToMainThread("setCounter", {i=i})
36 def testLuaThreadCounter(self
):
38 LuaThread: Test the lua newThread interface
40 count1
= self
.sendConsoleCommand('counter')
42 count2
= self
.sendConsoleCommand('counter')
43 self
.assertTrue(count2
> count1
)
45 class TestLuaDNSHeaderBindings(DNSDistTest
):
46 _config_template
= """
47 newServer{address="127.0.0.1:%s"}
49 function checkTCSet(dq)
50 local tc = dq.dh:getTC()
52 return DNSAction.Spoof, 'tc-not-set.check-tc.lua-dnsheaders.tests.powerdns.com.'
54 return DNSAction.Allow
57 addAction('check-tc.lua-dnsheaders.tests.powerdns.com.', LuaAction(checkTCSet))
60 def testLuaGetTC(self
):
64 name
= 'notset.check-tc.lua-dnsheaders.tests.powerdns.com.'
65 query
= dns
.message
.make_query(name
, 'A', 'IN')
66 # dnsdist set RA = RD for spoofed responses
67 query
.flags
&= ~dns
.flags
.RD
68 response
= dns
.message
.make_response(query
)
69 rrset
= dns
.rrset
.from_text(name
,
73 'tc-not-set.check-tc.lua-dnsheaders.tests.powerdns.com.')
74 response
.answer
.append(rrset
)
75 for method
in ("sendUDPQuery", "sendTCPQuery"):
76 sender
= getattr(self
, method
)
77 (_
, receivedResponse
) = sender(query
, response
=None, useQueue
=False)
78 self
.assertEqual(response
, receivedResponse
)
80 name
= 'set.check-tc.lua-dnsheaders.tests.powerdns.com.'
81 query
= dns
.message
.make_query(name
, 'A', 'IN')
82 response
= dns
.message
.make_response(query
)
83 rrset
= dns
.rrset
.from_text(name
,
88 response
.answer
.append(rrset
)
89 query
.flags |
= dns
.flags
.TC
90 for method
in ("sendUDPQuery", "sendTCPQuery"):
91 sender
= getattr(self
, method
)
92 (receivedQuery
, receivedResponse
) = sender(query
, response
)
93 receivedQuery
.id = query
.id
94 self
.assertEqual(query
, receivedQuery
)
95 self
.assertEqual(response
, receivedResponse
)