def test_limit_notify_middleware_no_acquire(self, acquire): # Set the delay self.config(notify_delay=.1, group='service:agent') # Initialize the middlware placeholder_app = None middleware = dnsutils.LimitNotifyMiddleware(placeholder_app) # Prepare a NOTIFY zone_name = 'example.com.' notify = dns.message.make_query(zone_name, dns.rdatatype.SOA) notify.flags = 0 notify.set_opcode(dns.opcode.NOTIFY) notify.flags |= dns.flags.AA # Make a response object to match the middleware's return response = dns.message.make_response(notify) # Provide an authoritative answer response.flags |= dns.flags.AA # Send the NOTIFY through the middleware # Lock can't be acquired, a NOTIFY is already being worked on # so just return what would have come back for a successful NOTIFY # This needs to be a one item tuple for the serialization middleware self.assertEqual(middleware.process_request(notify), (response, ))
def dns_application(self): # Create an instance of the RequestHandler class application = handler.RequestHandler() if cfg.CONF['service:agent'].notify_delay > 0.0: application = dnsutils.LimitNotifyMiddleware(application) application = dnsutils.SerializationMiddleware(application) return application
def test_limit_notify_middleware(self): self.CONF.set_override('notify_delay', 0.1, 'service:agent') # Initialize the middlware placeholder_app = None middleware = dnsutils.LimitNotifyMiddleware(placeholder_app) # Prepare a NOTIFY zone_name = 'example.com.' notify = dns.message.make_query(zone_name, dns.rdatatype.SOA) notify.flags = 0 notify.set_opcode(dns.opcode.NOTIFY) notify.flags |= dns.flags.AA # Send the NOTIFY through the middleware # No problem, middleware should return None to pass it on self.assertIsNone(middleware.process_request(notify))