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