class TestResponseRuleERCode(DNSDistTest):
+ _extraStartupSleep = 1
_config_template = """
newServer{address="127.0.0.1:%s"}
addResponseAction(ERCodeRule(DNSRCode.BADVERS), DelayResponseAction(1000))
self.assertNotEqual(response.answer[0].ttl, receivedResponse.answer[0].ttl)
self.assertEqual(receivedResponse.answer[0].ttl, self._lowttl)
+class TestSetReducedTTL(DNSDistTest):
+
+ _percentage = 42
+ _initialTTL = 100
+ _config_params = ['_percentage', '_testServerPort']
+ _config_template = """
+ addResponseAction(AllRule(), SetReducedTTLResponseAction(%d))
+ newServer{address="127.0.0.1:%s"}
+ """
+
+ def testLimitTTL(self):
+ """
+ Responses: Reduce TTL to 42%
+ """
+ name = 'reduced-ttl.responses.tests.powerdns.com.'
+ query = dns.message.make_query(name, 'A', 'IN')
+ response = dns.message.make_response(query)
+ rrset = dns.rrset.from_text(name,
+ self._initialTTL,
+ dns.rdataclass.IN,
+ dns.rdatatype.A,
+ '192.0.2.1')
+ response.answer.append(rrset)
+
+ for method in ("sendUDPQuery", "sendTCPQuery"):
+ sender = getattr(self, method)
+ (receivedQuery, receivedResponse) = sender(query, response)
+ receivedQuery.id = query.id
+ self.assertEqual(query, receivedQuery)
+ self.assertEqual(response, receivedResponse)
+ self.assertNotEqual(response.answer[0].ttl, receivedResponse.answer[0].ttl)
+ self.assertEqual(receivedResponse.answer[0].ttl, self._percentage)
+
class TestResponseLuaActionReturnSyntax(DNSDistTest):
_config_template = """
self.assertEqual(query, receivedQuery)
self.assertEqual(receivedResponse, None)
-from pprint import pprint
-
class TestResponseClearRecordsType(DNSDistTest):
_config_params = ['_testServerPort']
newServer{address="127.0.0.1:%s"}
- addResponseAction("ffi.clear-records-type.responses.tests.powerdns.com.", LuaResponseAction(luafct))
+ addResponseAction("ffi.clear-records-type.responses.tests.powerdns.com.", LuaFFIResponseAction(luafct))
+ addResponseAction("clear-records-type.responses.tests.powerdns.com.", ClearRecordTypesResponseAction(DNSQType.AAAA))
"""
def testClearedFFI(self):
receivedQuery.id = query.id
self.assertEqual(query, receivedQuery)
self.assertEqual(expectedResponse, receivedResponse)
+
+ def testCleared(self):
+ """
+ Responses: Removes records of a given type
+ """
+ name = 'clear-records-type.responses.tests.powerdns.com.'
+ query = dns.message.make_query(name, 'A', 'IN')
+ response = dns.message.make_response(query)
+ expectedResponse = dns.message.make_response(query)
+ rrset = dns.rrset.from_text(name,
+ 3600,
+ dns.rdataclass.IN,
+ dns.rdatatype.A,
+ '192.0.2.1')
+ response.answer.append(rrset)
+ expectedResponse.answer.append(rrset)
+ rrset = dns.rrset.from_text(name,
+ 3660,
+ dns.rdataclass.IN,
+ dns.rdatatype.AAAA,
+ '2001:DB8::1', '2001:DB8::2')
+ response.answer.append(rrset)
+ for method in ("sendUDPQuery", "sendTCPQuery"):
+ sender = getattr(self, method)
+ (receivedQuery, receivedResponse) = sender(query, response)
+ receivedQuery.id = query.id
+ self.assertEqual(query, receivedQuery)
+ self.assertEqual(expectedResponse, receivedResponse)