BIND 10 trac640, updated. f45a95082d8db85dff8d7b0bf0e0817e7175103e [640] rename stop()
BIND 10 source code commits
bind10-changes at lists.isc.org
Thu Feb 2 13:45:41 UTC 2012
The branch, trac640 has been updated
via f45a95082d8db85dff8d7b0bf0e0817e7175103e (commit)
from 2c40ed8bbbab2e095be163a6f144eb45be465f80 (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 f45a95082d8db85dff8d7b0bf0e0817e7175103e
Author: Jelte Jansen <jelte at isc.org>
Date: Thu Feb 2 14:45:31 2012 +0100
[640] rename stop()
-----------------------------------------------------------------------
Summary of changes:
src/bin/bind10/bind10_src.py.in | 2 +-
src/bin/cmdctl/cmdctl.py.in | 2 +-
src/bin/ddns/ddns.py.in | 2 +-
src/bin/ddns/tests/ddns_test.py | 2 +-
src/bin/stats/stats.py.in | 2 +-
src/bin/stats/stats_httpd.py.in | 2 +-
src/bin/xfrin/tests/xfrin_test.py | 13 ++-----
src/bin/xfrin/xfrin.py.in | 2 +-
src/bin/xfrout/xfrout.py.in | 2 +-
src/bin/zonemgr/tests/zonemgr_test.py | 10 +++++-
src/bin/zonemgr/zonemgr.py.in | 7 +++-
src/lib/python/isc/config/ccsession.py | 35 ++++++++------------
src/lib/python/isc/config/tests/ccsession_test.py | 2 +-
src/lib/python/isc/testutils/ccsession_mock.py | 2 +-
14 files changed, 42 insertions(+), 43 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/bin/bind10/bind10_src.py.in b/src/bin/bind10/bind10_src.py.in
index 5c7dc93..805275a 100755
--- a/src/bin/bind10/bind10_src.py.in
+++ b/src/bin/bind10/bind10_src.py.in
@@ -684,7 +684,7 @@ class BoB:
# really necessary, but this is done to reflect that boss is also
# 'just' a module.
if self.ccs is not None:
- self.ccs.stop()
+ self.ccs.send_stopping()
# try using the BIND 10 request to stop
try:
diff --git a/src/bin/cmdctl/cmdctl.py.in b/src/bin/cmdctl/cmdctl.py.in
index ca3e1ea..0628f1f 100755
--- a/src/bin/cmdctl/cmdctl.py.in
+++ b/src/bin/cmdctl/cmdctl.py.in
@@ -319,7 +319,7 @@ class CommandControl():
elif command == ccsession.COMMAND_SHUTDOWN:
#When cmdctl get 'shutdown' command from boss,
#shutdown the outer httpserver.
- self._module_cc.stop()
+ self._module_cc.send_stopping()
self._httpserver.shutdown()
self._serving = False
diff --git a/src/bin/ddns/ddns.py.in b/src/bin/ddns/ddns.py.in
index f13c1bb..22e4e9c 100755
--- a/src/bin/ddns/ddns.py.in
+++ b/src/bin/ddns/ddns.py.in
@@ -153,7 +153,7 @@ class DDNSServer:
Currently, it only causes the ModuleCCSession to send a message that
this module is stopping.
'''
- self._cc.stop()
+ self._cc.send_stopping()
def accept(self):
"""
diff --git a/src/bin/ddns/tests/ddns_test.py b/src/bin/ddns/tests/ddns_test.py
index e63ef34..395aacc 100755
--- a/src/bin/ddns/tests/ddns_test.py
+++ b/src/bin/ddns/tests/ddns_test.py
@@ -64,7 +64,7 @@ class MyCCSession(isc.config.ConfigData):
'''Called by DDNSServer initialization, but not used in tests'''
self._started = True
- def stop(self):
+ def send_stopping(self):
'''Called by shutdown code'''
self._stopped = True
diff --git a/src/bin/stats/stats.py.in b/src/bin/stats/stats.py.in
index a3612a2..537cf49 100755
--- a/src/bin/stats/stats.py.in
+++ b/src/bin/stats/stats.py.in
@@ -188,7 +188,7 @@ class Stats:
while self.running:
self.mccs.check_command(False)
finally:
- self.mccs.stop()
+ self.mccs.send_stopping()
def config_handler(self, new_config):
"""
diff --git a/src/bin/stats/stats_httpd.py.in b/src/bin/stats/stats_httpd.py.in
index 5afb4fb..c9bd0f5 100644
--- a/src/bin/stats/stats_httpd.py.in
+++ b/src/bin/stats/stats_httpd.py.in
@@ -203,7 +203,7 @@ class StatsHttpd:
"""Closes a ModuleCCSession object"""
if self.mccs is None:
return
- self.mccs.stop()
+ self.mccs.send_stopping()
logger.debug(DBG_STATHTTPD_INIT, STATHTTPD_CLOSING_CC_SESSION)
self.mccs.close()
diff --git a/src/bin/xfrin/tests/xfrin_test.py b/src/bin/xfrin/tests/xfrin_test.py
index 99e0522..89e4d96 100644
--- a/src/bin/xfrin/tests/xfrin_test.py
+++ b/src/bin/xfrin/tests/xfrin_test.py
@@ -20,6 +20,7 @@ import socket
import sys
import io
from isc.testutils.tsigctx_mock import MockTSIGContext
+from isc.testutils.ccsession_mock import MockModuleCCSession
from isc.testutils.rrset_utils import *
from xfrin import *
import xfrin
@@ -105,10 +106,7 @@ class XfrinTestException(Exception):
class XfrinTestTimeoutException(Exception):
pass
-class MockCC():
- def __init__(self):
- self.stop_called = False
-
+class MockCC(MockModuleCCSession):
def get_default_value(self, identifier):
# The returned values should be identical to the spec file
# XXX: these should be retrieved from the spec file
@@ -120,9 +118,6 @@ class MockCC():
if identifier == "zones/use_ixfr":
return False
- def stop(self):
- self.stop_called = True
-
class MockDataSourceClient():
'''A simple mock data source client.
@@ -2058,9 +2053,9 @@ class TestXfrin(unittest.TestCase):
self.args['tsig_key'] = ''
def tearDown(self):
- self.assertFalse(self.xfr._module_cc.stop_called);
+ self.assertFalse(self.xfr._module_cc.stopped);
self.xfr.shutdown()
- self.assertTrue(self.xfr._module_cc.stop_called);
+ self.assertTrue(self.xfr._module_cc.stopped);
sys.stderr= self.stderr_backup
def _do_parse_zone_name_class(self):
diff --git a/src/bin/xfrin/xfrin.py.in b/src/bin/xfrin/xfrin.py.in
index 0cd63c0..b59c2b6 100755
--- a/src/bin/xfrin/xfrin.py.in
+++ b/src/bin/xfrin/xfrin.py.in
@@ -1224,7 +1224,7 @@ class Xfrin:
''' shutdown the xfrin process. the thread which is doing xfrin should be
terminated.
'''
- self._module_cc.stop()
+ self._module_cc.send_stopping()
self._shutdown_event.set()
main_thread = threading.currentThread()
for th in threading.enumerate():
diff --git a/src/bin/xfrout/xfrout.py.in b/src/bin/xfrout/xfrout.py.in
index eb124c9..1540e6b 100755
--- a/src/bin/xfrout/xfrout.py.in
+++ b/src/bin/xfrout/xfrout.py.in
@@ -969,7 +969,7 @@ class XfroutServer:
global xfrout_server
xfrout_server = None #Avoid shutdown is called twice
- self._cc.stop()
+ self._cc.send_stopping()
self._shutdown_event.set()
self._notifier.shutdown()
if self._unix_socket_server:
diff --git a/src/bin/zonemgr/tests/zonemgr_test.py b/src/bin/zonemgr/tests/zonemgr_test.py
index 600453d..29924c8 100644
--- a/src/bin/zonemgr/tests/zonemgr_test.py
+++ b/src/bin/zonemgr/tests/zonemgr_test.py
@@ -20,6 +20,7 @@ import unittest
import os
import tempfile
from zonemgr import *
+from isc.testutils.ccsession_mock import MockModuleCCSession
ZONE_NAME_CLASS1_IN = ("example.net.", "IN")
ZONE_NAME_CLASS1_CH = ("example.net.", "CH")
@@ -48,10 +49,11 @@ class MySession():
def group_recvmsg(self, nonblock, seq):
return None, None
-class FakeCCSession(isc.config.ConfigData):
+class FakeCCSession(isc.config.ConfigData, MockModuleCCSession):
def __init__(self):
module_spec = isc.config.module_spec_from_file(SPECFILE_LOCATION)
ConfigData.__init__(self, module_spec)
+ MockModuleCCSession.__init__(self)
def get_remote_config_value(self, module_name, identifier):
if module_name == "Auth" and identifier == "database_file":
@@ -683,6 +685,12 @@ class TestZonemgr(unittest.TestCase):
self.zonemgr._config_data_check(config_data3)
self.assertEqual(0.5, config_data3.get("refresh_jitter"))
+ def test_shutdown(self):
+ self.assertFalse(self.zonemgr._module_cc.stopped)
+ self.zonemgr._shutdown_event.set()
+ self.zonemgr.run()
+ self.assertTrue(self.zonemgr._module_cc.stopped)
+
def tearDown(self):
pass
diff --git a/src/bin/zonemgr/zonemgr.py.in b/src/bin/zonemgr/zonemgr.py.in
index 4060bb5..7b16f1b 100755
--- a/src/bin/zonemgr/zonemgr.py.in
+++ b/src/bin/zonemgr/zonemgr.py.in
@@ -658,8 +658,11 @@ class Zonemgr:
def run(self):
self.running = True
- while not self._shutdown_event.is_set():
- self._module_cc.check_command(False)
+ try:
+ while not self._shutdown_event.is_set():
+ self._module_cc.check_command(False)
+ finally:
+ self._module_cc.send_stopping()
zonemgrd = None
diff --git a/src/lib/python/isc/config/ccsession.py b/src/lib/python/isc/config/ccsession.py
index 10ebc1c..476ba1e 100644
--- a/src/lib/python/isc/config/ccsession.py
+++ b/src/lib/python/isc/config/ccsession.py
@@ -211,12 +211,20 @@ class ModuleCCSession(ConfigData):
self.__send_spec()
self.__request_config()
- def stop(self):
- """Inform the system that the module using this ModuleCCSession
- is stopping. This call will only cause a 'stopping'
- message to be sent to the ConfigManager, it does not clear or
- free any resources."""
- self.__send_stopping()
+ def send_stopping(self):
+ """Sends a 'stopping' message to the configuration manager. This
+ message is just an FYI, and no response is expected. Any errors
+ when sending this message (for instance if the msgq session has
+ previously been closed) are logged, but ignored."""
+ msg = create_command(COMMAND_MODULE_STOPPING,
+ self.get_module_spec().get_full_spec())
+ try:
+ self._session.group_sendmsg(msg, "ConfigManager")
+ except isc.cc.session.SessionError as se:
+ # If the session was previously closed, obvously trying to send
+ # a message fails. (TODO: check if session is open so we can
+ # error on real problems?)
+ logger.error(CONFIG_SESSION_STOPPING_FAILED, str(se))
def get_socket(self):
"""Returns the socket from the command channel session. This
@@ -380,21 +388,6 @@ class ModuleCCSession(ConfigData):
# TODO: log an error?
pass
- def __send_stopping(self):
- """Sends a 'stopping' message to the configuration manager. This
- message is just an FYI, and no response is expected. Any errors
- when sending this message (for instance if the msgq session has
- previously been closed) are logged, but ignored."""
- msg = create_command(COMMAND_MODULE_STOPPING,
- self.get_module_spec().get_full_spec())
- try:
- self._session.group_sendmsg(msg, "ConfigManager")
- except isc.cc.session.SessionError as se:
- # If the session was previously closed, obvously trying to send
- # a message fails. (TODO: check if session is open so we can
- # error on real problems?)
- logger.error(CONFIG_SESSION_STOPPING_FAILED, str(se))
-
def __request_config(self):
"""Asks the configuration manager for the current configuration, and call the config handler if set.
Raises a ModuleCCSessionError if there is no answer from the configuration manager"""
diff --git a/src/lib/python/isc/config/tests/ccsession_test.py b/src/lib/python/isc/config/tests/ccsession_test.py
index 081d3e9..df39550 100644
--- a/src/lib/python/isc/config/tests/ccsession_test.py
+++ b/src/lib/python/isc/config/tests/ccsession_test.py
@@ -257,7 +257,7 @@ class TestModuleCCSession(unittest.TestCase):
self.assertTrue("Spec1" in fake_session.subscriptions)
self.assertEqual(len(fake_session.message_queue), 0)
- mccs.stop()
+ mccs.send_stopping()
self.assertEqual(len(fake_session.message_queue), 1)
self.assertEqual({'command': ['stopping', {'module_name': 'Spec1'}]},
fake_session.get_message('ConfigManager', None))
diff --git a/src/lib/python/isc/testutils/ccsession_mock.py b/src/lib/python/isc/testutils/ccsession_mock.py
index c974be9..cc6020b 100644
--- a/src/lib/python/isc/testutils/ccsession_mock.py
+++ b/src/lib/python/isc/testutils/ccsession_mock.py
@@ -19,7 +19,7 @@ class MockModuleCCSession():
self.stopped = False
self.closed = False
- def stop(self):
+ def send_stopping(self):
self.stopped = True
def close(self):
More information about the bind10-changes
mailing list