add daemon method to DynamicResolver

Keeps main process up indefinitely as long as DynamicResolver UDP
socketserver is up
master
Justin Riley 2016-08-02 13:21:42 -04:00
parent 12a2a46f14
commit c1a6d81157
2 changed files with 16 additions and 0 deletions

View File

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from __future__ import print_function
import time
import dnslib
from dnslib import server
@ -100,3 +101,12 @@ class DynamicResolver(server.BaseResolver):
if srv:
srv.stop()
srv.server.socket.close()
def daemon(self, *args, **kwargs):
testing = kwargs.pop('testing', False)
if self._udp_server is None or not self._udp_server.isAlive():
self.start(*args, **kwargs)
while self._udp_server.isAlive():
time.sleep(1)
if testing:
break

View File

@ -49,3 +49,9 @@ def test_get_fqdn(dns, name, ip):
dns.add_host(name, ip)
assert dns.zone[0][0].label[0] == name.split('.')[0]
assert '.'.join(dns.zone[0][0].label[1:]) == conftest.DOMAIN
def test_daemon(dns):
dns.close()
dns.daemon(dns_address=conftest.INTERFACE, dns_port=conftest.PORT,
tcp=True, testing=True)