BIND 10 trac1451, updated. 5e6c9f89116f5710e6c2b88d134e787d069ce51b [1451] apply second patch
BIND 10 source code commits
bind10-changes at lists.isc.org
Mon Dec 19 11:02:24 UTC 2011
The branch, trac1451 has been updated
via 5e6c9f89116f5710e6c2b88d134e787d069ce51b (commit)
via f3559fa1f97da649602b3804bc1fab809a628666 (commit)
from ea85f834c3e36f1ad5b3818a0558e8378eef9c23 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 5e6c9f89116f5710e6c2b88d134e787d069ce51b
Author: Jelte Jansen <jelte at isc.org>
Date: Mon Dec 19 12:02:14 2011 +0100
[1451] apply second patch
commit f3559fa1f97da649602b3804bc1fab809a628666
Author: Jelte Jansen <jelte at isc.org>
Date: Mon Dec 19 11:56:33 2011 +0100
[1451] apply patch one
with a few amendments, see ticket comment
-----------------------------------------------------------------------
Summary of changes:
src/bin/ddns/ddns.py.in | 29 +++++++++++++++++++-------
src/bin/ddns/tests/ddns_test.py | 43 ++++++++++++--------------------------
2 files changed, 35 insertions(+), 37 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/bin/ddns/ddns.py.in b/src/bin/ddns/ddns.py.in
index 3527979..8320ded 100755
--- a/src/bin/ddns/ddns.py.in
+++ b/src/bin/ddns/ddns.py.in
@@ -98,20 +98,32 @@ class DDNSServer:
'''
if cmd == "shutdown":
logger.info(DDNS_RECEIVED_SHUTDOWN_COMMAND)
- self.shutdown()
+ self.trigger_shutdown()
answer = create_answer(0)
else:
answer = create_answer(1, "Unknown command: " + str(cmd))
return answer
- def shutdown(self):
- '''
- Shut down the server. Perform any cleanup that is necessary.
- Currently, this only sets the internal _shutdown value to true,
- so the main loop in run() stops.
+ def trigger_shutdown(self):
+ '''Initiate a shutdown sequence.
+
+ This method is expected to be called in various ways including
+ in the middle of a signal handler, and is designed to be as simple
+ as possible to minimize side effects. Actual shutdown will take
+ place in a normal control flow.
+
'''
- self._shutdown = True
logger.info(DDNS_SHUTDOWN)
+ self._shutdown = True
+
+ def shutdown_cleanup(self):
+ '''
+ Perform any cleanup that is necessary when shutting down the server.
+ Do NOT call this to initialize shutdown, use trigger_shutdown().
+
+ Currently, it does nothing, but cleanup routines are expected.
+ '''
+ pass
def run(self):
'''
@@ -126,6 +138,7 @@ class DDNSServer:
# make such a distinction easily, but once we do, this would
# be the place to catch.
self._cc.check_command(False)
+ self.shutdown_cleanup()
logger.info(DDNS_STOPPED)
def create_signal_handler(ddns_server):
@@ -140,7 +153,7 @@ def create_signal_handler(ddns_server):
here, the actual signal is not checked and the server is simply shut
down.
'''
- ddns_server.shutdown()
+ ddns_server.trigger_shutdown()
return signal_handler
def set_signal_handler(signal_handler):
diff --git a/src/bin/ddns/tests/ddns_test.py b/src/bin/ddns/tests/ddns_test.py
index 0ebfe79..601c281 100755
--- a/src/bin/ddns/tests/ddns_test.py
+++ b/src/bin/ddns/tests/ddns_test.py
@@ -102,46 +102,31 @@ class TestMain(unittest.TestCase):
ddns.main(self._server)
self.assertTrue(self._server.run_called)
- def test_exceptions(self):
- '''
- Test whether exceptions are caught in main()
- These exceptions should not bubble up.
+ def check_exception(self, ex):
+ '''Common test sequence to see if the given exception is caused.
'''
- self._server.set_exception(KeyboardInterrupt())
- self.assertFalse(self._server.exception_raised)
- ddns.main(self._server)
- self.assertTrue(self._server.exception_raised)
-
# Should technically not be necessary, but reset server to be sure
self._server.reset()
self.assertFalse(self._server.exception_raised)
- self._server.set_exception(isc.cc.SessionError("error"))
- ddns.main(self._server)
- self.assertTrue(self._server.exception_raised)
-
- self._server.reset()
- self.assertFalse(self._server.exception_raised)
- self._server.set_exception(isc.config.ModuleCCSessionError("error"))
- ddns.main(self._server)
- self.assertTrue(self._server.exception_raised)
-
- self._server.reset()
- self.assertFalse(self._server.exception_raised)
- self._server.set_exception(ddns.DDNSConfigError("error"))
+ self._server.set_exception(ex)
ddns.main(self._server)
self.assertTrue(self._server.exception_raised)
- self._server.reset()
+ def test_exceptions(self):
+ '''
+ Test whether exceptions are caught in main()
+ These exceptions should not bubble up.
+ '''
+ self._server.set_exception(KeyboardInterrupt())
self.assertFalse(self._server.exception_raised)
- self._server.set_exception(isc.cc.SessionTimeout("error"))
ddns.main(self._server)
self.assertTrue(self._server.exception_raised)
- self._server.reset()
- self.assertFalse(self._server.exception_raised)
- self._server.set_exception(Exception("error"))
- ddns.main(self._server)
- self.assertTrue(self._server.exception_raised)
+ self.check_exception(isc.cc.SessionError("error"))
+ self.check_exception(isc.config.ModuleCCSessionError("error"))
+ self.check_exception(ddns.DDNSConfigError("error"))
+ self.check_exception(isc.cc.SessionTimeout("error"))
+ self.check_exception(Exception("error"))
# Add one that is not a subclass of Exception, and hence not
# caught. Misuse BaseException for that.
More information about the bind10-changes
mailing list